コード進化論

2016/03/30 | 直情径行 | hideichi

10年後の自分が言っている。10年前の自分よ、もっとがんばれ。って。
心に10年後の自分を宿し、がんばるのみ。
————————————-
残りの人生を負債にするか資産にするか、それは今日、自分で決める。
————————————–
※本文のオープンソースは、公開されているコードを指しており、広義のオープンソースです。

君は進化するコードを書けるか?

進化するコードとは?
githubのフォークが分かり易い。githubのフォークとは、つまり進化だと思う。
githubだけではない、オープンソースの全てが進化するコードだと思う。
ブログに書いた数行のコードだって十分オープンソースだ。
これらは全て、進化する可能性がある。
どういうことか?
書いたコードが誰かの手に渡り、そしてそこでも動き出す。
その環境に適応するために、一部書き直されたり、付け加えられたりするだろう。
これがコードの進化だ。
ダーウィンの進化論を僕なりに要約すると、
進化できた種だけが生き残ることができる。と書いてある。
コードもまた然り。
進化できないコードは自然淘汰によって消えてしまうのだ。

この考え方を飛躍させると、
オープンソース以外のコードは消える運命にある。と言える。
法人などの組織によって管理、運用されているコードだって、進化の余地はある。
しかしオープンソース以外のコードの進化は、あまりにも複雑すぎる。
複雑な経済活動に巻き込まれ、コードの進化を媒体する人間は報酬なしには動かないからだ。

遺伝子の情報(DNA)は、4種類の塩基で記述されているんだそうだ。
コンピュータ用語でいうとそれは4ビットで、
人DNAの場合は、その容量は大体800MBくらいなるんだそうだ。
つまり「人」を作るソースコードは大体CD一枚分くらいっていうこと。
そしてそのコードは、どえらく汚いらしい、そりゃもうスパゲッティなんてもんじゃない、
とても読めたもんじゃないし、逆コンパイルなんてとてもできそうにない。
要らないコードもたくさん含まれている。エラとか尻尾とかは代表的な例で、
それ以外にも要らないコードで溢れている。現在では存在しないウイルスに抵抗するためのDNAもあるらしい。
まるで書いたけど使われてないコードのように、または昔使ってたコードがいつまでも残っているように。
実は、現在の人間を形作るのに必要なDNAは、今の10/1くらいだ。という学者もいるらしい。
なんでそんなに汚いんだ?
それはたぶん、行き当たりばったりに進化してきたからなんだと思う。
トライ&エラーを繰り返し、たまたまその環境に都合よく適合できた種だけが生き残ってきた。
だから要件定義とかロードマップとか、後方互換とか上位互換とか、そんなのまったく無視してて、
そこにはアジャイル開発とかオブジェクト指向なんてものもなく、
ただただ行き当たりばったりに、都合よく進化してきたコードだけが生き残ってきた。
それが生命なんだと思う。

コードが汚い。
そもそもコーディング規約に従っていないとか、コアの記法に従うべきだとか。
汚いコードは可読性が悪い。可読性の悪いコードはバグが入りやすく、結果的に品質の低いプロダクトになってしまう。

効率が悪い。
頭がよくて経験豊富なプログラマーは、効率のよいプログラミングを心得ています。
初級者が何十行も書いていたコードを上級者は2~3行に直し、さらに実行スピードも上げてしまうかもしれません。
何重にも重なっていた繰り返し処理を、上級者は1回だけに書き直し、安定したシステムを構築するかもしれません。
初級者は上級者のコードをよく読んで、効率のよいコーディングを心がけましょう。

書き方がダサい。
オブジェクト指向とか、テスト駆動とか、アジャイル開発とか、
その時々の流行みたいなものですが、最新の開発手法には先人達の英知がぎっしり詰まっているのです。
エンジニアならこれら最新の開発手法を取り入れ、古くてダサい書き方は止めましょう。

これらは全て正論であり、大事なことです。
しかしもっと大事なことがあります。
それは動かすことです。

僕はここに、コード進化論を提唱します。
コードが汚い。効率が悪い。書き方がダサい。これらは大事なことですが、もっと大事なことがあります。

コードの書き方が汚い、コーディング規約に従ってない、コアの記法に従うべきだとか、
色んな理由でdisられているコードや作者を、ネットで見かける事がある。
可読性が低いコードはバグが入り易いので、可読性を上げましょう。
正論だ。
多くは直接じゃなくて、間接的で本人には分からないようにdisってたりする。

僕はここに、コード進化論を提唱する。
動かないコードは死んでいる。動くコードは生きている。
動いてインターネットという海を泳ぐコードだけが進化できる。
プログラマーはプログラムを動かしてインターネットの海を泳がせることを第一とする。
可読性、保守性、セキュリティなどは二の次だ。
どんなに汚くてもいい、とにかく動かすこと。
そしてインターネットの海に放すこと。
具体的に言うと、ブログやgitでコードを公開したり、
実際に使えるプログラムやサービス、アプリケーションなどを公開したりすること。
もう一度いう、どんなに汚くてもいい、
公開しなければ、進化は始まらない。

ps
EVERNOTEで検索したらヒットした。
読んでみたら面白かった。
「これ、俺が書いたの?」と思ってググってみたけどヒットしなかった。
つまり、俺が書いたのか。
確かに、俺が書いたような文章だ。そうするとこれはブログの下書きだろうか。
そういわれれば文章に変な繰り返しもある。
でもまあ、せっかくだから公開してみることにする。

前の記事:

次の記事:

2016/03/30 | 直情径行

コメント/トラックバック

トラックバック用URL:

この投稿のコメント・トラックバックRSS




管理人にのみ公開されます

前の記事:

次の記事:

【二種免許】深視力検査合格のコツや裏技
【二種免許】深視力検査合格のコツや裏技

東京では免許更新の際、ゴールド免許の方や島嶼にお住まいの方以外は、鮫洲...

no image
[cakephp4] dirtyとoriginal

patchEntityすると、変更したところと、変更前の内容が取れる。...

BaserTestCaseで特定プラグインの有無でfixturesを振り分ける
BaserTestCaseで特定プラグインの有無でfixturesを振り分ける

baserCMSのTestCaseで、特定のプラグインの有無を調べて、...

kusanagi で letsencryptが更新されない
kusanagi で letsencryptが更新されない

結論から、アパッチを直接再起動すると直るかも。 systemctl r...

baserCMS プラグインのアップデートスクリプト
baserCMS プラグインのアップデートスクリプト

(参考) http://project.e-catchup.jp/pr...

→もっと見る

PAGE TOP ↑