サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Google I/O
essen.osask.jp
(1) プログラミング言語(コンパイラ)で最適化というと、「静的単一代入(SSA)形式への変換」などの難しいイメージが先行して、もはや普通のプログラマは手出しせずにLLVMに任せてしまうのが普通になってしまった感じがします(私の思い込みかもしれませんが)。 そのためにLLVMをバックエンドに選ぶ人もいるくらいです。 しかしHLXで最適化についてあれこれと実験してみた経験から言うと、最適化処理はそれほど難しいものではありません。いや難しくしようと思えば難しくできそうですし、そうすればもっと高度な最適化ができそうですが、でもそこまではできなくても、たいていは十分に役立つのです。 どうにかしてその「感じ」をうまく伝えたいです。 ↑ (3-1) コンパイル時に答えが確定しているものは、定数に置き換えてしまう。 これは簡単です。 a = 1 + 2 + b; みたいなのがあれば、 a = 3 + b
(註)「.exeの大きさ」はWindows向けにgcc(MinGW)でコンパイルした時の大きさです。 しかしここで扱う言語処理系は、Windows専用というわけではなく、他のOSでも問題なく動作するようになっています。 純粋に言語処理系の規模の目安を示すために書いてあります。 基本的には小さければ小さいほどシンプルで、教材として理解しやすいと思っています(可読性を下げてまでのコンパクト化をやらないとして)。 行数を書いているのも同じ意図です。行数だけだと、1行の文字数をうんと増やすことで、見かけ上の行数を減らすことができますが、そんなことをしても実行ファイルサイズは減らないので、 この二つを併記すれば、規模感の目安としては十分だと思っています。 「速度のめやす」は、C言語で10億回ループさせた場合と、この言語で10億回ループさせた場合の処理時間の比を書いています。数が大きいほうが遅いです。
(3) 本題 とはいえ、話は簡単です。 まずプログラムを作ったとして、それが誰にも使われなかったら、そのプログラムは無駄です。作る過程で、開発者のスキル向上はあったかもしれません。それはよいことですが、しかしそんなスキル向上も、もし別の「無駄になるもの」を作るためにのみ使われるのなら、結局は大いなる無駄です。・・・開発に何ヶ月かけようとも、プログラムが何万行に及んでいたとしても、それは「作っているときに楽しかった」以上の意味はありません。 これに対して、もしあなたが10行程度のスクリプト(バッチファイル)を書いて、それを10回以上使ったことがあるとしたら、そのスクリプトは間違いなく有用です。たとえその開発に10分間しかかかっていなかったとしても、有用です。文句なく有用です。あなたはそのプログラムのおかげで(わずかかもしれませんが)生活を豊かにできたのです。 もちろん、プログラミングは楽しむ
このページを最初にブックマークしてみませんか?
『essen.osask.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く