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

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

約束された失敗 1

どの様な話?

大抵のプログラム言語は、

  • 関数(陽関数、陰関数を問わず)を基礎としている

のは動かし難い事実だと思います。

では何で、それが関数”型”となるとしょぼくなるのでしょうか?

それを手続型プログラミングをベンチマークとして、公理型、論理型、宣言型の様な、関数型と同期の新技術と比較して述べたいと思います。

結論から言いますと、

  • 他は手続型と比べて、出来る事が多い建て付けになっているが、
  • 関数型は次に述べる理由から出来る事が少ない

からだと思います。

  • 「⚫︎ー⚪︎」をプログラミングだとして、
  • ⚫︎を呼ぶ側、⚪︎を呼ばれる側だとすると、
  • 関数はーだと

思います。呼ぶ側と呼ばれる側を扼す、ちょうど良い場所だとは思いますが、
大した事を代表している訳では有りません。

プログラミングの抽象でも有りません。すべきことは⚫︎か⚪︎に書いて有ります。

 

例えるなら、

例えるなら、交通ルールを例に取ると

  • 特定の危険な場所で、
  • 万人に分かりやすい(即、安全につながる)様にする為に、
  • 出来る事を減らしている

のがそれだと思いますが、思いますに、交通ルールだけでは交通は成り立たず、交通の実際の肝は、

  • それ以外の場所での普通の運転、給油(充電)、車のメンテ

なのです。

(ーで有る)関数も同様に、出来る事が減っている箇所なのです。
その様な「万人に分かりやすくする為に(即、安全につながる)、出来る事を減らしている」という使命を持った、それだけで表現としては能力を出し尽くしている状態の(ーで有る)関数に、さらに使命(数多の言語より格段に良いものとする)を与えるのは無理だったという事だと思います。

 

それを言うなら、

それを言うなら、prolog言語が論理型だ、と言うのも変です。

あれは、

  • RDBのSELECT・JOIN機能

をフィーチャーしただけの、「万人に分かりやすくする為に、出来る事を減らしている」箇所(関数似の「パターン」)にさらに使命を無理に与えただけの言語だった様に思います。

AI に向いた言語と言われつつ、⚫︎ー⚪︎の「ーの部分だけ」を使った、append一発芸関数型似言語だった様に感じました。 *1(この話は後述)

 

結論

これからも「約束された失敗」でプログラミングが嫌いになる人は存在し続けることでしょう。

 

*1:prolog言語は私にとってのruby言語であり、railであり、TypeScriptであり、ReactJSでしたので、少し思い入れが有ります。