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

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

なぜすぐのパラダイム回天は無理か? 2

なぜこの場合の「詳細仕様」はOKか?

普通、「詳細仕様」と言われている文書は、

  • 無駄の代表

とされています。しかしここでは新パラダイムの主要な一部として取り扱っています。

それは、

この場合の「詳細仕様」
  • 詳細仕様を「プログラムの部分の、自然言語による、単なる逐語訳」 
  • として捉えていない

点が有ります。

嫌われて来た「詳細仕様」は、必ず、「単なる逐語訳」だったと思います。

それとは違い、上図の矢印で示した「詳細仕様」では、

  • 1つの、原因となる詳細仕様から、
  • プログラムの部分だったり、
  • DBの一部だったり、
  • からに依存されて

います。(もちろん、本質的に、その原因が唯一のプログラムの部分を結果とする場合は、無理に分岐する必要は有りません。)

あくまで、結果としてのプログラムの部分に対する原因で有る必要が有ります。

 

 

結論

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

なぜすぐのパラダイム回天は無理か? 1

どの様な話?

簡単と複雑

なろう系の小説のジャンルとして、追放物が有りますが、そのサブジャンルとして、

開発者の追放物が有ると思います。

上司層が、ソフトウェア開発、保守を

  • 簡単だ

と言って、開発者を切り、その結果、

  • その会社はM&Aの対象になり、最終的に箱になったり、古手の経理にお金を持ち逃げされたりする

という話だと思います。

 

 

その原因は、

その原因は、それら上司層が、

  • 依存関係を狭く見すぎているパラダイム
    (容易に、技術的飛ばしとなる)

を心底信じている為だと思います。(上図、網掛けの無い部分のみを見る)

もちろん、それを良しとした、リーダー教育もその一因だとおもいます。

 

そうでは無く、もっと依存関係広く見れば、

  • (下図、灰赤紫色四角で表している)
  • プログラムの部分の原因となる詳細仕様(2階論理に相当)

が、交絡因子となり、より直接的なプログラムの成り立ちの説明となりますが、

その分、それら資料の維持が、簡単では無くなるのは確かに事実です。

最小限の複雑さ

 

 

なぜすぐは無理か?

狭く見る人間が1人でも居ると、

  • 鶏小屋の狐症候群(「余剰殺傷」 Wikipedia 日本語版)

となり、そうで無い人間を駆逐してしまうからです。

余りにも、前者の人と後者の人の効率性・収益性が違いすぎるのです。

SF小説の話の中なら、不浄猫とかが出て来て、始末を付けたりするのかも知れませんが、普通の社会ではそうは行かず、その代わり、

  • 依存関係を狭く見すぎている人々が、時間の経過と共に、
  • 普通の信賞必罰によって、退場していき、
  • 最終的にいなくなる 

のを期待するより無いからです。いなくなるのに10年かかると思います。

 

 

結論

これからも「なぜすぐのパラダイム回天は無理か?」という問いに対する、救いの無い答えにより、プログラミングが嫌いになる人は存在し続けることでしょう。

 

実用的な真の関数型言語 4

私のいままでの発言

私は、このブログや、それ以前の発言全てに渡って、

  • 関数型プログラミングがまやかしだ!

とかは一切言っていません。コボラーとしての経験から、そういう、

  • 出来る事を減らす代わりに良くなる

事は有る、と(少なくとも20年前から)心底思っていたからです。そうでは無く、

  • 何でこれが関数型なんだ

という批判の方法をしていたと思います。

 

 

ただ1つ、

ただ1つ、

  • (「社会実装を伴う、数学的抽象化の禁忌 4」で、)
  • 制御の反転(Wikipedia 日本語版)の、
  • (中略)
  • 抽象(インターフェース)以外の「データの作りの制約」などについて、消えたのでは無く、隠しただけとし、

との批評をしたのが気がかりでした。

しかし、

  • ビジネスルールとは、2階からの依存関係から「多くが」(個人的には「全てが」)成り立ち、
  • 1階で有る、変数名の置き換えでは、依存関係を消す事は出来ない

つまり、

  • 変数名の置き換えは、地を這うものの処世に過ぎず、
  • 空を飛ぶものには届かない

とするなら、この批評は正当では無いか?と思うに至りました。

クリーンアーキテクチャ(Wikipedia 日本語版では、「ポートとアダプタ」文書で言及)などは、その「変数名の置き換え」という企てにより、

  • 前から有る依存関係を消す事が出来る

と述べているそうですが、そううまくいくとは、矢張り考えにくいです。

 

 

結論

別のWeb記事で、パラダイムの回天には、親世代(おじ世代?)の◯が必要では無いか?という記事を見ました。
それを踏まえると、理想への到達には、まだ10年単位でかかる、と思っておくべきなのかも知れない、と痛感しています。

これからも「実用的な真の関数型言語」に関する認識の曇りの横行でプログラミングが嫌いになる人は存在し続けることでしょう。

 

実用的な真の関数型言語 3

フレームワーク

私の感想に過ぎませんが、フレームワークは、

  • ほぼ全て、出来ない事を増やす目的で、
  • 9割がた、関数型プログラミングをする目的

だと思います。

しかし、フレームワークというのは、言語仕様そのものでは無く、

  • 準公式と言われているものは有れど、
  • 公式が決めているフレームワークは無い

と思います。

関数型言語無しでも、関数型プログラミングは可能で、

ただ唯一、

  • 汎用機ハード、基盤ソフトを公式の無二のフレームワークと定め、
  • それに付随する部分のみを言語仕様とした、
  • COBOL言語こそ
  • Erlang言語と並ぶ、近代稀な、文字通りの関数型言語と言える

と思います。

 

 

知る限りのフレームワーク

フレームワークは、

  • データベースに直接触らせない
  • 入力、出力を保存する
  • 制御の反転をする

などをするのは事実です。でもこれらはJava言語やPHP言語での話で、特段、関数型言語で有ると銘打たれている訳でも無かったです。

通常の前からある言語で、関数型プログラミングは可能だったのです。

 

 

モダンな言語(何でも出来る)を関数型とした理由

例えばコーラの宣伝で「スカッとさわやか」と銘打った場合、

  • それを統計学的に検証する事は可能で、
  • 根本原因の食物を同定することも可能

だと思いますが、モダンな言語を関数型とする理由は、唯一、

  • キャンセルカルチャー
  • COBOL言語など、他言語に携わっている人間の追い落とし

だと思います。

  • 良い事を別の何の関係も無い対象に割り当て
  • その良い事を追い落とす側に使わせない様にする

だけで、何の検証にも耐えないレッテル張りです。

 

 

結論

これからも「実用的な真の関数型言語」に関する認識の曇りの横行でプログラミングが嫌いになる人は存在し続けることでしょう。