限りある資源を大切に | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

プログラムの世界では、ファイルを開く処理を書いたら、責任を持って閉じる処理も書く、というのが常識である。

ファイルやメモリのような「リソース」と呼ばれるものは、こうしたマナーが必要なものがほとんどである。なぜかといえば、コンピュータのリソースには限りがあるからだ。

限りある資源は、使いたい人が好き放題に使えるわけではない。しかるべき手続きをして、一時的に借りてきてから使う。そして、使い終わったら速やかに返却し、他の人が使えるようにするのである。

限りある資源を大切に使おう、という大変エコロジカルな考え方である。



さて、Java や .NET など、最近のプログラミング言語には、「ガーベージ・コレクション」という仕組みがある。直訳すると「ごみ収集」だが、これは、プログラマが確保したメモリを自動的に開放する仕組みである。借りたものを自分で返さなくても、放置しておいたら勝手に回収される、というわけだ。

つまり、ガーベージ・コレクションが行われる言語では、確保したメモリの開放し忘れ(メモリリークというバグ)がなくなるわけである。プログラマはメモリ管理に気をとられずに、ビジネスロジックの実装に専念できるというわけだ。

というと、良いことばかりのようだが、そうでもない。

開放し忘れを防止するというだけならよいのだが、最初から開放することを考えないプログラマを容認するということでもあるからだ。

ガーベージ・コレクションはメモリの開放、つまり、借りたものを返すという行為自体を隠蔽する。このことで、コンピュータのリソース管理が本来的に持っている、エコロジカルな考え方までもが失われてしまうのである。



これは、特に、新しくプログラムを学ぶ人にとっては、重大な損失である。

実際、最近のプログラマには、「メモリは限りある資源である」という意識が欠落している者が少なからずいる。メモリの大切さを知らないので、好きなだけ消費する。そして彼らのシステムは異常に遅くなるか、メモリ不足で停止するのである。

プログラミングをビジネスという観点で考えれば、あらゆるリスクは遠ざけた方が良い。そういう意味では、ガーベージ・コレクションは優れた技術かもしれない。

しかし、教育という観点で考えるならば、危険なものだからといって、何でも遠ざけてやればよいというものでもないだろう。





省メモリプログラミング―メモリ制限のあるシステムのためのソフトウェアパターン集
ジェイムズ ノーブル チャールズ ウィアー James Noble Charles Weir 安藤 慶一
ピアソンエデュケーション (2002/06)
売り上げランキング: 50,050
おすすめ度の平均: 5
5 すべての設計者・プログラマに必須


C言語 文字列操作+ファイル入出力完全制覇
山地 秀美
技術評論社 (2002/11)
売り上げランキング: 241,373
おすすめ度の平均: 2
2 難しいです。