堕落したCプログラマのレベル10
元ネタ→http://d.hatena.ne.jp/ytqwerty/20060807#p1
レベル1: Cの暗黙の型変換、符号拡張のルールを暗唱できる。ANSI規格で未定義となっている部分を熟知し、かつ、各メーカーのコンパイラがその部分にどう対応しているかを把握しており、最低限のifdefでパフォーマンスを犠牲にすることなく、ポータビリティーの非常に高いプログラムを書く。
レベル2: sizeof(int) == sizeof(void*)ぐらいは許容できる。若干移植性を犠牲にしつつも、ポインタや整数の変換を駆使して、メモリを1byteも無駄にしないよう心掛ける。
レベル3: 結構どのコンパイラでも対応してるようなので、ちょっとやる気が出ないときは、//でコメントを書いている。
レベル4: GCC拡張やC99の機能を使ってみたら便利だったので、気が付くと普通に使っている。マクロよりもinlineを好む。allocaよりも可変長配列を使う。stdint.hはむしろ無いほうがおかしいと思う。
レベル5: プログラムを書こうと思ったが、いい加減文字列の操作が嫌になってきたので、文字列ライブラリを車輪。しかし、よく見ると、メモリリーク、メモリ破壊を起こしている。
レベル6: プログラムを書こうと思ったが、ハッシュテーブルとか二分探索木を書くところから始めないといけなくて、やめたくなる。しかし、無いものはしかたないので、とりあえずハッシュテーブルを実装したが、そこで飽きた。
レベル7: Boehm GCを使っている
レベル8: ちょっと息抜きにRubyをさわってみたら、便利すぎて、気が付くとちょっとしたツールは全部Rubyで書いている
レベル9: ほとんどのプログラムをRubyかPythonで書いてしまう。手元にあるCプログラムはPerlスクリプトで生成されたもの。
レベル10: Javaの素晴らしさを理解する