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

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

「高階関数」のおかしさ 2

プログラミング言語の関数は

プログラミング言語の関数は、その表現力の制限から、

  • 1階だけ

なのでは無いでしょうか?
プログラム言語で、「顔と視線は宙吊りに」なんて事を表現出来るとは、到底思えないからです。

ただ、プログラミングの世界では、身近な範囲に高階(2階)の論理が潜んでいるので、「高階関数」が無いと言って嘆く必要も無いと思います。

それは、

  • プログラムの全ての呼び方による動作が、所与の名前と合致するか?
  • プログラムの全ての呼び方による動作が、所与の仕様と合致するか?

などです。(追加開始 2024/5/17 PM8)「動作」に対して(追加終了)「全ての」が付いている述語なので、(追加開始 2024/5/17 PM8)少なくとも(追加終了)2階論理だと思います。

たとえ、
いくら関数に静的な型をつけた所で、プログラミング言語の範囲では(追加開始 2024/5/17 PM7)プログラミング言語の関数で量化可能な)「数字」よりも拡張された対象に対して、(追加終了)全ての」を表現出来ないので、1階に留まるのに対し、
名指しや要求と、プログラミングの動作との対比の議論や、テストは自然に2階になると思います。

(追加開始 2024/5/17 PM7)プログラミング言語の中には単なる

  • 引数に関数をとれる関数

の事を「高階関数」と呼んでいるそうですが、どの様な対象を量化出来ているのでしょうか? 関数を変数に収めた所で「全ての」は表現出来ないと思います。
この様な誇大な命名は単なる優良誤認にとどまらず、初学者に対する拭がたい毒だと思います。(追加終了)

高階先に立たずです。

 

特に名前は

特に名前はプログラミング言語では漢字50文字程度を超える事はあまり無く、

  • 短く、余りに簡潔なので、
  • 私的言語になり易く
  • 「合致するか」の議論については困難さを伴う

と思います。
私は、その様な困難に立ち向かうよりは、星座程度の、意味の薄い、他と区別出来さえすれば良いで十分なのでは無いかと、(前から)思っています。

やさしい名前を付けた人が必ずしも愛されやすいとは限らないのは、過去よりの定説だと思います。名前の意味を成就させるのは、非常な困難を伴うと思います。

 

結論

解像度の比較的落ちる、高階の議論をしつつ、事後の情報も踏まえた上で、システム全体で1階に出来る所を探して、そこは自動テストをすれば良く、
そうでなく、あくまで「高階関数」を求めるのであれば、そのせいでプログラミングが嫌いになる人は存在し続けることでしょう。