「プログラム (コンピュータ)」の版間の差分

削除された内容 追加された内容
208.117.83.223 (会話) による ID:82673371 の版を取り消しグローバルロックされているIPユーザーによるタグ爆撃を差し戻し
タグ: 取り消し
m編集の要約なし
1行目:
{{see also|ソフトウェア|アプリケーションソフトウェア}}
'''コンピュータプログラム'''(英:computer{{lang-en|computer program)とprogram}})は、[[コンピュータ]]に対する[[命令 (コンピュータ)|命令]](処理)を記述したものである<ref name="pis-ch4-p132">{{cite book
| last = Stair
| first = Ralph M., et al.
19行目:
 
== 概要 ==
計算機械ないしは情報処理機械について、[[ハードウェア]]とプログラム(ソフトウェア)というような分担が明確になったのは、実際的には1950年頃から後、いわゆる[[ノイマン型]](乃至、ないしは[[プログラム内蔵方式]])のコンピュータの実現によってである。理論的には[[チューリングマシン]]等が関係するが、そのような理論的な側からの観点はここでは省略する。また歴史的に見ると、[[19世紀]]に[[チャールズ・バベッジ|バベッジ]]と[[エイダ・ラブレス|ラブレス]]が[[解析機関]]用にコンピュータプログラムをつくったと言えるが、それも略す。直感的なたとえでは、ハードウェアを[[そろばん]]とすると、それを「どう操作するか」という、'''はっきりした具体的な手順'''がプログラムに相当する。
 
1940年代から見られる計算機のいくつかは、おこないたい計算([[データ処理]])<ref>[[コンピューティング]]</ref>の種類に応じた手順について、各構成要素間の電気的配線を直接に接続することでプログラムされていた。これを[[ワイヤードロジック]](布線論理)によるプログラミングという。この方法では、[[パッチパネル]]部分をモジュール化してまるごと交換するなどといったような手法もないでもないが、異なった計算をさせたい場合ごとに、配線を変更するという手間が必要である。特に、[[ENIAC]]が(運用開始時には<ref>ENIACは運用開始後も改修が加えられているため、詳細な歴史を検討する場合はそのことに注意が要る。</ref>)この方式だったということは歴史上よく言及される。
 
ワイヤードロジックは、制御の論理が、電気的な配線によって直接進行するという点で速度の点ではすぐれているため、論理を変更する必要がないASICや、[[プロセッサ]]自身の内部では速度の点などでは有利な手法であり、現代の[[マイクロプロセッサ]]、特にいわゆる[[RISC]]では多用されている<ref>また、前述のような初期のコンピュータにおいて、パッチパネルの配線によるプログラミングで一種のインタプリタのようなものを実装し、あたかもプログラム制御のように使えるようなものを作った、というエピソード逸話が日本にある(「日本のソフトウェアの草創期」(『情報処理』第24巻第3号(1983年3月)) http://id.nii.ac.jp/1001/00006268/ PDFの2枚目〜3枚目付近)。</ref>
 
1949年に稼働した[[EDSAC]]によって初めて「実用的に」<ref>いくつかのコンセプトの実証を目的としていた機械のため実用的ではなかったが、[[Manchester Small-Scale Experimental Machine]] という先行例がある。</ref>実現された[[プログラム内蔵方式]](※: 「[[ノイマン型]]」の記事も参照のこと)では、プログラムは[[主記憶装置]]に記憶される(「内蔵」される)。プログラム内蔵方式のコンピュータでは、[[プロセッサ]](特に[[CPU]])の動作は、主記憶装置から読み込まれるプログラムによって制御される。
29行目:
プログラムを作ることを[[プログラミング (コンピュータ)|プログラミング]]と言い、プログラミングをする人を[[プログラマ]]という。<!--プログラムの作成には、まずコンピュータによる処理の手順を表にしたものを作成し、この手順書を[[アルゴリズム]]と呼ぶ。--><!-- ←「アルゴリズム」は[[計算理論]]によって厳密に意味がある語であり「コンピュータによる処理の手順を表にした手順書」などではない -->プログラミングには一般に、[[プログラミング言語]]と呼ばれている[[形式言語]]である[[人工言語]]がもっぱら使われる。プログラミング言語が対応できないような特殊機能などを使う場合などには[[アセンブリ言語]]により[[機械語]]を使ったり、直接、プロセッサを制御する機械語[[バイナリ]]コードを作成することもある。プログラミング言語で書かれたプログラム(コード)を[[ソースコード]]と呼ぶ。ソースコードのことを、「プログラムの設計図」と「わかりやすく」<ref>しかし間違っている。</ref>呼ぶ一部マスコミなどがあるが、例えば3Dプリンタ等が設計図をそのまま解釈して物を造ってくれることは無いように、設計図とは本質的に違うものである。
 
なお、かつては「算譜(略: 譜)」という[[和製漢語]]が用いられていた(他に、データは「算料」、テストデータは「試料」、テストプログラムは「試譜」等)が、今日ではほぼ廃れている。また、「次第書き」「次第立て」という開いた表現<ref>国語学者[[水谷静夫]]による</ref>も作られた。
 
[[プログラミング言語]]を変換する、あるいは解釈実行する、といった処理をするプログラムを、プログラミング言語処理系という。処理系の類型として[[コンパイラ]]や[[インタプリタ]]などがある。コンパイラとインタプリタの関連は、[[部分評価#二村射影|二村射影]]により定式化されている。