Living in the Era of Infinite Computing Power
めちゃカンタンな計算が、昔は遅かったんや。8bitプロセッサーで一万回ループしようとおもたらな、内側256回ループする外側で40回ループしたほうが速かったんや。16bitの加算と比較を行うために複数の命令を使わんでもええからや。
掛け算と割り算が、昔は遅かったんや。そもそも、そんな計算するCPU命令なんてなかったんやで。掛け算のオペランドの片方が定数やったら、加算とビットシフトに分解できるんやが(Nに44を掛けるには、N 左シフト 5 + N 左シフト 3 + N 左シフト 2や)、まあ、世の中そんなに都合よういってくれへんわな。
浮動小数点数が、昔は遅かったんや。FPU以前、浮動小数点数の計算はめちゃめちゃ遅いソフトウェアで行われていたんや。はじめのハードウェアは、マシなんはマシやったが、そんなすごいことあらへん。いっちゃんはじめの8087コプロセッサーは、カンタンな浮動小数点数の足し算に少なくとも90サイクル、割り算やと200サイクル以上もかかってたんやで。千サイクル以上かかる命令もあったんや。
グラフィックが、昔は遅かったんや。昔はな、320x200のディスプレイをまともな速度で更新するのが難しかったんや。640x480なんていうめちゃすごい解像度でゲームができるなんて夢のまた夢やったんや。
こういう問題が、いまや漫才みたいに解決してしもうた。今のCPUは複数の64bitの値を同時に一サイクルで足し算できるんや。浮動小数点数も同じや。掛け算もやで。ソフトウェア描画されてたスプライトとかポリゴンは、別のめっちゃ並列化されたプロセッサーで処理されてて、メインの複数コアのCPUと同時に走るんや。
1990年代のどっかで、Pentium IIのクロックが300-400MHzに達した時、演算力はもう無限になったんや。そりゃ例外はある。動画圧縮とかハイエンド3Dゲームとかめっちゃ高画質な画像編集とかやな。でもな、ワシインタプリタ実行されたErlangで快適に開発しててん、複雑なPerkスクリプトを、パフォーマンスなんか気にせず実行しててん。
ワシが初期の66MHzのパワーマッキントッシュでグラフィカルなゲーム作ってた頃に比べたらな、ワシが20MHzのSUNのワークステーションで商用通信ソフトウェアを書いてた頃に比べたらな、ワシがションベンみたいな8bitのAtariで開発してた頃に比べたらな、1990年のPentium IIは奇跡みたいなもんやった。
あれから、演算力ってのはもう進歩してへんな。そりゃ、千二百万画素の画像を吐き出すカメラはある、Windows 7はWindows 98よりオーバーヘッドがある、モニターの解像度もえらく上がっとる。あんまり高速に処理できひん問題はいくらでも転がっとる。どっかのハードウェアのレビューサイトが、「チップセットXはチップセットYより、あるベンチマークにおいて8.17%高速である」とかいうのがどうでもようなる問題は常にある。
お前ら、無限の演算力を有効につこうてるか? 低級なパフォーマンスを気にしないようにしとるか? 最適化なんかのちっぽけな問題のためにプロダクティビティっちゅうやつを無駄にしとらへんか? お前ら、最終的な結果が便利になるように、余計なこと気にせんでもええようなスタイルでプログラミングしとるか?
まあ、こういうとSeth Godinみたいに聞こえるけどな。今時、誰も気にせえへんことをぶつくさいうとるようやがな。せやけど、iOSやろ、Androidやろ、Webアプリやろ、こいつらは昔のソフトウェア開発がどんなだったか全く分からへん奴らによって開発されてて、昔なら非効率的と言われてたツールセットをつこてて、しかも、どんなプラットフォームでも、当然のように処理能力を全然気にせえへん奴らによって開発されとる。
お前らこの記事が気に入ったらやな、速いってどんだけ演算力がいるねん?も気に入ると思うで。
No comments:
Post a Comment