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

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

改良しようとしているのに出来ない 1

どの様な話?

プログラムを改良しようとすると、かえって複雑で読みにくくなる事があります。これは、プログラミングに自然法則に準ずる何か」が有って、それの制限を超えて改良しようとするからだと思います。

コボラーの場合

コボラーの場合、構造化プログラミングが一応の到達点でした。そしてそれによるコード群*1 1つ1つに特段の意味を見出そうとはしていませんでした。

以下、プログラムの全部/一部(脚注中の「コード群」)を「プログラムの部分」と称します。(このブログでは何回かその名前で言っていた為)

オープン化以降

PCサーバーが使える様になった頃の言語は、変数名に使える文字数が増え、プログラムの部分に意味を持った名前が付けられる様になりました。

ハードディスクの容量が増え、後から使いたい値を取って置ける余地が増え、プログラミングの自由度は増しました。

自由度は増しましたが、それが当然となった以降、「さらなる」改良をしないと改良にならなくなるのもまた摂理です。
プログラムの部分1つ1つに意味の有る名前を付けたいと思うのは、万人に納得の行く方向だと思います。

自然法則に準ずる何かとは?

  • プログラムの部分は同時に起きる、雑多な意味の乗り合い

で有る時に最も効率が上がる、という事では無いでしょうか?

もちろん、雑多な意味の乗り合いを、1つ1つの意味毎にバラして、別の関数にしても良いかも知れませんし、その様な事は関数を持つ全てのプログラミング言語で、大抵の人間なら(初心者であっても)確実に行われています。これはファクトです。

制限を超えるとは?

どんな改良をすれば、自然法則に準ずる何かの制限を超えるのでしょうか?

それは、

  • 意味優先で、プログラムの部分に、同時に起きない内容を乗り合わせてしまう

場合だと思います。
コボラー崩れの年寄りは絶対にしないと思いますが、その様な背景がなければ、そうしてしまう事に何ら不思議は有りません。

しかしながら、オープン化以降も、そこまでの事が出来る程の進歩は無かったと思います。

結論

同じ意味でも同時に起きない事は、(例えば)別のメソッドに分けるとかせざるを得ず、これからも「改良しようとしているのに出来ない」事でプログラミングが嫌いになる人は存在し続けることでしょう。  

 

*1:命令コード(instruction code)のまとまりであり、構造化定理では部分プログラム(subprogram)と定義されている。部分プログラムはステートメント(statement)コードブロック(code block)サブルーチン(subroutine)の総称である。 構造化プログラミング Wikipedia 日本語版