[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: Java の開発生産性について




前橋です。

HATTORI さん:
>これらが原因で、C++等の機能をJavaから削除したよ、ってことじゃ
>ないのですか?(そう思っていました...)

これはそうだと思います。

>エレガントなソースコードを書ける人なんて結局ごく少数ですよね。
>つまり、機能の多さがそのまま保守性の低下を招くという思っても見なかった
>結果をJavaは未然に防いでくれた、っと。

だからこそ、保守性の高いコードを書くために、どんな機能が必要
であるか、あるいは逆に、どんな機能が、邪魔なだけであるか、と
いうことを適切に取捨選択する必要があると思うのです。

大規模開発向けの言語なら、私はenumやtemplateは必須だと思って
います。あ、あと、package も。

逆に、C++にあるけれど、不要と思える機能は、演算子のオーバー
ロードでしょうか。私的には関数のオーバーロードも不要なような
気もするけれど、これはどうかなあ。あと、++ や --、+= や -= 
は欲しいけど、?:はどっちでもいいですし、++ は単独の文として
書きたい所です。

Javaは、packageはありますし、演算子のオーバーロードはありま
せん。これはいいんですけど、

enumとtemplateがないと困るなあ、というのは、何度も書いてる通
りです。

ところで enumですけど、Javaは、パッケージの下にはクラス(とイ
ンタフェース)しかない、という言語仕様になっていて、これはこ
れで言語仕様的には美しいわけで、ここにenumを持ち込もうとする
と、「これ、どこに入れるの?」という話になっちゃいます。

でも、実用言語として見るなら、やっぱり、ないと困りますってば。
enumは、保守性を上げますが、悪用はしにくい機能だと思いますし。

あと、Javaには、++ や -- があります。それはいいんですが、こ
いつが値を返してくれるもんで、式の一部に使えてしまいます。
代入の = も値を返します。

保守性の高い言語にするため機能を削るなら、少なくとも++の戻り
値はvoid にした方が良かったのでは? と思います。いや、本来な
ら、式ではなくて文にすべきなんでしょうけど、Cから引き継いだ 
forの構文では、第1式と第3式には式が入るわけで、それだと困り
ますし... というか、どうせ互換性なんてないんだから、forの構
文の方をどうにかするとか...

代入の = が値を返すのは、なにかと便利なので私的には残してお
いて欲しいのですが、これを許すために式文を許して、コンパイラ
で泥縄的チェックを入れるのが良かったのかどうか...

>大規模なクラスライブラリのソースをわたされてそれがたとえエレガントで
>あっても(エレガントでないことが多いと思いますが)、C++のすべての機能を
>ふんだんに盛り込んでいたら、ちょっとゲンナリしてしまいそうです。

そうなんですけど、どちらかというと、C++が腐っている要因の大
半は、中途半端にCの上位互換を狙ってしまったことにあると思う
んですがどうでしょう?

Adaなんか、機能豊富でかつ腐った言語を継承してなくて、大規模
開発にはなかなか良さそうではあります。使ったことはないけれど。
でも、私は、begin endが嫌いで、中括弧が好きなのでした(Adaでは
beginは滅多に書かないけれど)。

>| 母国語がC言語なので、ハッキリいって、Cは嫌いじゃ無いです。あーあー。

同じくです。母国語なのもありますし、いきあたりばったりでいい
加減にでっち上げた超手抜き言語の割には、なかなかに使えます。
Cには、実績もありますしね。

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------