#018 私とプログラミング言語(前編)

1998/09/20

<前目次次>


 書きかけだったプログラミング言語の話に戻る。

 前回述べたように、プログラミング言語には実にさまざまな種類のものがあるのだが、私はそれらの専門家でもないし、白状するとまっとうなプログラムを書く能力もないので、プログラミング言語全体について網羅的に語ることなどできない。ここではごく私的に、私がこれまでに関わってきたプログラミング言語について、例によって偏見をまじえて語ることにする。ちょっと抽象的で専門的な話になるが、ご容赦を。

 私が最初に出会ったプログラミング言語は、大方のパソコンマニアと同じくBASICであった。私が高校生の頃である。その頃はPC-9801なんていうパソコンが普及しており、大方の人はそれに付属していたN88BASICを使っていたのではないかと思われるが、私の場合はそんな高級品を買う余裕がなかったので、弟と共同で買ったポケコンに付属しているBASICを使っていた。そのポケコンが扱えるメモリ量はわずか4kbyte。その小さな領域内で、数字が変化するだけの月面着陸ゲームなど作って遊んだものである。
 BASICは初心者にとって確かにとっつきやすいのだが、同時にわかりにくいプログラムを簡単に生産してしまう。条件文に続く命令を一行にしか書けないなど、制御構造に関する記述力が貧弱なため、GOTOの使用を安易に許す(というより、事実上GOTOを使わないと複雑なプログラムを作れない)ようになり、よほど気をつけて書かないと、あとで何を書いているか分からないプログラムになりがちである。

 大学の教養過程では、情報処理の講義でPascalを習った。具体的には端末用のパソコン上のTurboPascalである。BASICのようないい加減な言語と違い、変数の宣言や型のチェックや関数の並び順など、非常に厳密な文法を持つ言語で、BASICに慣れてしまった頭からは相当な切り替えを求められる。実際、元パソコン少年の同級生の一人はしきりに「Pascalなんて嫌いだ」と言っていた。だがPascalの厳格さと言語仕様の美しさに魅せられ、今でも熱狂的なファンが大勢居ると聞く言語である。私も熱狂的とまでは言わないが、BASICに比べれば強力な言語であるから、結構Pascalによるプログラミングに熱中していた。当時もまだパソコンを持っていなかったので、夏休み中に出された自由課題のプログラムを作るために、しばしば計算機室に通ってプログラミングをしていたり、円周率の計算プログラムを作って課金ぎりぎりまで走らせたりしていたものだ。

 理系の大学生であればFORTRANの一つも学習しそうなものであるが、私のいた大学ではFORTRANは「物理学実験」の1種目に数えられているだけだった。実験の時間はゲーム三昧で、最後に適当なプログラムを書いて提出するだけ。これでは覚えるはずがない。FORTRAN自体は昔から科学技術計算用のプログラミング言語として長い間使われてきた経緯があるが、それゆえに方言も多く、仕様としては古臭くてあんまり美しくはない。しかし使われてきた歴史が長いので、科学技術計算用のサブルーチンなどの資産が数多くあり、今でもその分野では根強く使われ続けている。

 地球物理系の学科に進学しておきながら物理があんまり好きではなかった私は、専門課程に進んでも、大方の人が選択する「物理学演習」などを選択せず、数学科の選択科目である「計算数学」という科目を選択していたりした。その時にようやく触れたのがC言語である。C言語は人間にとって可読性の高い言語(人間寄りの言語という意味で高級言語と呼ばれる)でありながら、ポインタという型を持つことにより、コンピュータの内部構造に近い制御を記述することができる言語(コンピュータ寄りの言語という意味で低級言語と呼ばれる)の側面を合わせ持っており、その意味で非常にユニークな特徴を持つ言語である。
 それゆえC言語で作られたプログラムは、不完全なものだと簡単に暴走する。シングルタスクのパソコンの場合は暴走を止めるにはコンピュータそのものをリセットするしかないくらい致命的な暴走を引き起こす。はっきり言って私も、在学中はまともに動くプログラムをC言語で作ることなどできなかった。
 あ、ちなみにその講義では、後半にLispも少しやった。少しやったくらいで理解できる言語ではない、とだけ言っておこう。

 というわけで、後半は社会人編である。


<前目次次>