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

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

COBOL言語である 2

COBOL言語でない

コボラーにとっての黒船はまさにオブジェクト指向言語で、完全に飲み込まれた形となりました。適応しないと仕事が無くなりました。

私がCOBOL言語でない言語に初めてぶち当たったのが、オブジェクト指向言語としては中途半端な(クラスが作れない、後に作れる様になったが、その頃には作らない作法で固まってしまっていた)MS AccessVBAだったので、余計感じ方が変な風に決定づけられたのかもしれませんが、

私がオブジェクト指向言語に対して、心の底から最高だと思った点は、

  • インターフェースに内部のメソッドがある
  • インターフェースにメソッドを複数持てる

点でした。モデルだとか設計だとか、インターフェース分離だとか依存性だとか、その様な事は私にとって瑣末でした。(個人の感想に過ぎません。)

COBOL言語では

少なくとも私が使っていたCOBOL言語では、インターフェース(LINKAGE SECTIONの事。プログラム毎に1つ。ENTRY(呼ぶ箇所を増やす)は規約で禁止。)は全て「公開」でした。

そして「公開」した以上、それらインターフェースは「不変」でした。

「不変」が絶対条件である為に、よっぽどの必要が無い限り、分割出来ませんでした。
内部的にまとまりが良いロジックでも、別のインターフェースから呼び出すなんて贅沢は出来ませんでした。
内部的なまとまりが良いロジックは、内部的であるが故に頻繁な変更が必要ですが、「公開」したら「不変」になってしまいます。その枷はキツ過ぎました。

オブジェクト指向言語では

  • 「不変としなくても良い」プライベートなメソッドが有ること

が、変革を余儀なくされていたコボラーたる私にとって、数少ない喜びでした。

さらに、

  • パブリックなメソッドを複数作る事が出来ること

も喜びでした。COBOL言語ではインターフェースはプログラムに1つで「不変」でしたが、オブジェクト指向言語では少し似たインターフェースを複数個持てるのです。後から互換性を保ったまま追加も出来ます。

初めからオブジェクト指向言語から入った人には、この喜びは伝わらないと思います。

 

一つだけの「不変」のインターフェースで何とかするために、

  • 半角1文字(1バイト)で数字1桁を表していたのを(ゾーン10進)、半角1文字(1バイト)で数字2桁を表す様に変えて(パック10進)、数字の桁数を増やす様に再定義(REDEFINES)するとか、
  • 文字の先頭1ビットのみを別のフラグにし、読む時分離する(マスクをかます)とか、

涙ぐましい虚しい努力をしなくて良くなった訳です。

結論

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