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

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

語ることが出来ない 2

勿論、大学の先生なら

勿論、ある分野で、著者の名前が代名詞となる様な、世界的な教科書を書いてくれる様な大学の先生なら、背乗りでもなんでもして頂いて、
全く問題無いと思いますが、

私と大差無い様な、あるいはそれより経験も足りなそうな人間が、
自分の営業的都合だけの為に、

  • より素晴らしい手法が有る

と真に新しい技法も引っ提げずに主張し、手続型手法の良さを私するのは、大変不当だと感じていました。

 

勿論、真に新しい技法が有れば

勿論、真に新しい技法が有れば別です。例えば、

  • モナド(副作用を隠す機構?なのだそうですが)の万能な(どんな問題でもプログラミング的修正無しに使える)実装(実際に動く)

は、もし有ればそれで手続型はゲームセットだったと思いますが、

最近見た記事では、モナドデザインパターンの一種だ、と言う風に主張が後退していました。

デザインパターンと言う事は、

  • その実装(実際に動く)は、万能で無い(一々、各問題でプログラミング的修正が必要、現状の「呼ぶ側」のプログラミングの手間と相違無い)

と言うことを意味します。

 

Markdown言語で記述する技術的サイト」で

ある技術的サイト(Markdown言語で記述する)で、私が出会った問題と同じ事が起きていた様です。それは、

と言う言われようと同等の話です。

そのサイトはHatena Blogとは違い、「技術的」な内容に限っていましたが、

  • 関数型プログラミングの主張は無条件に技術的とし、
  • それに対する(多分)手続型側からの反論コメントは技術的で無いとし、
  • 規約に基づき、公式側が削除する

と言う事をするのです。

勿論そのサイトは私もお世話になっており、事を荒立たせる訳にも行きませんが、
前にも言いました通り、

  • 根拠も無い新技術の主張は、仕事で旧技術を使っている人にとっては、具体的に自分の価値を根拠も無しに減らされる
  • 具体的にもらえるお金も、それにより減る

となる事に留意すべきだと思います。
それを少々強い言葉で反論したからと言って、相手のみ技術的で有るとするのは不当だと思いました。

 

結論

これからも「語ることが出来ない」事でプログラミングが嫌いになる人は存在し続けることでしょう。

 

語ることが出来ない 1

どの様な話?

前に、プログラミング言語の中での関数は、

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

書きましたが、

  • 関数は「ー⚪︎(ただし⚪︎の中身は考えない)」

でも良いのでは、と思いました。

いずれにしても、中身は考えないのが特徴だと思います。

 

語り得る?

すると、関数型プログラミングの立場では、プログラミングの中身は語り得ないのでは無いか? と言う疑問が湧きます。

ウィトゲンシュタインは、その著書の論理哲学論考の中で、

  • 複数の論理構造の間で、何が共有されているかを、言語によって語ることはできず、ただ、示すことしかできない。(論理哲学論考 Wikipedia日本語版)

と述べているそうですが、関数型と言う論理構造で、中身を語ることは出来ない様に思います。

それが証拠に、全ての関数型プログラミングを推す立場の文書では、プログラミングの内部について、

  • 手続型言語の良い所を自分(関数型)だと言い、
  • 悪い所を手続型(やオブジェクト指向)だと言う

しかしません。例外無くです。

なぜなら、

  • 関数型の論理構造では中身を語り得ず、
  • 子供の指を切る形で、自分が言う

以外に手が無いからだと思います。構造的背乗りの元凶です。

 

結論

これからも「語ることが出来ない」事でプログラミングが嫌いになる人は存在し続けることでしょう。  

約束された失敗 4

生活にあまねく関わっている関数

皆様全員が日常生活で、「関数」に関わっていると思います。

それは、

です。あれらの実行(ボタン押下)の操作は、「関数」だと思います。

さらにブラウザやスマホアプリでは、

  • 実行(サブミット)は、プログラムで擬似的に行う事が出来ない(そうしようとするプログラムを排除する)様になっており、
  • その人が行った、と出来、買い物でも使える様になった

と言う良い性質も有り、関数の明るい部分です。

 

暗い部分も有り

マイナンバーカードを写真撮影で提出するアプリが有りますが、どうもスマホの新機種に対応していない様で、

  • 枠に合う様にすると、100%文字がぼける
  • 文字がぼけない様にすると枠に合わない
  • (私の持っている機種だと)0.5xにすればマクロが効くはずなのに、それで撮影する設定も無い

となってしまい、アプリの発行元も「私の方が悪い」と思っている様です。

とにかく関数の範囲で話を進めると、すぐ法律問題とかになってしまいます。

 

関数が悪いとは言っていません。大概の言語は関数を基礎としています。

ただ、プログラミングの観点からすると、関数のみを基礎とすると、紐を引っ張って当てる籤並みの操作性となってしまい、正しさも神のみぞ知るです。

 

結論

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

 

約束された失敗 1+2

でももしかすると、

  • 関数型で手続き型(あるいはもっと複雑な型)を推しはかろう

とするのと、

  • 可視化(問題をある基準で分類し、重い順から管理する)

のは同じ事を言っている(抽象化と称して、その実、ざる)可能性も有ります。

自動テストも決まって関数の形ですが、それで済むのかです。

 

結論

この文書に結論は有りません。