私のプログラミング習得史(2)

非構造化言語

この頃のBASICなどのプログラミング言語は手続き型言語と呼ばれる。当時、業務で使われていた他の言語、FORTRANやCOBOL、PL/Iも同じだ。ALGOLとか他にも言語自体は存在したが業務ではそれほど使われてなかったのではないだろうか。

これらの言語は「非構造化言語」とも呼ばれた。例えばBASICではソースファイルは一本だ。しかも関数は組込のみ。サブルーチンは作れたが関数は作れない。だから構造化できない。基本的にgoto文でジャンプ。もしくはgosub文でサブルーチンにジャンプ。COBOLのプログラマなんて「goto, perform, if〜thenを知ってりゃプログラミングできるよ。」なんて呑んだ時に豪語していた。

そこで登場したのが構造化言語だ。一言で言えばこうだ。

goto文を使わないプログラミング言語

私が仕事を始めた80年代後半は「構造化言語」が流行りだした頃。大学など教育現場ではpascalが主流だった。ボーランド社のturbo pascalを使う人が私の周りには多かったが、私はlattice-C つまりC言語を使っていた。

どうもこの頃の私はひねくれ者で(今でも十分ひねくれているが)一番メジャーなものを使わない、という傾向があった。なぜか一番使われているもの馴染めなかった。

エディターだって皆んなはMIFESを使っているのに自分はRED++だったし、ワープロソフトは一太郎を使わずにP-1.EXEを使っていた。もっともその頃になると仕事でOASYSを使っていたが、自分はFM-Rを買いたくなかったからAskey WORDという98で動くOASYS互換ワープロソフトを使っていた。大学ではturbo pascalとMacintoshの使い手が大嫌いだった。unixでもemacsではなくてvi派だった。

構造化プログラミング言語の流行

話が逸れたが非構造化言語の欠点はプログラムの再利用化が容易ではないことだ。再利用できるのはソースプログラムに貼り付けるレベル。今で言えばコードスニペットだろうか。これだとコーディングレベルでは確かに再利用できるが、その後の工程、単体テストや結合テストはやり直しになる。コピペに失敗していたり変数をいじってしまえば新しいソースプログラムとなんら変わりない。

そこでプログラムの再利用化を実現し、gotoやgosub(COBOLならperform)を使わずに、さらにswitch文でif〜else文をすっきりと記述できるプログラム言語が登場した。

まずはpascal。教育現場にてよく使用されたらしいが、私は嫌いなので知らない(笑)

次にada(エイダ)米国防総省が開発したこの言語を使っていたのはNTTくらい。

さらにこれも一発屋で終わったmodula-2。究極の構造化言語ともてはやされたが、いつの間にか消えた。

ちなみにpascalもmodula-2も同じ人が考えたものだ。なぜmodula-2なのかというと、先にmodulaという言語の構想があったからだ。

結局生き残ったのはC言語。理由はわかる気がする。なぜならpascalもmodula-2もやたらと英単語を使うのだ。その点、Cはほとんど記号だ。覚えるのも入力もラクだ。

ネットで調べていると「C言語ではgoto文が使えない。」と買いてある記事を見つけた。そんなことはない。私も数度だがCでgoto文を使ったことがある。最終手段だ。

え?adaはって?あれはパソコンで動かなかったから普及するわけがない。戦闘機とか航空機のソフト開発に使われたらしいから日本では使い道がなかったのかもね。

(1)← →(3)