本について
Amazon: https://www.amazon.co.jp/dp/4822284654
以前「オブジェクト指向でなぜつくるのか-第2版-」の第5章に書かれているオブジェクト指向プログラミングにおけるメモリの使われ方をまとめました。そのときにまとめきれなかったことを補足としてまとめます。
プログラムの基本的な実行方式
コンパイラ方式
プログラムを機械語に一括変換してから実行する方式
長所: コンピュータが機械語を直接読むため実行効率が良い
短所: コードを修正するたびにコンパイルしなければならない(手間がかかる)
###インタプリタ方式
プログラムを逐次解釈しながら実行する方式
長所: 書いたプログラムをすぐに実行して確認できる、プラットフォームに関係なく実行できる
短所: 逐次解釈しながら実行するので、実行効率が悪い
###中間コード方式
プログラムを特定の機械語に依存しない中間コードにコンパイル後、仮想マシンで解釈しながら実行する方式
長所: 異なるマシンに同じプログラムを配布できる上、コンパイラにより実行効率も上がる
例: Java, .NETなど
ここでいう 仮想マシン とは、中間コードを機械語に変換する仕組みを示し、 Java の場合は Java VM
という仕組みがこれに相当します。
クラスやポリモーフィズム、継承がコードレベルでの大規模な再利用を実現しましたが、仮想マシンはソフトウェア部品を様々なプラットフォームで再利用できるようにしました。
マルチスレッド
ここで説明する スレッド とは、「プログラムの実行単位」を意味しています。
プログラムの実行単位にも種類があり、メーラーやWebブラウザといったパソコン上で独立して動くアプリケーションは プロセス と表現されます。 スレッド とは、メールの送受信やWebブラウザのリクエスト処理といった、プロセスよりも小さな実行単位のことを指します。
パソコンを操作すると、複数のスレッドが同時進行しているように見えますが(Webブラウザでページを描画しながら、メールの送受信を行うなど)、CPUが一時点で実行できる処理はひとつだけです。
なぜ複数のスレッドが同時進行で実行されているように見えるかというと、複数のスレッドを非常に少ない時間で少しずつ順繰りに実行しているからです。
このようにスレッドを複数同時に実行できる環境を マルチスレッド環境 といいます。