ハードとソフト

Twitter経由、「ハードウェア」プログラマと「ソフトウェア」プログラマ
http://chasen.org/~taku/blog/archives/2009/07/post_827.html

とりあえず自己評価してみた。

「ハードウェア」プログラマ

  • 「最適化」という言葉が好き
    • ロマンです
  • 外的な制約(メモリ/速度/ディスク)がある方が燃えるし、真の能力を発揮できる
    • 燃えるね。ボトルネックとか限界量(帯域とかキャッシュサイズ)があるとそのぎりぎりまで詰めたくなる。
  • 逆に制約がないと何していいのかわからず、平凡なアイデアしか思いつけない
    • よく分からない
  • 開発言語は、制約から決定する
    • 制約がきつければ使えなくなる言語がでてくるのは当然。普段は制約というより用途やプログラミングのしやすさで選んでます。
  • O(n) の計算量でも、その定数項を気にする
    • 気にする時は気にする。最近気にしないことも多くなってきたけど。
  • 専用ハード好き (地球シミュレータ, メーンフレーム)
    • GRAPE-DR www
  • 定量評価ができないような仕事は興味ない
    • そうでもない
  • 固定長データ
  • バイナリデータ
    • 2年間放置していたバイナリデータとかさわりたくない、みたいな状況を回避するため最近XMLに浮気中。オセロの棋譜データは現在XMLで管理されています。性能とか考えはじめると固定長云々の前に全部オンメモリとか言い出す気がする。
  • 再帰なんてもってのほか
    • スタックオーバーフローしない限りはいいんじゃねーの
  • スピード狂
    • なる時はなる。チューニングたのしいです
  • CPUがどれくらいクロックを消費するか考えながらコードを書いている
    • 気にする時はする。
  • ハードにしろソフトにしろ、その動作原理に興味がある
    • 当然。他に何があると? 逆に動作原理を理解すると作りたくなる。高校2年の秋はそれでコンパイラ書いてた。
  • ソフトウェアを使ってみる前にソースを眺める
    • これはしなかったな
  • マイ半田ごてを持っている
    • 持ってるはず。でもどこ置いたかな...
  • 抵抗のカラーコードはそらで言える
    • 残念いえません
  • D/A A/D 変換の仕組みは常識
    • 電気系わからないです
  • 電車のVVVFインバータに興味を持つ
    • 名前は素敵だけどわからないです
  • 数学は道具だ
    • 道具でもあるし理論として純粋に好きでもある
  • ミニ四駆のモーターは手巻きした
    • 物理世界興味ないです
  • プラレールはラジコン改造した
    • ラジコンじゃないけど何か改造しようとして二両くらい駄目にはした

「ソフトウェア」プログラマ

  • 外的制約は考えずに自由な発想でプログラムを作る
    • 最近の趣味のものづくりはこんな感じ。とりあえず効率考えずに書いてみて、動かしてみて、何を付け足せばいいか考えて、性能足りなければチューニングする。正しい姿だと思っている
  • 開発言語は、作っていて気持ちいとか習得がしやすいといった内的要因で決まる
  • アジャイル、クイックプロトタイピング
    • そういうスキルは身につけたいところ
  • O(n^2) と O(n) は気にするけど、定数項は気にしない。
  • コモディティハードをたくさん並べる
    • それで効率のよいシステムが組めるのであれば。Core2Quadをがーっと並べるのとかって結構あなどれないし。
  • 人を感動させなきゃ意味がない。(けどその評価は難しい)
  • 可変長データ
  • テキストデータ
  • 再帰萌え
  • 富豪的
  • 早期の最適化は避け、自明でわかりやすいコードを書く
    • yes
  • ハードにしろソフトにしろ、それがどういう作用をもたらすかに興味がある

寝るのでこんなところで。