ゴミ箱の中のメモ帳

まだ見ぬ息子たちへ綴る手記

糞みてーなプログラムだらけになったもんだな

私が「パソコン」を初めて購入したのは高校一年の頃になる。なので今から15年弱前だろうか。

実際には小学生だかのころに親父が98MULTi CanBeを購入してきて、「しゃべる時計」として鎮座していたのでその当時に少しだけ触ったことがあるが、まぁ「触ったら壊れる」と殴られていたので本当に触った程度だ。

CanBeのメモリは確か16MBだっただろうか。それでも問題なくさくさくとGUIが使えたし、ワープロソフトやマインスイーパも出来た。そしてペラペラと日時とユーザ名をQハチ君は話してくれた。

初めて自分で購入したパソコンはVAIOでメモリは64MBだったが、それでもWindowsMEや周辺のアプリケーションも問題なく動いていた。しばらくしてメモリを追加して192MBになり、OSをWindows2000に変更すると更にサクサクと多種多様なプログラムが動作した。決してメモリが不足するなど思いもよらなかった。

高校の頃は工業高校であったのでポケコンを購入してCやBASICでプログラムも書いたし、なぜか自宅にあったPC-8001mk2も「キーボードで入力しやすいBASIC」として計算などをさせた。PC-8001mk2のメモリは64KBだっただろうか。

 

省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集 (Software patterns series)

省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集 (Software patterns series)

  • 作者: ジェイムズノーブル,チャールズウィアー,James Noble,Charles Weir,安藤慶一
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2002/06/20
  • メディア: 単行本
  • 購入: 1人 クリック: 100回
  • この商品を含むブログ (33件) を見る
 

 ====
こう考えるとPC-8001mk2からVAIOでは標準搭載メモリが1024倍になっているが、これは根本的に「BASIC-ROM」から「GUI OS」へと変化しているので、その分のグラフィックスやら周辺機器のドライバやらネットワークやらのアプリケーションで増加するのは致し方ないことだろう。

なんてたってXGAの24bitフレーム1枚分のバッファだけで3MB弱のメモリが必要になるのだから、これだけの必要メモリの増加は頷ける。

そして私がプログラミングを始めたときはThinkPad240にNetBSD1.6を入れて使っていた。ThinkPad240もメモリが64MBであったが、NetBSD自体はX Window Systemtwmを動かしても32MB程度しかメモリを消費せず、その倍程度は自由に使えた。当時はその上でEmacsを使うことも出来たし、メモリを128MB追加すれば画像処理も悠々行えた。

プログラムは当時はあまり優れたものがなかったので画像ビューアやらテキストブラウザを作ったが、それもXlibを使って作ったし、そもそもにメモリを無駄にしないように作ったのでそんな環境でもスワップアウトすることなく普段パソコンで使うことはまかなえた。


そして時代は進んで現在、UbuntuLinux上で動かしているSkypeは待機状態でメモリを100MBも消費し、ドロップボックスも起動時で50MB程度メモリを消費する。当時はそれ以下のメモリで余裕でOSが動き、Qハチ君はしゃべり、ワープロソフトが動き、印刷でき、テレビも見れていたのに今は一アプリケーションがそれ以上のメモリを消費している。

こんな馬鹿な世の中はないのではないか。画像ビューアなど、プログラム自体の機能は同じであるのに、私が作っていたプログラムの何百倍もメモリを消費する。一体どんな馬鹿が作ったらこんなことになれるのだろうか。

確かに昨今のGUIライブラリは馬鹿でかい。本当に馬鹿がつくくらいにでかい。どう作ればあそこまで大きくなれるんだと思うくらいにでかい。わざとでかく作っているだろうと思えるくらいにでかい。ウインドウ一枚開くだけで数MBのメモリを消費するなんて当然だ。それを誰も気にかけることはない。

そしてそんなことに気をかける人がいないので、プログラマの中にそんなことを気にしてコードを書く人もいない。メモリを気にしているのは本当の組み込みプログラマ程度だろう。私も組み込みをやっていた頃は32Byteを削減するためにあれこれしたものだ。

 

私が今使っているパソコンはThinkPad X40だ。10年ほど前の発売当時に購入し、一度は手放したものの新たに購入して現在も利用している。PCのスペックなど、本来的にはPentiumM 1.5GHzでもオーバースペックすぎるほどだ。

メモリも1.5GB搭載している。これが不足するなどどう考えても理解できないだ。

だが不足している。そしてタイトルに書いた「クソみたいなプログラムになったもんだ」と思った次第だ。

 

UbuntuLinux12.04でも、各々のドライバを読み込んだ起動直後は300MBもメモリを消費していない。いろいろなサーバを起動していてもその程度だ。

だがSkype,Dropbox,PyCharmを開いて少し動かしたくらいでメモリがスワップアウトする。Google Chromeを開いたに日には数百MBのスワップアウトが発生する。一体誰がこれほどまでにメモリを消費することを望んでいるのか。一体誰が何のためにこれほどまでにメモリを消費するプログラムを作りたがっているのか。

 

これが商用ソフトウェアやハードウェアメーカならわかる。ソフトウェアは新しいソフトが高機能であることをアピールするために機能をドンドンと付け足す必要がある。そうすれば必然的にメモリ消費量は増えていく。開発コストも下げるためにメモリなど気にして少しでも人的リソースを割きたくないだろう。

ハードウェアメーカはそんなソフトウェアが増えれば新しいパソコンを購入してもらえる。そしてそれでもメモリが不足するようになればまた買い換えてもらえる。メモリ消費が増えることはハードウェアからすれば歓迎すべきところだろう。

だがフリーソフトウェアオープンソースソフトウェアはこんな事情はないはずだ。少しでも多くの人間が便利に使えることを期待しているはずだ。であれば古いコンピュータでも動くことを考えるべきだろう。そうすれば必然的にメモリ消費は少なくすべきだ。私もこう考えてプログラムを書いているし、そう考えているのでパソコンは自分が必要と思うスペックのものを使い続けている。

現在ではエコだの何だのと叫び、プログラム業界もそれに賛同している企業が多い。であれば、植林や環境活動に金を出すのではなく、パソコンを長く使い続けられるように、無駄なリソースを消費せずに消費電力を下げるようにプログラムを改良することが貢献になるのではないだろうか。

 

あなたがプログラマであれば、是非このことについて考えて欲しい。糞みたいなプログラムを書く糞みたいなプログラマにならないで欲しい。

一度PC-8001を使って欲しい。本来の計算にどの程度のメモリが必要で、どの程度のスペックで計算が行えるのかという事を理解して欲しい。

あなたは普段どれだけ無駄なことをしているのか理解して欲しい。

 

ThinkPad X40が向こう10年も使えることを願って。