ファースト・オーダー

 Algol,Simula どちらも古くて、良く解らないことが多いが、

ソースコードを見ると、現在使われているプログラミング言語とたいして変わらない感じがする。プログラミング言語が、変わらないと今後、何も新しいことがなくて、ずっと同じままになるんじゃないかとそのように考えてしまう。

 レジスタ←マシン語←アセンブラ このようにレジスタから命令とデータを取出したり、ADDで追加したり、ずっとそれをしている限り、プログラム言語はいつまでも同じままになる気がする。あるいは似たようなものが派生していく。

 

Simula

 最初に見たときは、Pascal言語と同じと思った。順番はPascal言語が後なのに、むしろPascal言語の方がバージョンダウンしていると感じた。

その頃は、わからなかったけど1960年代後半から1970年代の大型コンピュータで実装されたコンパイラとCP/MからMS-DOS3.xで動くコンパイラは

プラットフォームが違う。そこは、大型コンピュータの方が挌が上だ。格下の性能が低いコンピュータに移植してもできることは限られる。

 class,virtual,newがある。C言語になくて、C++で復活した。C++でできるようになったのは、C言語の時はその時代にある低スペックのコンピュータで実行できるようにして普及させたことに意宜があった。個人環境で勉強するには、C言語とPascal言語しかなかった。Simula67当時はオブジェクト指向という言い方はなかっただろう。いつの間にか、class,virtual,newこの3つがあることでオブジェクト指向と言うようになった。違和感がある表現だ。

 興味がある方は、「IBM System 360/370 Compiler and Historical Documentation」にsimulaの記事があります。英文ですが、翻訳で読めます。

 

Algol

 昔のコンピュータ言語のほとんどのマニュアルはBNF記述があり、まず命令の構文の図から説明されていた。有名な「Hello World」の書籍から、それ以降のコンピュータ言語の本は、プログラムを入力しながら理解していくスタイルばかりになった。コンピュータ言語がどのように実装されているかを良く知らなくて、何か動いていると感じるだけになってしまう。でも、実際はそれでもいい。コンパイラがどのように、構文解析・字句解析・意味解析をしているかは、別に知らなくてもいいだろう。AlgolのBNFでコンピュータ言語が自然言語に近くなったことは1つの発見かもしれない。

 そうでもないか。コンパイラコンパイラ。

yacc/lexから構文を設計して、自分でコンピュータ言語を製作できればすごいことだ。

しかし、言語構造だけ実装すればオリジナルのコンピュータ言語と以前は言えたけど

今では、フレームワークとか完結した一塊の開発環境をコンピュータ言語と言うようになった。

そして、何とかの言語と言っても他にある言語の機能と考えをそのまま踏襲しているので、結果、似たり寄ったりになる。

                  「あることをするためには、このコンピュータ言語でないとダメだ。」

                 そのように使える言語はなくなってしまった感じだ。

                 Pythonと機械学習は興味があるけど、

                 「あれ、これは、昔からあるC言語と数学ライブラリMathematicaと何が違うのだろう」と思うぐらい。

                 流行とかトレンドでない新しい発想のコンピュータ言語は出てくるだろうか。

 

 Algolで考えさせられるのは、グラフィック命令があり図形描画をしていることです。

コンピュータは、方向性が少し違っていれば電卓のお化けになっていたかしれない。

しかし、最初からグラフィック描画を実装していることで、現在のコンピュータになったかもしれない。

でも、当時のコンピュータ処理なので、たぶんオーバーレイでメモリ管理をする工夫があっただろう。

Forth

 FORTHも何か変わっている。

HPの電卓がエンジニア向けであるように、FORTHは、組込み機器とかで使われていたようだ。

なるほど、FORTHはHP電卓のお化けみたいなものだ。

PostScriptもそうだったと思う。ベジェ曲線でフォントを描くには持って来いだったろう。