COBOL言語でない
コボラーにとっての黒船はまさにオブジェクト指向言語で、完全に飲み込まれた形となりました。適応しないと仕事が無くなりました。
私がCOBOL言語でない言語に初めてぶち当たったのが、オブジェクト指向言語としては中途半端な(クラスが作れない、後に作れる様になったが、その頃には作らない作法で固まってしまっていた)MS AccessのVBAだったので、余計感じ方が変な風に決定づけられたのかもしれませんが、
私がオブジェクト指向言語に対して、心の底から最高だと思った点は、
- インターフェースに内部のメソッドがある
- インターフェースにメソッドを複数持てる
点でした。モデルだとか設計だとか、インターフェース分離だとか依存性だとか、その様な事は私にとって瑣末でした。(個人の感想に過ぎません。)
COBOL言語では
少なくとも私が使っていたCOBOL言語では、インターフェース(LINKAGE SECTIONの事。プログラム毎に1つ。ENTRY(呼ぶ箇所を増やす)は規約で禁止。)は全て「公開」でした。
そして「公開」した以上、それらインターフェースは「不変」でした。
「不変」が絶対条件である為に、よっぽどの必要が無い限り、分割出来ませんでした。
内部的にまとまりが良いロジックでも、別のインターフェースから呼び出すなんて贅沢は出来ませんでした。
内部的なまとまりが良いロジックは、内部的であるが故に頻繁な変更が必要ですが、「公開」したら「不変」になってしまいます。その枷はキツ過ぎました。
オブジェクト指向言語では
- 「不変としなくても良い」プライベートなメソッドが有ること
が、変革を余儀なくされていたコボラーたる私にとって、数少ない喜びでした。
さらに、
- パブリックなメソッドを複数作る事が出来ること
も喜びでした。COBOL言語ではインターフェースはプログラムに1つで「不変」でしたが、オブジェクト指向言語では少し似たインターフェースを複数個持てるのです。後から互換性を保ったまま追加も出来ます。
初めからオブジェクト指向言語から入った人には、この喜びは伝わらないと思います。
一つだけの「不変」のインターフェースで何とかするために、
- 半角1文字(1バイト)で数字1桁を表していたのを(ゾーン10進)、半角1文字(1バイト)で数字2桁を表す様に変えて(パック10進)、数字の桁数を増やす様に再定義(REDEFINES)するとか、
- 文字の先頭1ビットのみを別のフラグにし、読む時分離する(マスクをかます)とか、
涙ぐましい虚しい努力をしなくて良くなった訳です。
結論
何処をどう考えても、これからも「COBOL言語である」事でプログラミングが嫌いになる人は存在し続ける事でしょう。