COBOL言語でない(別案)
関数型プログラミングというものがあるそうで、変数に関数を代入出来、機能をプラガブルに変更出来るそうです。
これを私が耳にしたのは、オブジェクト指向プログラミング真っ盛りの頃で、次世代のプログラミング手法ということで、沢山の人から関心を集めていました。
オブジェクト指向真っ盛りの頃の「次世代」という事で、当然オブジェクト指向プログラミングを凌駕するものだと認識していましたが、
次世代たる実例がいくら待っても出て来ませんでした。
少し違和感が有った
「変数に関数を代入出来る」と聞くと、1つ気になる事が有ります。
- 変数にインスタンスを代入出来、機能をプラガブルに変更出来る手法が有った様な
気です。
コボラーの視点から見ると
いくら「コボラー○ね」とか言われても、口答え出来なかったのは、COBOLの文法が変な所(ごく少量のメモリでの動作)に重点を置いていて、オブジェクト指向に対して自分の問題ににおいて、優位性を言うことが出来なかったからです。
ところで、
関数といえば、
- インターフェースは1つで「公開」
であり、
- インターフェースに内部のメソッドがある
- インターフェースにメソッドを複数持てる
オブジェクト指向プログラミングよりは、COBOLに近い、インターフェースの構造から言うと、焼き直しと言っても良いものです。
もちろん、陰関数に言及すれば別かも知れませんが、それだと最も普通の手続き型言語となってしまいますし、関数型プログラミングを推す方達から、陰関数の言及は知る限り皆無でした。
そりゃあ、逆転の糸口だって有って良いはずだが
プログラミングの手法で、
- 出来る問題を限定する代わりに、簡便で見通しの良い記述が可能
な手法は作れると思います。関数型プログラミングもその辺を狙ったのかも知れません。
しかし年々歳々歳々年々コケにされ続け、逆転の糸口を願い続けて来たコボラーでもその様な「問題の限定」は全く見つからなかったのに、
プログラムの構造が焼き直しの関数型プログラミングにその余地がある様には、コボラーの視点から思えないのです。
それに、
オブジェクト指向言語で、『インターフェースは1つで「公開」』にしたければ、パブリックのメソッドを1つだけにすれば同等だし、
環境変数よろしく、外部とのやり取りを引数以外からしたければ、『パブリックのインスタンス変数』を作ればいいだけで、
関数型はオブジェクト型に含まれている(逆転の糸口がない)様に見えます。
結論
どちらにせよCOBOLの問題とは無関係で、これからも「COBOL言語である」事でプログラミングが嫌いになる人は存在し続ける事でしょう。