プログラム (コンピュータ)

提供: miniwiki
2018/9/23/ (日) 14:17時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

コンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである[1]。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である[2]

コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。

概要

1940年代から1950年代にかけての計算機械のいくつかは、おこないたい計算(データ処理[3]の種類に応じた手順について、各構成要素間の電気的配線を直接に接続することでプログラムされていた。これをワイヤードロジック(布線論理)によるプログラミングという。この方法では、パッチパネル部分をモジュール化してまるごと交換するなどといったような手法もないでもないが、異なった計算をさせたい場合ごとに、配線を変更するという手間が必要である。特に、ENIACが(運用開始時には[4])この方式だったということは歴史上よく言及される。

ワイヤードロジックは、制御の論理が、電気的な配線によって直接進行するという点で速度の点ではすぐれているため、論理を変更する必要がないASICや、プロセッサ自身の内部では速度の点などでは有利な手法であり、現代のマイクロプロセッサ、特にいわゆるRISCでは多用されている。[5]

一方、初期のコンピュータではEDSACにおいて初めて「実用的に」[6]実現されたプログラム内蔵方式(※: 「ノイマン型」の記事も参照のこと)では、プログラムは主記憶装置に記憶される(「内蔵」される)。プログラム内蔵方式のコンピュータでは、プロセッサ(特にCPU)の動作は、主記憶装置から読み込まれるプログラムによって制御される。

プログラムを作ることをプログラミングと言い、プログラミングをする人をプログラマという。プログラミングには一般に、プログラミング言語と呼ばれている形式言語である人工言語がもっぱら使われる。プログラミング言語が対応できないような特殊機能などを使う場合などにはアセンブリ言語により機械語を使ったり、直接、プロセッサを制御する機械語バイナリコードを作成することもある。プログラミング言語で書かれたプログラム(コード)をソースコードと呼ぶ。ソースコードのことを、「プログラムの設計図」と「わかりやすく」[7]呼ぶ一部マスコミなどがあるが、例えば3Dプリンタ等が設計図をそのまま解釈して物を造ってくれることは無いように、設計図とは本質的に違うものである。

なお、以前は「算譜」などといったような和製漢語が考案され使われていたこともあったが(他に、データは「算料」、テストプログラム「試譜」など)、たとえばプログラミングの意味としたい「作譜」という語は既に楽譜に関して使われている語であるとか、「さんぷ」という音の(和製)漢語は既に多数あってそれにさらに同音異義語を加えるものだ、といった問題点も多く当初から指摘されていて、現代ではほぼすたれている。また、(和製)漢語を作るというのは訳すこととは違う、として「次第書き」「次第立て」というひらいた表現の提案[8]もあった。

プログラミング言語を変換する、あるいは解釈実行する、といった処理をするプログラムを、プログラミング言語処理系という。処理系の類型としてコンパイラインタプリタなどがある。コンパイラとインタプリタの関連は、二村射影により定式化されている。

プログラムは、実現する機能によって、コンピュータ自体の動作を制御するオペレーティングシステムなどのシステムプログラムと、表計算ソフトなど使用者が目的とする作業そのものを行うアプリケーションプログラムに大別される。

プログラムとライブラリ

プログラムは単体ではタスクを完遂できないこともある。特にソフトウェアライブラリが必要な場合が多い。ライブラリは単独では機能せず、プログラムから使われるソフトウェアコンポーネントを集めたものである。もしあるプログラムに、他の多くのプログラムでも共通に使える一般的処理があれば、それらをライブラリとすることで、プログラムの共通化を図ることが出来る。

参照・注

  1. Stair, Ralph M., et al. (2003). Principles of Information Systems, Sixth Edition. Thomson Learning, Inc., 132. ISBN 0-619-06489-7. 
  2. Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley, 58. ISBN 0-201-50480-4. 
  3. コンピューティング
  4. ENIACは運用開始後も改修が加えられているため、詳細な歴史を検討する場合はそのことに注意が要る。
  5. また、前述のような初期のコンピュータにおいて、パッチパネルの配線によるプログラミングで一種のインタプリタのようなものを実装し、あたかもプログラム制御のように使えるようなものを作った、というエピソードが日本にある(「日本のソフトウェアの草創期」(『情報処理』第24巻第3号(1983年3月)) http://id.nii.ac.jp/1001/00006268/ PDFの2枚目〜3枚目付近)。
  6. いくつかのコンセプトの実証を目的としていた機械のため実用的ではなかったが、Manchester Small-Scale Experimental Machine という先行例がある。
  7. しかし間違っている。
  8. 国語学者水谷静夫による