どの様な話?
大抵のプログラム言語は、
- 関数(陽関数、陰関数を問わず)を基礎としている
のは動かし難い事実だと思います。
では何で、それが関数”型”となるとしょぼくなるのでしょうか?
それを手続型プログラミングをベンチマークとして、公理型、論理型、宣言型の様な、関数型と同期の新技術と比較して述べたいと思います。
結論から言いますと、
- 他は手続型と比べて、出来る事が多い建て付けになっているが、
- 関数型は次に述べる理由から出来る事が少ない
からだと思います。
- 「⚫︎ー⚪︎」をプログラミングだとして、
- ⚫︎を呼ぶ側、⚪︎を呼ばれる側だとすると、
- 関数はーだと
思います。呼ぶ側と呼ばれる側を扼す、ちょうど良い場所だとは思いますが、
大した事を代表している訳では有りません。
プログラミングの抽象でも有りません。すべきことは⚫︎か⚪︎に書いて有ります。
例えるなら、
例えるなら、交通ルールを例に取ると
- 特定の危険な場所で、
- 万人に分かりやすい(即、安全につながる)様にする為に、
- 出来る事を減らしている
のがそれだと思いますが、思いますに、交通ルールだけでは交通は成り立たず、交通の実際の肝は、
- それ以外の場所での普通の運転、給油(充電)、車のメンテ
なのです。
(ーで有る)関数も同様に、出来る事が減っている箇所なのです。
その様な「万人に分かりやすくする為に(即、安全につながる)、出来る事を減らしている」という使命を持った、それだけで表現としては能力を出し尽くしている状態の(ーで有る)関数に、さらに使命(数多の言語より格段に良いものとする)を与えるのは無理だったという事だと思います。
それを言うなら、
それを言うなら、prolog言語が論理型だ、と言うのも変です。
あれは、
- 継承のオーバーロード機能
と
- RDBのSELECT・JOIN機能
をフィーチャーしただけの、「万人に分かりやすくする為に、出来る事を減らしている」箇所(関数似の「パターン」)にさらに使命を無理に与えただけの言語だった様に思います。
AI に向いた言語と言われつつ、⚫︎ー⚪︎の「ーの部分だけ」を使った、append一発芸関数型似言語だった様に感じました。 *1(この話は後述)
結論
これからも「約束された失敗」でプログラミングが嫌いになる人は存在し続けることでしょう。