当ブログの読者層には居なさそうな,将来,ソフトウェアエンジニアを志している方々に向けて.
昨日のエントリに関連して,ネタ元のshi3z氏と若干のやりとりがあったので,togetter に纏めておきました.
「奇をてらわずに真っ当に書いて,処理系に判ってもらいやすくする」と
— もなか (@monamour555) May 3, 2013
「処理系にゴマ擦るコードでその場しのぎの速さを得る」とは
根本的に違うんだよね….プロは後者もこなすけれど,後ろめたさを忘れたら,それは危ないサイン.
手動最適化で,デグレードが起きはじめたら破綻のサイン.
踏まえておくべき大事なことは,限られたハードウェア資源や時間の中で,処理系にゴマする最適化が必要な時もあるということ. さらに踏み込むと,必要に応じて処理系に対してゴマを擦るための十分な知識を蓄えている必要がプロには求められるということです. 彼はプロですし,製品出荷前の限られた時間の中で成果を出さなければいけない,という状況下にあります. 私も一応プロですので,大変さは共有できます. 私も,綺麗に書くのが最善だと言いつつ,現場では,JavaやCを捨てて,アセンブラで解決することもあります.
それでも,これらのノウハウは,最終手段と断言します. 建前ではなく,本音で. コンパイラや演算器の能力が上がった現代では,不要になったノウハウもあります.
手動最適化は,どこか魔術的です. 憧れるのは解ります. でも,魔術は,ここ一番の場面で使うからこそ映えるのです.
…プロは,とくに天才は,魔術を縦横無尽に使えるので,忘れるんですよね…. 手動最適化に関する記事をみかけて,ときどき「うわぁ」と思うわけです. 量産型エンジニアの私は.
ジレンマ
どこかの時点で手動最適化を行ったことがなければ,非常時にも用いることができない,というジレンマもあります. 「おまえはドコで,その手動最適化の手法を覚えたのだ? 現場だろ?」と言われると,言葉に詰まったりはします.