CS1102 Unit1 Introduction to Programming #
久々の更新。今週から CS1102 の授業が開始です。
教材は https://math.hws.edu/javanotes/{:target="_blank"} ここでダウンロードできます。Epub があるのは嬉しい。
今期は CS1102 しか授業がないから余裕を持って授業を受けることができそうで嬉しいです。
とはいえ初回授業のテキスト範囲が 180 ページくらいあって読むのが結構しんどかったけど、この 5 ヶ月間英語で授業受けてきたおかげでなんとか読み切って課題提出できました。
ようやく CPU・メモリなどを教材で見かけるようになって computer science 感が出てきました。
今週の収穫は以下の 2 つです。
- Java の実行方法
- 新しいプログラミング言語を学ぶときの 3 つのポイント
Java の実行方法 #
今まで Java はデザインパターンの本を読んだときにちょこっとサンプルコードを触ったくらいでほとんど知識がありませんでした。
そんな初心者の私ですが、Java ソースコードが機械語になるまでのプロセスをざっくりと学びました。
Java はコンパイル&インタープリタの両方を使うそうです。
Java ソースコード → Java bytecode のようにコンパイルされ、 Java bytecode は JVM という仮想 PC(インタープリタ的なものを含む?)を使って機械語に翻訳されるそうです。
なぜこんなことをするのかなと思いましたが、どうやら以下の理由・メリットがあるそうです。
- インタープリタは複雑なプログラムなので、各プラットフォームに対して作るのが大変だが、JVM は比較的小さいプログラムなので、各プラットフォームで動く JVM を作るのが楽
- Java bytecode を配布すればどんなプラットフォームでも JVM 上で動かせる。実行可能ファイルを配布するよりセキュリティ的に安全だそう。
- 教科書曰く Scala などの他の言語も Java bytecode にコンパイルされるそうなので、JVM のおかげで言語を開発する人は Java bytecode にさえコンパイルできればよい?ので工数を削減できそう(感想)
よく考えてあるな〜って感じですね。
新しいプログラミング言語を学ぶときの 3 つのポイント #
新しくプログラミング言語を勉強するときは以下の 3 つを抑える必要があるそうです。
- syntax
- いわゆる文法
- これは言うまでもなく勉強しないといけない
- semantics
- 意図したとおりにプログラムが動くこと
- これも当たり前ですね
- pragmatics
- 人間が理解しやすいコードを書くこと
- 言語ごとに慣習があるので、それに従うと他の人も読みやすい
- 言語ごとの特徴を抑えて、その利点を利用して書くこと
pragmatics はある程度その言語に慣れてからでいいかなと思っていましたが、確かにプログラミング言語を勉強を始める際に勉強すべきだと思いました。
いい GPA を取るのにテキストをちゃんと読む必要はないと思いますが、私は CS の知識が乏しいので、できるだけ教科書を読み込んでいこうと思います。