Index: [Article Count Order] [Thread]

Date:  Wed, 04 Feb 2004 16:16:04 +0900 (JST)
From:  Tsuyoshi FUKUI <tfukui@....jp>
Subject:  [XP-jp:04888] Re: GC
To:  extremeprogramming-jp@....jp
Message-Id:  <20040204.161604.74750631.tfukui@....jp>
In-Reply-To:  <20040204150010F2H1'V@....nu>
References:  <20040204135950.3F86.MURAYAMA@....jp>	<20040204150010F2H1'V@....nu>
X-Mail-Count: 04888

フクイです。

Katsuya Higuchi <bugbear@....nu>'s message
	at Wed, 04 Feb 2004 15:00:10 +0900
> そこで「単なる設計ミスです」ってのはちょっとずるいなぁ。:)
> リソースリークや「肥大化」のコーディングのミスをするような人
> (あるいはせっかくライブラリを作っても正しく使わない人)は
> 設計のミスも引き起こしやすいのです。
> それに「リソースリークは単なるコーディングミスです」とも言えますし。

(a)設計をきちんとすれば、コーディングの段階ではミスをしにくい
(b)設計もコーディングも気をつける必要がある

ではだいぶ違いますよね。

> GC の威力はもちろん認めますが、
> その性質を知って正しく使わなければ結局だめなんです。

確かにそうですが、「正しく使う」をどのくらい楽に実践できるかという
程度の問題を考えなければなりません。その意味で、Java の GC は
良いサポートになり得ていると思います。

# もちろん完璧とは言いませんし、シビアなチューニングをやろうとすれば
# 暗くて深い暗闇が待ち受けていることも確かですが。

> 今後、「Java で GC があるから…」といって
> 組み込み系とか長期間動くシステムとかで
> リソースの事何にも考えずに設計する人が
> トンドン出てくるかと思うと、ホント頭が痛いです。

これは「人」の問題ですね。
こういう人は、C++ を使わせてもメモリリークしまくること請け合いです。

(1)C++ でも Java でもどちらでも苦もなく「正しい」プログラムを書ける
(2-1)Java ならそれなりに楽に「正しい」プログラムを書けるが
     C++ だとしんどい
(2-2)C++ ならそれなりに楽に「正しい」プログラムを書けるが
     Java だとしんどい
(3)C++ でも Java でも「変な」プログラムを書いてしまう

と分類するとして、Java の GC の存在のおかげで
(2-1)の方が(2-2)よりも多いのではないかと想像します。

余談ですが、
「Java で GC があるから…」は逆の意味(「何でもGCだから駄目だ」)
で使われることも多いですね。こちらも眉唾な主張が多いように思います。

--
Tsuyoshi FUKUI