プログラマよ、貧乏性たれ

かなり古い話ですが、かつて増井俊之さんが提唱した概念で「富豪的プログラミング」というものがあります。

富豪的プログラミング

実のところ私は、この文章の趣旨には異論はありません。特に以下の部分などは、場合によってはプロトタイプに限るかもしれませんが、強く同意します。

 

  • メモリや実行効率を気にしないでお気楽にプログラムを作る
    効率を重視したプログラムは作るのが大変ですし、 ちゃんと動かすにはデバッグも大変です。 富豪的プログラミングでは一番単純で短いアルゴリズムを使います。
  • 条件が変わる度にすべての計算や表示を行なう
    再表示が必要な場所だけ書き直ししたり、出力のバッファリング をしたりする貧乏性な工夫はバグのもとになるので行なわず、 条件が変わる度に計算を再実行したり全体を書き直したりします。

 ――が、こういうのは、あくまで、それにより開発効率が上がったり、UXが向上したり、という場合に限るのであって、最近のコンピュータは速いしメモリもディスクもでかいからいくらでも資源を無駄遣いしていいさー、というわけではないでしょう。

たとえば。

例1)

20年近く前、「いんたーねっとのほーむぺーじ」が流行していたころ、「いまどきの閲覧者のPCは性能が上がっているし、回線速度も速くなったし、多少重い、広い画面を要求するページにしてもいいだろう」と思ったら、閲覧者はガラケーi-modeでWebを見るようになった。「携帯用ページ」を作ってガラケーユーザーを追い出したら、今度は(さすがにPCに比べたら遅くて画面も狭い)スマホでPC用サイトを見るようになった。

例2)

いまどき、PCのHDDの容量なんか巨大なんだから、ファイルがでかくてもいいだろう、と思ったら、SSDに置き換えられて容量が減った。

例3)

仮にもサーバなら、メモリもディスクもそれなりにはあるはずだから無駄遣いして良いだろう、と思ったら、クラウドになってメモリやディスクの無駄遣いが直接コストに響くようになってしまった。

 

――大昔、「マイコン少年」がPC8001やらMZ80シリーズやらの8ビットパソコンで遊んでいたころ、BASICがROMに焼いてあって一瞬で起動するPC8001に比べ、起動時にテープからBASICをピーヒョロヒョロと読み込むMZ80は、起動に2~3分かかるということで馬鹿にされたものです*1。しかし、一時、Windowsは起動するのに数分単位で待たされた時期がありました(Windows8以降、かなりマシになった)。コンピュータの性能は天文学的に上がったのに、肝心のユーザにとっての待ち時間が縮まないのでは意味がありません。

Computer latency: 1977-2017

うむ。あとでじっくり読む。

Webページにしたって、先日爆速なWebサイトが話題になりましたが、

www.itmedia.co.jpもちろんアクセス数とかサーバからの距離とかあるでしょうが、今時シンプルなテキストサイトなら、かなり爆速だったりします(例:私のWebサイト)。これにくらべてはてなブログの遅いこと遅いこと、「コンピュータもネットワークも速くなったから、これぐらい重くしても誰も困らないさー」とか言えるレベルではありません。

だから、思うわけです。プログラマよ、貧乏性たれ、と。

 

で、ここからはもちろん宣伝ですが、貧乏性なプログラマなら選ぶのはCだよね!

ベンチマークによっては、Cは必ずしも「最速」ではありません。今時のJIT付きの言語の方が高速な結果を返すケースは多いものです。しかし、メモリ使用量も考えると、Cは今でも最軽量の言語のひとつであろうとは思います。

――依存関係増やすの嫌なんだよねー、という話もありますが、それはまた今度。

*1:もちろん、「クリーンコンピューター」という概念は先進的なものでしたが、「BASICが永遠とは限らない」というキャッチフレーズに反して、BASICよりもハードの寿命が先に尽きたように思います。