2014年10月15日の日記です


「計算機言語」が生まれた日(1956)  2014-10-15 11:49:21  コンピュータ 今日は何の日

今日は、計算機言語が生まれた日。

…というのは、非常に曖昧な言い方だな。


計算機言語っていうのは、つまりはプログラム言語のことね。

ただし、2進数で示される「機械語」は含まないものとします。


あれは、電気を ON/OFF するスイッチを制御するための信号だから。

また、機械語と1対1で対応しているアセンブラも、今は含まない。

(計算機言語に含む場合もあるけど、話の都合上含まないものとしてほしい)



つまり、プログラム言語とは、人間にわかりやすい形で示された「言語」を元に、機械を制御する「機械語」を直接生成するものです。




1950年代初頭、プログラム内蔵式のコンピューターは研究目的ではなく、実用になりつつありました。

そして、プログラムが思った以上の難題であることが明らかになってきます。


ここで、コンピューターは非常に高性能だから、コンピューターの力を使ってコンピューター自身をプログラムしよう、という構想が現れます。

自然言語(英語)を使って、おかしなところのない厳密な方法で仕様書を書くと、それをコンピューターが解釈して自分自身をプログラムする、というアイディアです。


これは「自動プログラミング」と呼ばれ、学術的な研究などが始まりました。



でも、意見は大きく二つに分かれます。

プログラムは想像力が必要なもので、機械にはできっこない、という懐疑派と、想像力が必要なのは仕様書を策定する部分で、そこから先の部分は機械でもできる、という推進派です。


IBM は推進派でした。

何よりも、主力商品となりつつあったコンピューターを売るためには、効率の良いプログラム方法が必要なのです。


懐疑派と推進派の論争を終わらせる方法はただ一つ。実際に自動プログラミングが可能なことを示せばよいのでした。


IBM は、この分野の研究開発を始めます。




1954年、IBM のジョン・バッカスは、問題を限られた範囲で解決するプログラム言語を考案します。


仕様書を理解する、と言っても、広範囲な仕様書では理解させるのも大変です。

そこで、当時のコンピューターの主要な利用目的であった、科学計算目的にターゲットを絞ります。


科学計算では、非常に複雑な式を扱う必要がありました。

しかし、それらの式は複雑すぎて、機械語に直すだけで一苦労なのです。


たとえば、 Y = X**2 + 5*X +4 …という、簡単に表せる数式があったとしましょう。

(X**2 は Xの2乗の意味です)


これを IBM 704 では次のように書く必要がありました。



LDQ X
MPY X
STQ Y
LDQ num5
MPY X
STQ tmp
CLA tmp
ADD Y
ADD num4
STO Y


数式ひとつ表すのにこんな苦労が必要。この部分の苦労だけでも解放できれば!


#上のプログラム、IBM704 を使ったことがあるわけではないので、自信なし。

 一応マニュアル参照しているので大きく間違っては無いと思います。

 なお、掛け算は結果を 70bit で返しますが、上のプログラムでは下位 35bit のみ使用しています。




数式を英語で FORMULA と呼びます。ここを変換、TRANSLATE する。

この言語は、FORTRAN と名付けられます。


FORTRAN は、IBM 704 をターゲットとして開発されました。


科学計算では、繰り返しもよく使われましたので、繰り返しを簡単に記述できる命令があります。


でも、数式と繰り返しを除けば、命令はほぼ IBM704 の機械語と同じです。

見た目こそ「高級命令」に見えるのですが、機械語と1対1対応なのです。



実現可能性を確かめながら、FORTRAN の文法を完成するまでに2年が費やされ、1956年に文法などを記した「Programmer's Reference Manual」が先に完成します。


実際に動作する言語処理系が完成するのは翌 1957年。


さて、このマニュアルの発行日が、1956年の今日、10月15日となっています。

(3ページ目の右上に書かれています)




FORTRAN で「自動プログラミング」が可能であることが示された後、翌1958年にはより便利な命令を増やした FORTRAN II が作られます。


FORTRAN の成功に続いて、研究目的の LISP(1958)、ビジネス向けの COBOL(1959) も作られ、さらに 、学生の勉強用に BASIC(1964) など、多くの言語が考案されています。


#余談になりますが、3D プリンタの元祖となるモデル記述言語、APTも 1958年に完成しています。


しかし、これらの言語は、今から見ると「いきあたりばったり」な文法体系です。

たしかに目的は達成できるのですが、命令の組み合わせ方が制限されていたり、論理が記述しにくかったりするのです。


FORTRAN を作り出したジョン・バッカスは、言語を作る研究をさらに続けていました。

そして、「より良い言語」を作ろうとしていた国際的なグループに参加します。


この時に作られた言語が ALGOL です。言語仕様は 1958年に作られていますが、実際に動作する処理系が出来たのは 1960年でした。


ALGOL の文法記述方法は、「バッカス・ナウア記法」(Backus-Naur form:BNF)と呼ばれます。

ピーター・ナウアは、ALGOL 開発者の一人。



BNF は、非常にすっきりと文法を記述できます。インターネットのプロトコル仕様などは BNF で表現されることが多く、RFC (インターネットで守られるべき取り決めのこと)を読むうえで、BNF を知っていることは非常に重要です。


最初の FORTRAN の記述方法などは「スパゲティプログラム」と呼ばれて忌み嫌われ、ALGOL の記述方法は良いものとされるのですが、作者は両方同じなのですね。


#FORTRAN の反省に立って ALGOL を設計した、とも言えます。




さて、FORTRAN が無ければその後の言語はありませんし、ALGOL が無ければ現在の C言語や、Java / PHP / Perl などの多くの言語もありません。


これらすべての元…FORTRAN の仕様がが世に示されたのが、1956年の今日なのですね。

そういうわけで「計算機言語が生まれた日」と書いたのです。


…発行日って恣意的な部分もあるから、本当に今日が生まれた日かわからないのですけど (^^;




同じテーマの日記(最近の一覧)

コンピュータ

今日は何の日

関連ページ

ジョン・バッカスの命日(2007)【日記 15/03/17】

ジョン・バッカスの命日(2007)【日記 15/03/17】

ハーマン・ホレリス 命日(1929)【日記 15/11/17】

プラスとピリオドの取り違え【日記 17/04/07】

ジョン・バッカスの誕生日(1924)【日記 14/12/03】

別年同日の日記

04年 大きく育て

04年 最終確認

13年 富一成さんの誕生日(1960)

15年 プレイステーションを生み出した新聞記事

15年 グレゴリオ暦の制定日(1582)

18年 UPS切り替え

18年 オーシャンハンター


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

23000

-- follow --




- Reverse Link -