プログラマーさんのブログ

最近,パソコン関係の雑誌で紹介されていて見てみると,面白かったです.
「誰が書いても同じコード」は大事なことなのか - yvsu pron. yas
私は修士は工学,博士は理学で取って,その後も工学系・理学系をフラフラとしているので,色々と考えさせられるものがありました.

「誰が書いても同じコード」って,数学で言うと,誰が証明しても同じ証明になるとかでしょうか.
可能なこともあるし,多様な方法が生まれてしまうこともあるでしょうねぇ...
練習問題なら良いかもしれません.「幾何学的なアプローチで証明せよ」とか「代数的な...」とか,「○○の定理を用いて証明せよ」とか.

共感できたところは,以下.

今の大手SIerのやり方の問題は、スキルのあるプログラマの能力を殺してしまっているところにあると思います。だめな人に失敗させないように、がちがちに縛るんだけど、だめな人はやっぱり失敗するし、できる人もがちがちに縛られて力を発揮できない。

「誰でもメンテナンスできるコード」にするために、必要十分なドキュメントとコーディング規約を守る以外は、開発者の自由にさせたほうが、全体の生産性はきっとあがるよね。

ドキュメント書きに時間を取られ,コーディング規約をチェックしながらもたもたプログラムするなんて,全然アジャイルじゃない...

私なら,まずはどんなコーディングでもいいから目的(仕様)を達するプログラムを書く.数学でいうと,どんな方法でも良いからまずは論理的に正しい数学的手法で証明する.
次に,プログラムなら美しくリライトしていく.証明なら,より簡潔な(オッカムの剃刀を意識した)方法を考えて修正していく.

そうしたら,誰がやっても,方向性が同じなら似たものに収束するでしょうし,目的が同じでも方向が違えば違う作品になっていくでしょう.
違うものになっても改良されていっているので美しくなっているはずだし,同一になる必要は全く思い浮かびません.
考えていくと,「同一のコード」有害論者になりそうです.

Linuxカーネル見たって,Linusさんが書いた場所が分かるくらい結構個性的な塊になってると思います.
誰が書いたコードか分かるくらい個性的ですが,内容は理解できる.そんなプログラミングが良いと思っています.


プログラマースキルアップはして欲しいです.
例えば整数2変数の値を入れ替えるswapで,テンポラリ変数を使わない有名なxorを使うものもありますが,あれは良いとは言いませんが(処理系依存が高そうですので),見ただけで分かるくらいにはなって欲しいです.

誰が書いても同じプログラムになるって...じゃ,レベルの高いアルゴリズムを使ったプログラムを書こうと日夜勉強している自分って,なに?いらないの?って思っちゃいます.