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

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

何指向でもダメな時はダメ 5

使っていたPCで電源ボタン長押し

使っていたPCで、電源ボタン長押しをせざるを得ない事が(時々有るのですが)有り、

何でなのか少し調べたのの1つとして、

  • ソフトウェア分野における、レースコンディションというのはどの様な
    位置付けになりますか?

というお題を、この前入った有料Geminiで使えるコースの1つの、

  • 「Deep Research with 2.5 Pro」*1

で質問しました。

最近のマルチスレッドのPCで、レースコンディションが固まる原因では無いか?と思ったからです。

その中に解せない記述が有りました。

 

 

不変オブジェクト?

  • 6.4. イミュータブルオブジェクト(不変オブジェクト)の活用 (Utilizing
    Immutable Objects)*2

が、

  • 別のスレッドがその中途半端な状態を読み取ってしまうといったレースコンディションの典型的なシナリオを根本から排除します。

というのです。

 

 

関数型プログラミング界隈の論調そのもの

不変オブジェクトは出来て以降、

  • 使われるだけ

となるはずです。そして、

  • 往々にして、不変オブジェクトは、末尾に連番を付けた複数の(同用途の)ものが同時に使われる事が多くなり、
  • それらを選択して選ぶ

事が必要となり、

  • 複数の不変オブジェクト+それらを選択

の際に、結局はレースコンディションが出来てしまう事が、十分に有り得ます。

「根本から排除」というのは、プログラム全体を考えた場合、余りに早計です。

 

 

一事が万事

前に「現象学的観点 1」で述べた、「制御の反転*3」でもそうですが、

  • 細部で良い(「根本から排除」の様な)結果を得る
  • 根本解決だという
  • しかし、その1つか2つ外側まで視野を広げると、全く改良されていない
  • かえって、見通しが悪くなってしまう場合も

というのが、(批判されるべき)関数型プログラミングを信望する人間の、典型的な論調です。

 

 

結論

これからも「何指向でもダメな時はダメ」で、良くなっていない案を根本的解決と喧伝される事による、一種の出版バイアスで、プログラミングが嫌いになる人は存在し続ける事でしょう。

 

 

 

*1:調査のプランが示され、それに合意すると、30分以上、調査の時間がとられ(その間、アプリから離れている事を勧められる)、A4 PDFに普通の文字でそれ程隙間無く、(今回は)16ページに渡るレポートが出る。

*2:状態が変化しないため、複数のスレッドが同じイミュータブルオブジェクトを同時に参照しても、データ競合が発生する余地がありません。

*3:反転した所で、不利な依存関係は無くなっていない。見ない様にしているだけ‼️‼️‼️