Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@tamago3keran

オブジェクト指向でなぜつくるのか 第5章 ~補足~

本について

image.png

Amazon: https://www.amazon.co.jp/dp/4822284654

以前「オブジェクト指向でなぜつくるのか-第2版-」の第5章に書かれているオブジェクト指向プログラミングにおけるメモリの使われ方をまとめました。そのときにまとめきれなかったことを補足としてまとめます。

記事: オブジェクト指向でなぜつくるのか 第5章

プログラムの基本的な実行方式

コンパイラ方式

プログラムを機械語に一括変換してから実行する方式

oop-コンパイル式.png

長所: コンピュータが機械語を直接読むため実行効率が良い
短所: コードを修正するたびにコンパイルしなければならない(手間がかかる)

インタプリタ方式

プログラムを逐次解釈しながら実行する方式

oop-インタプリタ式.png

長所: 書いたプログラムをすぐに実行して確認できる、プラットフォームに関係なく実行できる
短所: 逐次解釈しながら実行するので、実行効率が悪い

中間コード方式

プログラムを特定の機械語に依存しない中間コードにコンパイル後、仮想マシンで解釈しながら実行する方式

oop-中間コード方式.png

長所: 異なるマシンに同じプログラムを配布できる上、コンパイラにより実行効率も上がる
: Java, .NETなど

ここでいう 仮想マシン とは、中間コードを機械語に変換する仕組みを示し、 Java の場合は Java VM という仕組みがこれに相当します。

クラスやポリモーフィズム、継承がコードレベルでの大規模な再利用を実現しましたが、仮想マシンはソフトウェア部品を様々なプラットフォームで再利用できるようにしました。

マルチスレッド

ここで説明する スレッド とは、「プログラムの実行単位」を意味しています。

プログラムの実行単位にも種類があり、メーラーやWebブラウザといったパソコン上で独立して動くアプリケーションは プロセス と表現されます。 スレッド とは、メールの送受信やWebブラウザのリクエスト処理といった、プロセスよりも小さな実行単位のことを指します。

oop-スレッドとプロセス.png

パソコンを操作すると、複数のスレッドが同時進行しているように見えますが(Webブラウザでページを描画しながら、メールの送受信を行うなど)、CPUが一時点で実行できる処理はひとつだけです。

なぜ複数のスレッドが同時進行で実行されているように見えるかというと、複数のスレッドを非常に少ない時間で少しずつ順繰りに実行しているからです。

このようにスレッドを複数同時に実行できる環境を マルチスレッド環境 といいます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?