ハードウェアで例えるなら
ハードウェアのプロセッサで例えるなら、
- データフローを基本原理としたプロセッサ
- 小さい処理を大規模に並行稼働するプロセッサ
- レジスタやメモリを多用し何でも出来るプロセッサ
とか有って、前者ほど
- 「ある部分で」より優位であるが、
- 出来ない事が増える
のは自明の理と言えると思います。
翻って、プログラミング言語では、
- (この話でベンチマークとしている)C言語
や、
- それと同等だと言われている、モダンなGo言語など
が、「何でも出来るプロセッサ」に当たるとすると、それより優位な点があるとされる、
- 関数型言語は、
- 出来ない事が増えないと
- おかしい
はずです。
関数型言語確定の、、
関数型言語確定のErlang言語は、確かに、
- (C言語やGo言語と比べて)出来ない事が増えている
と思いますが、他の関数型と目されている言語は同等の機能を備えています。
明らかに変です。等価交換の法則に適っていません。
それならば、、、
COBOL言語は間違いなく、C言語やGo言語と比べて出来ない事があります。
その分、全ての処理が、まるで純粋関数の様です。
- function定義を、もっと縮めた略語としさえすれば
- 関数型言語になる訳では有りません
し、
- 関数を変数に収めさえ出来れば、
- 関数型言語になる訳では有りません。
そうでは無く、
出来ない事が増えれば、関数型言語に近くなり、その代わりにテストがしやすくなったりすると思います。
過去のいきさつ
昔、「素晴らしい関数型言語というのが有る(はずだ)」と言っていた人間は、
必ず、
- 新しい
言語だと言い張っていました。なので、COBOL言語は自動的に対象外になりました。
青い鳥うんぬんの話かも知れません。
結論
これからも「実用的な真の関数型言語」に関する認識の曇りの横行でプログラミングが嫌いになる人は存在し続けることでしょう。