コード進化論
10年後の自分が言っている。10年前の自分よ、もっとがんばれ。って。
心に10年後の自分を宿し、がんばるのみ。
————————————-
残りの人生を負債にするか資産にするか、それは今日、自分で決める。
————————————–
※本文のオープンソースは、公開されているコードを指しており、広義のオープンソースです。
君は進化するコードを書けるか?
進化するコードとは?
githubのフォークが分かり易い。githubのフォークとは、つまり進化だと思う。
githubだけではない、オープンソースの全てが進化するコードだと思う。
ブログに書いた数行のコードだって十分オープンソースだ。
これらは全て、進化する可能性がある。
どういうことか?
書いたコードが誰かの手に渡り、そしてそこでも動き出す。
その環境に適応するために、一部書き直されたり、付け加えられたりするだろう。
これがコードの進化だ。
ダーウィンの進化論を僕なりに要約すると、
進化できた種だけが生き残ることができる。と書いてある。
コードもまた然り。
進化できないコードは自然淘汰によって消えてしまうのだ。
この考え方を飛躍させると、
オープンソース以外のコードは消える運命にある。と言える。
法人などの組織によって管理、運用されているコードだって、進化の余地はある。
しかしオープンソース以外のコードの進化は、あまりにも複雑すぎる。
複雑な経済活動に巻き込まれ、コードの進化を媒体する人間は報酬なしには動かないからだ。
遺伝子の情報(DNA)は、4種類の塩基で記述されているんだそうだ。
コンピュータ用語でいうとそれは4ビットで、
人DNAの場合は、その容量は大体800MBくらいなるんだそうだ。
つまり「人」を作るソースコードは大体CD一枚分くらいっていうこと。
そしてそのコードは、どえらく汚いらしい、そりゃもうスパゲッティなんてもんじゃない、
とても読めたもんじゃないし、逆コンパイルなんてとてもできそうにない。
要らないコードもたくさん含まれている。エラとか尻尾とかは代表的な例で、
それ以外にも要らないコードで溢れている。現在では存在しないウイルスに抵抗するためのDNAもあるらしい。
まるで書いたけど使われてないコードのように、または昔使ってたコードがいつまでも残っているように。
実は、現在の人間を形作るのに必要なDNAは、今の10/1くらいだ。という学者もいるらしい。
なんでそんなに汚いんだ?
それはたぶん、行き当たりばったりに進化してきたからなんだと思う。
トライ&エラーを繰り返し、たまたまその環境に都合よく適合できた種だけが生き残ってきた。
だから要件定義とかロードマップとか、後方互換とか上位互換とか、そんなのまったく無視してて、
そこにはアジャイル開発とかオブジェクト指向なんてものもなく、
ただただ行き当たりばったりに、都合よく進化してきたコードだけが生き残ってきた。
それが生命なんだと思う。
コードが汚い。
そもそもコーディング規約に従っていないとか、コアの記法に従うべきだとか。
汚いコードは可読性が悪い。可読性の悪いコードはバグが入りやすく、結果的に品質の低いプロダクトになってしまう。
効率が悪い。
頭がよくて経験豊富なプログラマーは、効率のよいプログラミングを心得ています。
初級者が何十行も書いていたコードを上級者は2~3行に直し、さらに実行スピードも上げてしまうかもしれません。
何重にも重なっていた繰り返し処理を、上級者は1回だけに書き直し、安定したシステムを構築するかもしれません。
初級者は上級者のコードをよく読んで、効率のよいコーディングを心がけましょう。
書き方がダサい。
オブジェクト指向とか、テスト駆動とか、アジャイル開発とか、
その時々の流行みたいなものですが、最新の開発手法には先人達の英知がぎっしり詰まっているのです。
エンジニアならこれら最新の開発手法を取り入れ、古くてダサい書き方は止めましょう。
これらは全て正論であり、大事なことです。
しかしもっと大事なことがあります。
それは動かすことです。
僕はここに、コード進化論を提唱します。
コードが汚い。効率が悪い。書き方がダサい。これらは大事なことですが、もっと大事なことがあります。
コードの書き方が汚い、コーディング規約に従ってない、コアの記法に従うべきだとか、
色んな理由でdisられているコードや作者を、ネットで見かける事がある。
可読性が低いコードはバグが入り易いので、可読性を上げましょう。
正論だ。
多くは直接じゃなくて、間接的で本人には分からないようにdisってたりする。
僕はここに、コード進化論を提唱する。
動かないコードは死んでいる。動くコードは生きている。
動いてインターネットという海を泳ぐコードだけが進化できる。
プログラマーはプログラムを動かしてインターネットの海を泳がせることを第一とする。
可読性、保守性、セキュリティなどは二の次だ。
どんなに汚くてもいい、とにかく動かすこと。
そしてインターネットの海に放すこと。
具体的に言うと、ブログやgitでコードを公開したり、
実際に使えるプログラムやサービス、アプリケーションなどを公開したりすること。
もう一度いう、どんなに汚くてもいい、
公開しなければ、進化は始まらない。
ps
EVERNOTEで検索したらヒットした。
読んでみたら面白かった。
「これ、俺が書いたの?」と思ってググってみたけどヒットしなかった。
つまり、俺が書いたのか。
確かに、俺が書いたような文章だ。そうするとこれはブログの下書きだろうか。
そういわれれば文章に変な繰り返しもある。
でもまあ、せっかくだから公開してみることにする。
前の記事: [その2]githubでbasercms本家の更新に追従しながら独自appを構築する
次の記事: 【CentOS6,5-】VirtualHostが反映されない
2016/03/30 | 直情径行
コメント/トラックバック
トラックバック用URL:
この投稿のコメント・トラックバックRSS