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

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

歴史的経緯に基づく行き過ぎ 1

どの様な話?

私は現在60歳ですが、50歳の頃から歯ぐきが下がりだし、物を食べると痛くなる様になりました。

それがどんどん悪化するのですが、原因として、

  • 本当に痛い所は本当に痛いので、脳が歯ブラシを当てる事を拒否する
  • その事を当人(私)は全く気づかない

からでした。

たまたま口の中用の水鉄砲(ウォーターピックとかジェットウォッシャーとか)が目に付き、それを使うと、

  • 痛い所でも当てられ、
  • 痛い原因の歯石(?、私としては歯石では無く、露出して汚染された歯根の様な気がしてなりません)の痛みを取る効果が有り(水溶性の、痛みの元を除去する?)、
  • 歯石(?)と歯の粘着力も弱まり、
  • 歯ブラシや楊枝を当てても大丈夫になり、改善の糸口になる

と言う効果が得られ(個人的感想です)、小康を得ることに成功しました。
(なお、文字通り小康で、歯ぐきが下がる件は全く治っていません。)

 

だから〜、どの様な話?

  • 特定のハードウェア(汎用機)に余りにも依存し、他のハードウェア(PCサーバー)が出てからはどうにもならなくなった。
  • 携わっていた人たちは、何とかラーとか言われて、一方的に非難された。

事に怖気をなした後の人が、

  • 余りにイタイので、脳がハードウェアに関心を向ける事を拒否する
  • その事を当人(後の人)は全く気づかない

のでは無いか? と言う話です。

特定のハードウェアに依存しない様に、API を公開した所で、そのAPI の使い方は(そんなに厳密には)規定されている訳でも無く、
使い方次第で、実行時間の1分が100分にもなる訳で、API小康状態を得るに止まる物だと、思います。

 

形而上的関数型プログラミングは?

  • 全部歯を抜いてやろう。
  • その後の事(ハードウェアの更新)は知った事では無い。

と言うスタンスに見えます。これは歴史的経緯に基づく行き過ぎで有ると、断ずるべきで有ると、私は強く思います。

 

結論

これからも「歴史的経緯に基づく行き過ぎ」でプログラミングが嫌いになる人は存在し続けることでしょう。

 

根拠の無いイノベーションの主張 6

根拠の無いイノベーションの主張の悪影響

根拠の無いイノベーションの主張、つまり

を求めるか否かで、

  • 一人前のソフトウェア技術者の1/10 や 1/100 のパフォーマンスしか発揮出来ない技術者になる

可能性が有ります。

能力10倍のソフトウェア技術者とか、能力100倍のソフトウェア技術者とか言う、実務家の間で声なき声として時々耳にする考えですが、

  • 実務で使っているハードウェアを活かすか、
  • コストをかけてハードウェアの要請から外れた「ソフトウェアのイノベーション」を選ぶか、

の違いのみで、そうなってもおかしく有りませんし、凄い技術者は

  • ハードウェアを活かしているだけでその優位性を得ている

のかも知れません。

MAC PCとWindows PC

私はずっと家ではmac miniで、今はAppleシリコンのやつ*1 を使っていますが、仕事ではWindows PCを使っています。

はっきり言いまして、かつてのHDDのみのMAC PCは画面動作がカクカクしていました。それに対してWindows PCは、人間にマッチした動作レスポンスを実現していました。
その代わりWindows PCは、限界を超えると落ち、限度を超えずとも何千時間で落ちました。
人間にマッチした動作レスポンスを実現する為に、限度のある「人間対応の処理」を追加で加えていたのかも知れません。(Windows Serverは除く)

それがSSDのみのMAC PCになった途端、MACなのに人間にマッチした動作レスポンスになりました。
MACが思い描いていたハードウェア更新が成就したのだと思います。

結論

これからもハードウェアの更新を伴わない、「根拠の無いイノベーションの主張」の巻き添えでプログラミングが嫌いになる人は存在し続けることでしょう。

 

 

 

*1:室温33度、湿度70%で、Youtubeを見続けても、CPU 平均で42,3度を超えないのは凄いです。

責務と入出力のずれ 1

どの様な話?

関数は、

  1.  得やすい自然な値の入力
  2.  変換1
  3.  責務(その世界の支配的な少数の前提)の実装
  4.  変換2
  5.  欲しい自然な値の出力

と言う構成を取ると思います。

そうなると、

  • 外から見た責務と実際の責務にずれが生じる
  • 何を以て単一の責務というのか解らなくなる(外から見た? 実際の?)

と思います。

それを解決するために、

1つの関数で無く、複数の関数をまとめて、1つのクラスにした場合、

  • クラス内で終始する複数の責務が同じクラス内に出来てしまう。

と思います。

一番自然なのは、

一番自然なのは、

  • 複数の責務がクラス内に有っても良い
  • それら全ての責務が1つのクラス内で終始していさえすれば良い
    (utilsクラスなんてのも、一理有ると思います。)

だと思います。1つのクラスを1つの責務のみに強制するのは不合理だと思います。

結論

不当に厳しい「1つのクラスに1つの責務のみ」という不自然な制約を課せれる事で、これからも「責務と入出力のずれ」により、プログラミングが嫌いになる人は存在し続けることでしょう。

根拠の無いイノベーションの主張 5

もう放談、放言に徹しようと思います

なら「公理的プログラミング」はどんなハードウェアによって裏付けられているのか、も、考えてみました。これ以降、完全な妄言です。

「公理的」というと、感覚的に言って、

  • その世界の支配的な少数の前提で、
  • 大まかである

だと思いますが、これは、AIの学習用のプロセッサに対応しているのでは無いかと思いました。

何で思ったか?

前から好きで、プログラマーなのにも関わらず、日経エレクトロニクスを購読しています*1 。

スーパーコンピュータの京や燕の知識もそれで読んだだけの範囲でしたが、AI の学習用のプロセッサ(テンサーフローとか)についても書いてあり、

  • 問題毎に異なる、人間の思い付かない分類基準で、
  • 通常なら1データ何百bit にもなるはずが、1データ10bit とかでも大丈夫

と言う特徴が有ると読めました。それが、

  • その世界の支配的な少数の前提で、
  • 大まかである

「公理的」と似ているのでは無いかと思った次第です。

結論

放談、放言編なので、特に有りません。

 

*1:会社に入ってすぐ、お金も手に入ったので購読しようとして電話したら、係のおねいさんが「ぼく、この雑誌は凄く難しいのよ! 大丈夫?」とか聞かれました。私は「工学部の何学科を今年卒業して、技術者として就職しました」、と言い、そうすると売ってくれる事になりましたが、かなり失礼でした。
最近はID を登録すれば、電話応対無しに買えるので、便利に成りました。