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

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

実用的な真の関数型言語 1

どの様な話?

実用的な、関数型言語の代表格というと、何か考えましたが、

  • COBOL言語

では無いか?というのがこのブログの主題です。

そして、COBOL全盛期(後はしぼむ一方)の頃、よく言われていた、

  • C言語は新鋭の関数型言語である

というのが全く理に叶っていなかったのでは無いか?というのも主題です。

 

 

関数型言語は、

関数型プログラミング言語は、

包含関係
  • 推し並べて、0階(与えられた値だけで、結果が出せる)のみで構成、
    いわゆるバッチ処理と同等
  • 1階(項(値)のレベルで、他の、別個の思惑を持つ対象とリアルタイムに
    (実行時に)インタラクティブ(リレーション)する)は、言語の埒外に
    置かれ、関数型言語から操作出来ず、その存在すら観測出来ない

というのが正しいと思いますが、

  • JCLという、
  • 言語の埒外に有り、参照するファイルを実行時に変更できず
  • 参照するファイルの設定の存在すら観測出来ない

という性質を持ったCOBOL言語が、

  • 歴史的に見て、
  • 実用的な面で最も普及した、
  • ”真の”関数型言語で有り(0階のみで全てをまかなっていた、
    すなわち0階のみで出来ない事を、「出来ないのが正しい」として逃げていた)、

それに対して、

  • 関数を呼ぶ側、参照するファイルを指定する側も、
  • すべて同一のC言語となる(1階側の記述もC言語となる、参照するファイルなどの設定が、)

という性質を持ったC言語は、

  • 言われていたのとは真逆で、
  • 関数型プログラミング言語では無かった
  • 余りに便利過ぎた
  • 1階まで書く事が可能である

のでは無いか?というのが主張の骨子です。

 

 

COBOLのしぼむ理由とモダナイズ

JCLの様な、実行時には、固定され、

  • (最も頑張ったとしても、)複数のファイルの設定を用意し、その中でのみ、場合分けで、ファイルを選べる

のでは無く、

  • ファイルパスを実行時に送り込んで、任意のファイルを選べる

様に出来さえすれば(JCLに相当する部分も、普通のプログラミング言語にしてしまえば)、モダナイズになるとは思いますが、

  • プログラムを0階のみでまかなう

という関数型プログラミング言語からは、確実にずれると思います。

 

 

結論

関数型プログラミング言語の真打ちを、完全に無視している風潮が有るのでは無いか?というのが、このブログの結論となります。

これからも「実用的な真の関数型言語」に関する認識の曇りの横行でプログラミングが嫌いになる人は存在し続けることでしょう。