COBOL言語でない(さらに別案)
宣言型プログラミングというものがあるそうで、オブジェクト指向プログラミングの「次世代」として、関数型と双璧を成していました。
これは、
- プログラムを固定して、動作を変化させるデータ(プロパティとか設定情報とかいう言い方で知られている)を大量に送り込む事で処理を進める
やり方との事です。
コボラーの視点から見ると
コボラーの視点から見ると、これは、
- ごく少量のメモリでの動作
を成立させるために、常套手段として用いていた手法でした。もちろん、
- 出来る問題は限定されます
万能ではありません。
どういう事情だったのか?
メモリは千バイト程度しか使えなかったのですが、
- MT(磁気テープ)上に記憶を持ったり
- ハードディスク(DASD)上にMTを模した記憶を持ったり
は出来ました。
そして、メモリではまな板よろしく、
「動作を変化させるデータ」1個分(1つ前のデータとの差分が必要な場合は2個分)だけ用意し、MTやDASDから「動作を変化させるデータ」をどんどん流し込んで、結果をまた「動作を変化させるデータ」としてMTやDASDに吐き出す、
というやり方で、何百万件、何千万件、それ以上、の処理が可能でした。
いわゆるバッチ処理です。そしてこれは宣言型プログラミングに通じると思います。
それなら、コボラー的に見ると、プルーブンな手法だと理解出来ます。
例えば
例えば、MS Accessで何百万件のデータをクエリを使ってJOINさせる事は不可能です。
多分ですが、
- クエリをする際には、データすべてを仮想記憶に置いて
- 非常に早いJOINが出来る様にしている
動作だと想像され、仮想記憶の限界の4GBのまな板を超えてしまうと、進まなくなってしまうのも納得です。
それをやれという課題が出たことが有り、テーブルをMTに見立てて、マッチング処理をやって切り抜けた事が有りました。
何万件で、Accessのクエリだとかろうじて仮想記憶の限界内だった場合に、何百万時間(途中までやった時の処理件数と、全体件数から推定)かかるはずの処理が、数分で終わったりしました。
まさに、
- 出来る問題を限定する代わりに、簡便で見通しの良い記述が可能
な手法の白眉です。皆さんもどんどんお使い下さい。
結論
どちらにせよCOBOLの問題とは無関係で、これからも「COBOL言語である」事でプログラミングが嫌いになる人は存在し続ける事でしょう。