プログラム
【英】program, computer program
プログラムとは、計算機に動作をさせるため用意された、処理手順を指示する一連の命令の集まりのことである。
プログラムは、その計算機の動作を具体的に指示する命令語の集まりであるといえる。特定の命令語を具体的に並べたものは、どんな処理をするものであれ、プログラムに該当する。他方、特別な命令語に依存しない、特定の問題を解く方式は、アルゴリズムと呼ばれる。
現在利用されている計算機は、ほぼ全て、ノイマン型コンピュータと呼ばれるアーキテクチャに基づいて設計されている。ノイマン型コンピュータは、アラン・チューリングが発見した計算の原理そのものに従って動作し、番地が付与された記憶装置に記録された命令語を読み込み、解釈実行する、という動作を繰り返す。実行内容には、記憶装置からの読み込み、書き込みが含まれる。記憶装置に置かれる命令語の種類とその並びによって様々な動作をさせることができる。このような論理機械は、論理的に可能な計算の全てを実行できることが証明されており、万能チューリングマシンとも呼ばれる。
プログラムを記述するために用意された命令の体系は、プログラミング言語と呼ばれる。プログラミング言語は人工言語であり、多種多様な種類が開発されている。分類としては、例えば、特定のCPUの命令語そのものである機械語、機械語レベルの命令をシンボリックに表したアセンブリ言語、より人間寄りの(自然言語に近い)表現で記述される高級言語などに大別することができる。あるいは、実行形態によって分類すれば、ソースコードをそのつど解釈して実行するインタープリタ型言語と、コンパイルによってあらかじめネイティブのマシン語に変換しておくコンパイラ型言語などに分けることができる。
C言語のようなコンパイラ型言語は、モジュール単位でコンパイルされ、オブジェクトファイルと呼ばれる出力を得る。オブジェクトファイルは、リンクされることにより一つの実行ファイルとなる。実際の場面で用いられるプログラムは、複数のプログラムやモジュールが連携して動作を行う場合がある。そのようなもので、ローカルマシン内で時分割で動作するものを多重プログラミング、平行プログラムなどと呼ぶ。また、ネットワーク越しに複数プログラムが連携するような場合、分散プログラムと呼ぶことがある。
なお、プログラムを作成する作業はプログラミングと呼ばれ、プログラミングを行う者はプログラマと呼ばれている。プログラミングやプログラマといった表現には、多分に、プログラムの設計に始まる一連の作業を全般的にこなすというニュアンスがある。このようなニュアンスのプログラマに対して、他の誰かが案出したプログラムを単にデータとして入力する役割の者は、特にコーダーと呼ばれる場合もある。
プログラム (コンピュータ)
この記事は英語版の対応するページを翻訳することにより充実させることができます。(2024年5月) 翻訳前に重要な指示を読むには右にある[表示]をクリックしてください。
|
コンピュータプログラム(英語: computer program)は、コンピュータに対する命令(処理)を記述したものである[1]。programの原義は、前もって(pr-)書く(gram)であり、いわゆるプログラミング言語の世代に応じて意味合いは変わっている。プログラム内蔵方式のコンピュータのCPUには、CPUで実行するプログラムの命令が必要である[2]。
概要
計算機械ないしは情報処理機械について、ハードウェアとプログラム(ソフトウェア)というような分担が明確になったのは、実際的には1950年頃から後、いわゆるノイマン型(ないしはプログラム内蔵方式)のコンピュータの実現によってである。理論的にはチューリングマシン等が関係するが、そのような理論的な側からの観点はここでは省略する。また歴史的に見ると、19世紀にバベッジとラブレスが解析機関用にコンピュータプログラムをつくったと言えるが、それも略す。直感的なたとえでは、ハードウェアをそろばんとすると、それを「どう操作するか」という、はっきりした具体的な手順がプログラムに相当する。
1940年代から見られる計算機のいくつかは、行いたい計算(データ処理)[注 1]の種類に応じた手順について、各構成要素間の電気的配線を直接に接続することでプログラムされていた。これをワイヤードロジック(布線論理)によるプログラミングという。この方法では、パッチパネル部分をモジュール化してまるごと交換するなどといったような手法もないでもないが、異なった計算をさせたい場合ごとに、配線を変更するという手間が必要である。特に、ENIACが(運用開始時には[注 2])この方式だったということは歴史上よく言及される。
ワイヤードロジックは、制御の論理が、電気的な配線によって直接進行するという点で速度の点では優れているため、論理を変更する必要がないASICや、プロセッサ自身の内部では速度の点などでは有利な手法であり、現代のマイクロプロセッサ、特にいわゆるRISCでは多用されている[注 3]。
1949年に稼働したEDSACによって初めて「実用的に」[注 4]実現されたプログラム内蔵方式(※: 「ノイマン型」の記事も参照のこと)では、プログラムは主記憶装置に記憶される(「内蔵」される)。プログラム内蔵方式のコンピュータでは、プロセッサ(特にCPU)の動作は、主記憶装置から読み込まれるプログラムによって制御される。
プログラムを作ることをプログラミングと言い、プログラミングをする人をプログラマという。プログラミングには一般に、プログラミング言語と呼ばれている形式言語である人工言語がもっぱら使われる。プログラミング言語が対応できないような特殊機能などを使う場合などにはアセンブリ言語により機械語を使ったり、直接、プロセッサを制御する機械語バイナリコードを作成することもある。プログラミング言語で書かれたプログラム(コード)をソースコードと呼ぶ。
なお、かつては「算譜(略: 譜)」という和製漢語が用いられていた(他に、データは「算料」、テストデータは「試料」、プログラミングを「作譜」は、テストプログラムを「試譜」と呼ぶ等)が、今日ではほぼ廃れている。また、「次第書き」「次第立て」という開いた表現[注 5]も作られた。
プログラミング言語を変換する、あるいは解釈実行する、といった処理をするプログラムを、プログラミング言語処理系という。処理系の類型としてコンパイラやインタプリタなどがある。コンパイラとインタプリタの関連は、二村射影により定式化されている。
プログラムは、実現する機能によって、コンピュータ自体の動作を制御するオペレーティングシステムなどのシステムプログラムと、表計算ソフトなど使用者が目的とする作業そのものを行うアプリケーションプログラムに大別される。
プログラムのうち、単体で動作せず他のプログラムから呼び出されて特定機能を提供するものをソフトウェアライブラリという。もしあるプログラムに他の多くのプログラムでも共通に使える一般的処理があれば、それらをライブラリとすることでプログラムの共通化を図ることが出来る。
脚注
注釈
出典
- ^ Stair, Ralph M., et al. (2003). Principles of Information Systems, Sixth Edition. Thomson Learning, Inc.. pp. 132. ISBN 0-619-06489-7
- ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. pp. 58. ISBN 0-201-50480-4
- ^ 「日本のソフトウェアの草創期」(『情報処理』第24巻第3号(1983年3月)) http://id.nii.ac.jp/1001/00006268/ (PDFの2枚目〜3枚目付近)
コンピュータプログラム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/02 21:07 UTC 版)
「コンピューティング」の記事における「コンピュータプログラム」の解説
詳細は「プログラム (コンピュータ)」を参照 コンピュータプログラムは、コンピュータに何をどうすればよいか指示を出す。現在のパーソナルコンピュータ等の一般的な構成では、その記憶装置のうちの補助記憶装置に未使用時は格納されており、主記憶装置にロードされて実行される(主記憶装置に実行対象のプログラムを置く方式をプログラム内蔵方式と言う)。
※この「コンピュータプログラム」の解説は、「コンピューティング」の解説の一部です。
「コンピュータプログラム」を含む「コンピューティング」の記事については、「コンピューティング」の概要を参照ください。
コンピュータプログラム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/11 21:25 UTC 版)
「マンマシンインタフェース」の記事における「コンピュータプログラム」の解説
コンピュータのプログラムが、①人間の指示を受け、②処理し、③結果を人間に知らせる。の構成を取る場合、このうち①と③の両方をマンマシンインタフェースとしている。マンマシンインタフェースは、コンピュータプログラム全体のうち人間と関わる部分の処理機能の名称または実現するサブシステムの名称として用いられ、一般的には「マンマシンインタフェース」とは呼ばれず、「マンマシンのバグ」、「マンマシン部」など略された表現がされることが多い。[要出典]
※この「コンピュータプログラム」の解説は、「マンマシンインタフェース」の解説の一部です。
「コンピュータプログラム」を含む「マンマシンインタフェース」の記事については、「マンマシンインタフェース」の概要を参照ください。
コンピュータプログラム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/28 01:24 UTC 版)
「ネッツグラーフィ」の記事における「コンピュータプログラム」の解説
ネッツグラーフィの作図は、通常、FBS、Optitakt、RailSys、TAKT、Viriatoといった、通常、運行計画の策定・分析のためのコンピュータプログラムによって作成された時刻表データから自動的に転送することで行われる。さらに、製図ソフトや表計算ソフトによるデータを編集者が手動で適用することで完成させる。
※この「コンピュータプログラム」の解説は、「ネッツグラーフィ」の解説の一部です。
「コンピュータプログラム」を含む「ネッツグラーフィ」の記事については、「ネッツグラーフィ」の概要を参照ください。
コンピュータプログラム
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/07/15 19:32 UTC 版)
「プロトタイプ」の記事における「コンピュータプログラム」の解説
C言語には関数プロトタイプ宣言というものがあるが、これは関数・サブルーチンの引数と返り値の値を宣言するものである。外部とのやりとりを示す「宣言」に対し、中身を示すものを「定義」と言う。 プロトタイプベースのオブジェクト指向プログラミングでは、プロトタイプは「クローンとしての新しいオブジェクト」を作ることができるオブジェクト、のことである。逆にそのクローンの側から見ると、自分がクローンとして作り出される元となったオブジェクトがプロトタイプである。 試作プログラムや画面デモ用プログラムなども「プロトタイプ」と呼ぶ。日本においては「デモ版」ないし「ベータ版」、まれに「アルファ版」(ベータ版の更に手前)などと呼ばれることも多い。 Adobe_Directorなどのツールを使うと、通常の開発環境より迅速にメニュー画面などのプロトタイプやデモンストレーションの作成が出来る。また、実際の開発環境との互換性が全く無いため確実にプロトタイプを破棄できる利点がある。
※この「コンピュータプログラム」の解説は、「プロトタイプ」の解説の一部です。
「コンピュータプログラム」を含む「プロトタイプ」の記事については、「プロトタイプ」の概要を参照ください。
「コンピュータプログラム」の例文・使い方・用例・文例
- 彼はコンピュータプログラムを教える名人だ
- コンピュータプログラムのコードにおいて間違いを検知し正す
- コンピュータプログラムは、循環器系と呼吸器系のモデルに基づいていた
- 創造的に問題を解決できるコンピュータプログラムを書くことを扱うコンピュータサイエンスの分科
- コンピュータプログラムのデータや命令、またはそのような命令の一連の記号による配列
- コンピュータプログラムの実行を制御し、様々なサービスを提供するソフトウェア
- ウイルスに対しコンピュータを監視し、その感染を防ぐコンピュータプログラム
- ある特定の条件が満たされるまで一連の命令を繰り返し行うコンピュータプログラム
- 他のコンピュータプログラムの構文エラーを検査するプログラム
- 装置の不具合またはコンピュータプログラムの誤りを識別し、説明するプログラム
- コードを分割して機能するコンポーネントへ仕上げるコンピュータプログラム
- 文字の事柄の文法的構成に対してラベルをはるコンピュータプログラム
- 地理情報から動的に空間的に参照されたデータの地図を作成するコンピュータプログラム
- コンピュータプログラムまたは会計システムにおける作業の順序の図
- より大きなコンピュータプログラムの部分である、ステップの、定められた順序
- コンピュータプログラムの実行の時間順の記録を提供するルーチン
- コンピュータプログラムの一部分として書かれたコードの一行
- プログラミング言語で、コンピュータプログラムをアルゴリズムとして記述するのに使う
- コンピュータプログラムの連続実行
- 単一のコンピュータによる2つ以上のコンピュータプログラムの実行
- コンピュータプログラムのページへのリンク