嫌われプログラミングの代弁者

「何で頭ごなしに嫌う人間が居るのか」を色々考える

COBOL言語である 1

どの様な話?

COBOL言語が人から嫌われる直接の原因は、

  • 柔軟性が無い

為だと思います。ちょっとの仕様変更もしてもらえないとなると、嫌われて当然です。じゃんじゃんモダナイズすべきだと思います。

 

何で柔軟性が無いのか

私が小学生だった1970年代でも、食べ物など、肉はほとんどなかったものの、それ以外はかなり有り、逆にほうれん草などは現在、高い通販でしか買えない路地ものが食べられたりもして居ましたが、
根本的な違いとして、

  • 良い袋が無かった、木を薄く削ったものが主な包装だった

事があります。家から5分(小学校低学年の体感で)の所に有ったお菓子屋で買ったカールを持ち帰る時に、雨粒が2、3滴付いただけで(それ位の空気の湿り気だけで)、完全に湿気り切っていました。

その時の絶望感は鮮明に記憶にあります。

その頃のカールの袋は湿気を通していたのです。そしてお菓子屋とは、密閉された何十個もの防湿庫を備えた、専門性を持った装置産業だったのです。

 

さて、COBOLの話ですが、COBOLはその頃のお菓子屋と同じ様に、その頃の状況に対応していました。それは、

  • 仮想記憶は有ったのに、プログラム1実行当たり、メモリを千バイト程度しか使えない

事でした。

それに対応する為に、

  • COBOLはメモリを1バイト単位(英数字)、あるいは2バイト単位(漢字)で個数指定

していました。

  • メッセージを編集する為の変数には10文字20バイト、金額には10バイト

と言った感じです。

今のように、文字列型を定義すれば1変数当たり10万文字分とか(漢字1文字は2バイトとは限らず、6バイトだったりもするがそれも考慮の上)もらえるのとは、訳が違いました。

柔軟性があろうはずも有りません。

 

メモリを沢山使える時代に即した言語改良をすれば良かったのではないか?

千バイト程度をちまちま使う時に便利な様に、そしてそう言う風に使う時の書き方を最優先に文法が組まれていることで、それとの互換性を保ったまま、改良は出来なかった様です。

メモリジャブジャブ時代で便利な様な文法を最優先にする余地が、完全に無かったと言う事だと思います。

 

それにしては嫌われ過ぎているのでは無いか?

COBOL言語で書かれたシステムをモダナイズしたい人は、

  • COBOL言語を読み解くのは目が腐る
  • COBOL言語独立に、仕様を渡して欲しい
  • COBOL言語の「入力→出力」と同じ動作を、新システムでも出来ればテストOKとしたい

と考えていても、

  • 何のかんのでCOBOL言語で書かれたシステムは(各サイト個別事情の複雑怪奇な)業務知識の塊で、言語独立の仕様を渡せと言われても、「誰に言っているの? 自分にはその様な能力は有りません。」

と言われるだけだったからだと思います。

 

何で言語独立の仕様を渡せないのか?

言語独立の仕様は、

  • いくつかの必要とする点を指定したものに過ぎず
  • それにふさわしい滑らかな曲線を描いた結果であるプログラムから、点の指定を復元したとしても、現行プログラムの動作を再現出来るだけの情報にならない

からだと思います。

これはCOBOLに限った話では無いと思います。柔軟性の乏しいCOBOLであっても、動かない1つの問題の解決の具としては十分で、柔軟性に乏しいとは別の話で、

(多分自然言語で書かれた)言語独立の仕様などよりも「いかにも些細な詳細な零細なレベル」で記述出来たからです。

ただ、その代表格(モダナイズしても良いと思われるだけの旧システムが有る)としてのCOBOLだからなのでしょう。

 

結論

これからも「COBOL言語である」事でプログラミングが嫌いになる人は存在し続ける事でしょう。