夏のプログラミングシンポジウム2012に行ってきた
Beautiful Codeにつられてホイホイ行って参りました。
てことでレポートとは言いがたいメモを残しておきますよ。
理解度低くてもしかすると発表者の方の言いたかったことと多少違ってるかも。
Beautiful Error Handling
ビューティフルコードこのためのN個の指針
プログラムはわかりやすく書く!
- わかりやすくって何?
- わかりやすさよりも効率優先のコードだってある
- 美しさとは?
- 突き詰めると結局個人観点
- なので他人の好みには干渉しないこと
- まずは動くものを作れ
- 動いているものを見て、それをブラッシュアップしていく
- KISS原理
- Keep It Simple, Stupid
- ネストは浅く
- クラス、メソッドだけで2レベル
- for、ifを更に使用するだけで4レベルになってしまう
- ネストが深くなればなるほどに読みづらくなる
- 複数出口は良くない
- return文はひとつにしよう
- 個人的にはこの考えは好きじゃない
- むしろ早く脱出したほうがいいじゃない
- return文はひとつにしよう
- 名前の長さはスコープの長さによって変える
- あちこちで使用されるような変数はしっかりとした名前をつけるべき
- フィールドとかは長く
- メソッド内の変数は多少短くてもいい
- ifスコープ内のみとかなら別に1文字でも問題ないと思う
- あちこちで使用されるような変数はしっかりとした名前をつけるべき
- 共通処理を関数にするようにクラスをどんどん作成する
Rubyを用いた超絶技巧プログラミング
ビスケットにおけるプログラミングの美しさについて
知育ツールとして面白い
- というか普通におもちゃとして面白い
- 今度遊んでみよう
- というか従兄弟に遊ばせてみよう
- 今度遊んでみよう
- 動きがプリセットされているわけではなく、動きを定義していく
Cute Algorithms!
アルゴリズム可愛いよアルゴリズム
- アルゴリズムと言えばソート
- ソートといえばO( n log n )
- 一番遅いソート方法は?
- バブルソートは早すぎる
- 最初からソートされてたらO(n)だから最悪
- 一般的に「遅い」と言われているソートは早い
- QuickSort遅いよね!!
- 最悪計算量O(n)で、最速O( n log n )
- 前半QuickSort後半InsertSortでやれば最遅だよね!!
- バブルソートは早すぎる
- 一番遅いソート方法は?
- ソートといえばO( n log n )
- 非破壊型キュー(Functional Queue)
- 一度作ったデータは絶対に書き換えない
- popしようとすると破壊的である
- だからキューの中身をreverseしてから一番最後を取り除いて再reverse
- ただし実装の都合上内部的にはpopとpush用を用意する
- 一度作ったデータは絶対に書き換えない
まとめ
美しさってなんだっけ?
と、いうのは冗談として。
いや本当に楽しかったです。
特にN個の指針についてはかなり参考になりました。
ありがとうございました!
※後ほど資料へのリンクとか追記するかと……。