![]() |
アクセス数(2003.05〜) 本日:26 昨日:86 累計:109695 |
|||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||
| ホーム > パソコン道場 > 上級編 > 1.プログラミングを始めるにあたって > 1−4.プログラムの実行形式 | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 1−4.プログラムの実行形式 | ||||||||||||||||||||||||||
|
プログラムは、人間が記述したソフトウェアの設計図にあたるソースコードが、コンピュータ上で実行可能なオブジェクトコードという形式に変換され実行されます。
プログラミング言語の種類は多数ありますが、それらのプログラミング言語は文法が異なるだけであって、ソースコードは人間が目で見て理解できるものです(でないと、人間がプログラミングすることができなくなってしまいます)。 多くのソースコードは、英単語のステートメント(命令)が使われているので、中学や高校で習う程度の英単語の意味を知っていれば、そのステートメントが何をやっているかおおよその見当がつきます。 プログラムの実行形式の話をするとき、そのプログラムのソースコードがどうやってオブジェクトコードに変換されるのかを知っていなければなりません。 そこで、まずプログラムのソースコードがオブジェクトコードに変換される方式を見てみましょう。 プログラムのソースコードをオブジェクトコードに変換する方式は、一括して行う方式と、実行時にそのつど行う方式に大別することができます。 プログラムのソースコードをオブジェクトコードに一括して変換する方式の言語をコンパイル型言語、実行時にそのつど行う方式の言語をインタープリタ型言語と呼んでいます。 そして、インタープリタ型言語の中に、スクリプト言語が含まれます。 これらの関係を、「1−1.押さえておきたいプログラミング言語」で取り上げたプログラミング言語に当てはめると次のようになります。
このように、C++はコンパイル型言語、JavaScriptとVBScriptはスクリプト言語、 それでは、コンパイル型言語とインタープリタ型言語について見てみましょう。 ■コンパイル型言語(Compile Language) ■インタープリタ型言語(Interpreter Language) ■スクリプト言語(Script Language) このように、プログラムのソースコードがオブジェクトコードに変換される方式を分類すると、コンパイル型言語、インタープリタ型言語、スクリプト言語に分類することができます(厳密にいえばスクリプト言語はインタープリタ型言語の一種ということになりますが、スクリプトという用語自体が有名になったため、スクリプト言語もプログラミング言語のひとつとして扱われるようになってきました)。 続いて、本題であるプログラムの実行形式を見てみましょう。 プログラムの実行形式は、今まで見てきたプログラムのソースコードがオブジェクトコードに変換される方式に依存しています。 インタープリタ型言語とスクリプト言語は、実行時にソースコードが自動的にオブジェクトコードに変換されるため、オブジェクトコードはファイルとしては生成されません。 それに対し、コンパイル型言語は、ソースコードはオブジェクトコードのファイルとして生成されます。 つまり、実行可能なオブジェクトコードがファイルとして生成されるのは、コンパイル型言語ということになります。 Windowsの場合、実行するプログラムのオブジェクトコードの多くはEXE(エグゼ)形式になっています(EXE形式のプログラムは、ファイルの拡張子が「.EXE」になっているため、EXEファイルとも呼ばれています)。 このEXE形式は、MS-DOSやWindows環境において、EXEモデルでプログラミングされた実行ファイルを格納しておくためのファイル形式です。 それに対し、MS-DOS環境ではCOM(コム)モデルでプログラミングされた実行ファイルを格納しておくためのCOM形式というファイル形式が存在します(COM形式のプログラムは、ファイルの拡張子が「.COM」になっているため、COMファイルとも呼ばれています)。 EXEモデルとCOMモデルを比較すると次のようになります。 ■EXEモデル ■COMモデル また、Windowsにおいては、複数のプログラムが共通して利用する汎用性の高いサブプログラムを部品化してファイルに保存するDLL(Dynamic Link Library、ディー エル エル)という方式がとられています(DLLは、ファイルの拡張子が「.DLL」になっているため、DLLファイルとも呼ばれています)。 この方式では、サブプログラム(DLL)は必要に応じて呼び出されるため、メモリを効率的に利用することができます(サブプログラムがメーンとなるプログラムの中に格納されていないため、その分、HDDの容量を節約することができます)。 DLLは自分で作成することもできますが、Microsftなどからも多数のDLLが提供されています(基本的なプログラムであれば、Microsftから提供されているDLLが持つ機能を呼び出すだけで作成することができるようになっています)。 そのため、すでにDLLとして提供されている機能は新規に開発せずにすむので、プログラムの開発効率が飛躍的に向上しました。 このように、たいへん便利なDLLですが、使用する際にはちょっとした注意が必要になりま DLLは、Windows側に標準で用意されているものと、使用するコンピュータ言語側で用意されているものとが存在しています。 Windows側に標準で用意されているDLLは何も心配はないのですが、使用するコンピュータ言語側で用意されているDLLは、そのコンピュータ言語の開発環境がインストールされていなければ利用することができません。 しかし、特定のプログラムを実行するためだけにコンピュータ言語の開発環境をインストールしていては、HDDの容量が無駄になってしまいます。 そのため、特定のコンピュータ言語で作成されたプログラムの実行だけを目的としたランタイム(Run Time)というものが提供されるようになりました。 ランタイムはランタイムライブラリとも呼ばれ、そのコンピュータ言語の開発環境からプログラムの実行に必要なDLLなどを抽出したもので、通常は無償で提供されています(よく、フリーソフトなどの説明に、「このソフトを実行するためには○○のランタイムがインストールされている必要があります。」と記載されているのはこのことです)。 ランタイムは、プログラムを実行(Run)した時(Time)という意味を表しています。 そのため、ランタイムを使用するプログラムがエラーを起こすと、実行時に「ランタイムエラー(Run Time Error)」が発生します。 なお、コンパイル型言語の場合は、コンパイラがプログラムのソースコードをオブジェクトコードに変換する前に文法をチェックするため、記述したソースコードに文法の誤りがあれば、コンパイル時に「コンパルエラー(Compile Error)」が発生します(インタープリタ型言語にはコンパイル作業がないため、基本的にすべてのエラーが「ランタイムエラー」になります)。 もちろん、Windows自信もプログラムであり、さまざまなDLLを内部的に呼び出しているた このように、現在のWindowsにおけるプログラム開発には、DLLが重要な役割を果たしています(現在のWindowsにおけるプログラムの実行形式は、EXE形式とDLLが中心になっていま 今まで見てきたプログラムの実行形式をまとめると次のようになります。
Windowsにおけるプログラムの実行形式は、EXE形式、DLL、ランタイムの関係を最初のうちにしっかりと把握しておきましょう。 |
||||||||||||||||||||||||||
|
Copyright © 2003-2005.
Hiroshi Suzuki All Rights Reserved. |
||||||||||||||||||||||||||