プログラム

プログラム(program)とは、コンピュータに命令する処理やその手順を記述したデータのことを言う。

プログラムは本来なら計画やスケジュール、予定などのことである。パソコンが普及する以前は、何らかの催しの予定表やテレビ、ラジオなどの番組表のことを指すことが多かった。

しかし、パソコンが普及すると一転して、プログラムといえば、ソースコードで記述されたものを意味するようになって行った経緯がある。ソースコードとは、プログラミング言語で記述された文字列のことである。

プログラムは、左から右へ、上から下に向かって書かれるものであり、コンピュータもこの順番で読み込んでいく。中には関数やクラス、ルーチンといったものもあるが、これらは特定の機能をひとまとめにして、必要な時に必要なだけ呼び出して使うプログラム群のこと。同じコードを何度も書いてファイル容量を膨らませるような無駄を省き、見た目にも分かりやすいスッキリとしたコードになる点がメリットとなる。オーバーヘッドを省くことにもつながる。

プログラムは基本的に、変数と定数、演算子、制御文、関数などを組み合わせて作られていく。定数はあらかじめ定めた値であり、変数はプログラムを走らせる過程で中身の値が変わる。演算子は比較をしたり、掛けたり割ったり足したり引いたりする。文字を結合したり、andやorといった論理演算子などもある。制御文は「もし~であれば~する」といった処理をする。カウンタや条件を使って同じことを繰り返したり、対になる値を配列とし、その要素がなくなるまで繰り返し作業を行うものもある。

関数は、特定の機能をひとまとめにしたものを指す。クラスは更にその上に位置し、関数を内包する。クラスが計算した結果は、インスタンスと呼ばれる命令文でデータとして吐き出される。オブジェクトはこれら一連の対象物を指す言葉である。

プログラムにバグや不具合があれば、デバッグデバッガによって修正が行われる。その修正によって他の部分に不具合を生じることもあるため、あらかじめ修正前の状態にロールバックできる環境を構築しておく。

プログラムには、フレームワークライブラリAPIプラグインモジュールミドルウェアといった概念もある。これらはプログラムの中で使うプログラムとなる。フレームワークは自分のアプリケーションの土台として使うソフトウェアのこと。ライブラリは繰り返し使う関数やデータなどを集めたファイルのことで、ウィンドウズではDLLの拡張子を持つファイルのことを言う。また、ライブラリで代表的なのはjQueryである。

APIは、一般にウェブAPIを指す。ソフトウェアの一部の機能を共有できるプログラムのこと。プラグインはアプリの機能を拡張させるためのものである。例えば、ブラウザで動画を見れるようにするプログラムはプラグインである。モジュールはそれ単体でもそれなりの機能を持ち、モジュールごとにテストしたり、交換によって性能を高めることも可能。ミドルウェアはプラットフォームとなるOSと各アプリケーション間で動作するプログラムである。名称は中間的な位置に存在することに因んでいる。

尚、プログラムは、命令の実行順序の関係がおかしくなると間違った結果を発生させることがある。その一方で順序に関係なく同じ処理をしても良いプログラムもある。この場合、同一装置によって並行作業させることで、全体的な速度を高めることができる。複数のCPUを搭載しているマルチプロセッサや複数のコアを持つマルチコアプロセッサがこの装置に該当する。

ちなみにコンピュータは一つのCPU(一つのコア)だと複数作業を完全並行して処理することはできない。その場合、マルチタスクで複数作業を並行させることもできる。プリエンプティブマルチタスクノンプリエンプティブマルチタスクと呼ばれるもの。プリエンプティブマルチタスクはOSが強制割り込みして、実行タスクを一旦中断させ、スケジューラを読み込んで次の仕事へと移行させる仕組みである。

ノンプリエンプティブマルチタスクは、それぞれのアプリケーションがプロセッサ(CPU)の空き時間を開放し、他のアプリに譲るといった形態のものである。しかし、アプリによってはプロセッサを占有し続けることもあり、この場合は結果としてシングルタスクと同一になり、意味が無い。

プログラムの意味を簡潔に説明すると

人間がコンピュータに渡す命令文のこと。