堕落した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: ほとんどのプログラムをRubyPythonで書いてしまう。手元にあるCプログラムはPerlスクリプトで生成されたもの。

レベル10: Javaの素晴らしさを理解する