今日は、ジョン・バッカスの命日(2007)。
虎は死んで皮を残す。人は死んで名を残す。
ジョン・バッカスは、FORTRAN と ALGOL と BNF を残しました。
FORTRAN は、世界最初のコンピューター言語。
これ以前にもアセンブリ言語はあるし、わずかながらアセンブラ(アセンブリ言語で書かれたプログラムを、機械語に変換するプログラム)もありました。
でも、アセンブラは必要に駆られて作られた「表記法」程度のもので、言語と呼ぶのはちょっと違う感じ。
人間にとっては無意味な「機械語」と、1対1対応だからね。
そんな時代に、バッカスは数学者が書いた数式を、ほぼそのまま計算できる言語を作り出しました。
それが FORTRAN でした。
人間にわかりやすいような…機械語でない言語でのプログラムなんて不可能だ、と明言する学者もいた時代。
プログラム言語が「可能」であることを示すには、ただそれを作ってみせればいいだけでした。
これは非常に難しいチャレンジでしたが、FORTRAN は成功しました。
ただ、この時は「実証する」ことが最大の目的で、使いやすさとかは考えてません。
もっと使いやすい言語ができるはず。
多数の計算機学者が集まり、「美しい言語」の設計が始まります。
バッカスも、当時唯一の「実際に動く言語を作成した経験者」として、この会議に加わっています。
そこで策定された言語が ALGOL で、文法構造は非常にシンプルになっていました。
この、シンプルな文法構造の表現に使われたのが、BNF 。バッカス・ナウア・フォーム(バッカス・ナウア記法)の略です。
ナウアは、バッカスと共にこの記法の策定にかかわった人物。
BNF は非常にシンプルで強力なため、今でもいたるところで使われています。
特に、インターネットのプロトコルなどは BNF で書かれるため、現代プログラマの必須知識。
現代の言語の多くが、BNF で記述できることを前提に設計されています。
その意味では、どの言語も ALGOL の子孫。
中にはそうではない変態言語もありますが…
perl なんて、単純に BNF で記述できない言語のひとつ。
でも、BNF で書けない、というのが悪いことではない。
BNF で書くと、厳密で強固な言語となる一方、回りくどい書き方をしなくては記述できないことがあります。
perl は、その回りくどさを無くすために、あえて BNF で記述できない文法を採用している。
だから、ややこしい処理を非常に簡潔に書くことができます。
80年代の BASIC なんかも、BNF で書けませんでした。
BNF で書かれた言語って、プログラマから見ると美しい一方、あまり初心者向けではないように思います。
…と、ここでは、ざっくりした説明にとどめておきます。
バッカスについては、過去に書いた記事に詳しいので。
もっと知りたい方は、是非以下の記事も読んでみてください。
ジョン・バッカスの誕生日(1924/12/3)
「計算機言語」が生まれた日(1956/10/15)
同じテーマの日記(最近の一覧)
別年同日の日記
申し訳ありませんが、現在意見投稿をできない状態にしています。 |