概要
- プログラミング言語の比較、ライブラリの俯瞰、開発スタイルについて
- カンナにこだわりがある大工、と言うときに、カンナで釘打ったりしない。言語は選んで。
開発スタイル
- 紙を使え
- 紙に設計を書くの大事.集中は紙からやってくる.キーボードからは集中パワーは出てこない
- プログラムを書くときに,プログラムを紙で印刷するという方法を思いつかなければならない
- デバッグの精神論>http://wise9.jp/archives/7986
目次
情報源
速度の比較
- ∑kをn_i=1->nで計算,n=10000(O(n^2)の計算)
| C | 58ms | 1 |
| Java | 181ms | 3 |
| php | 3455ms | 60 |
| python | 5266ms | 90 |
| Ruby | 14548ms | 250 |
- 1~1000000000までの数を足しあわせ
| C | 236ms | 1 |
| octave | 464000ms | 2000 |
開発スタイル
- オブジェクト指向
- テスト駆動
- 原義的にはテストを先に書くことを表す
- しかし、テストをあとから書いたとしても効用はある
- コード行数nに対して、テスト項目はO(n)である。コードをm回/時間変更するとすると、単位時間当たりのテスト項目数はO(n*m)である。自動でテストすると、テスト項目数をO(n)に抑えられる。
- 他の人と開発する時に、サンプルの代わりになる
- Assert駆動
- きちんとassertを入れながら実装する
- if文でチェックするよりスマート。
- valgrind駆動
- valgrindクリーンネスは常に監視すべき