Friday, April 10, 2009

QCon Tokyo 2009 Day1 General Session 2 ビューティフルコード まつもとゆきひろ

自分のためのメモ書きです。

おそらくオープンソースカンファレンス2009での内容とたぶんにかぶっているのかも。
http://d.hatena.ne.jp/LukeSilvia/20090207/p1

コードは工業製品では無い
コードは設計である

車でいえばデザイン
触ってわかるものがないと良し悪しの判断ができない
ソフトウェアにも名作、駄作がある

コードは実用品である

実用に供してナンボ
「用の美」 目的に合致しつつ美しいこと

コードは読み物である
コードは人を感動させる

どういうときに感動するか
パワー できないものをできるようにする
効率 アルゴリズム
O記法 データ量に応じた計算量

O(1)
O(n)
O(n * log(n))
O(n ^ 2)

Rubyにもあった。吉田さんのパッチによりRubyは文字コード非依存
perl, pythonは内部でunicodeで保持している。
rubyはM17N。

ブルックスの法則(人月の神話)
「遅れているプロジェクトに人を投入すると、そのプロジェクトはもっと遅れる」


簡潔さは力なり
"succintness is power" by Paul Graham

まつもとさんは言語オタク
そのまつもとさんの考察
「言語はより抽象的に記述する方向に進化している」
ブルックスの生産性不変の法則
本質に集中
実行可能擬似言語(アルゴリズム説明のサンプル記法)



冗長の排除
DRY
コピーして作るとバグもコピーされる



class User < ActiveRecord::Base
end
動的にエンティティを定義

手抜きは美しくない
苦労を見せびらかすのは粋じゃない
水鳥のように・・・水面は優雅に、水中は足をバタバタ

シンプルは美しい
シンプルとは何か
現実は複雑だ
人の心も単純じゃない
単純さの罠がある
ソリューションが単純になることがゴール
システムが単純だとヒューマンプロセスが複雑(?)
ヒューマンプロセスが単純だとシステムが複雑(?)
人間にフォーカスして考える
バランスが大事 唯一の正解はない


外面の美
人間がどう感じるか
時代・前提によって変化する

内面の美
コードに内在

コードはアートだ
製品ではなく作品だ
したがってコードを書く人は
歯車ではない 作業員でもない
でも納期があり、顧客がいて、チームで動く

自覚や自発が必要だ

美しいコードとは何か
理解に基づいたコード
人間(内面)
機械(外面)

「理解」が鍵


大きな誤解
ソフトウェア工場という考え方
シンプルは善
アーティストは仕事にならない


まとめ

    * コードは美しい
    * コードはアートだ
    * プログラマはアーティスト

そういう自覚が大事


技術者としての夢
一生楽しく生きたい
楽するために努力する
あと30年から40年ぐらいはプログラムの開発をしていきたいな
一日一回はコードを読んだり書いたりする(プログラマ養成ギブスみたいなもの)

プログラミングの楽しさは変わらない

Enjoy Programming

4/11追加
よくまとめられている記事があったので
「ソフトウェアは工業製品ではない」、Rubyのまつもと氏が講演 - @IT


No comments:

# スクラムマスターを雇う時に聞いてみるとよい47個の質問

  # スクラムマスターを雇う時に聞いてみるとよい47個の質問 スクラムマスターへの質問というPDFがあるので、回答してみた。 定期的に自分の回答がどう変わっていくのか楽しみだ。 Scrum Master Interview Questions: Free Download of...