看板java
標 題Re: 請問陣列的宣告…
發信站清華資訊(楓橋驛站) (Sun Jun 20 02:52:58 2004)
轉信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!netnews.csie.nc
※ 引述《[email protected] (有空來下棋喔!됩》之銘言:
> ※ 引述《[email protected] (benqer)》之銘言:
> > c/c++ 並沒有 int[] x; 的語法
> > 喔, 就因為java有多種宣告陣列的語法嗎?
> > 你真是太小看c++了 , 以語言描述多樣性來說,
> > c++有運算子多載,泛型編程, 多重繼承, java一個都沒有.
> > 平心而論, c++比起java來說是複雜了點,
> > 但c++有豐富的語言設施, 可以直接以程式表達設計理念,
> > 比起java過於簡化的編程模型, 可以說"進步"太多了
> 這樣講可能會引起筆戰喔
> 這些功能被移除其實是有原因的
不管移除的原因是什麼,
這移除顯示了java並非一個如上面網友所說的,具有語言描述的豐富性
> 運算子多載
> 多重繼承
> 我覺得其實用處不大
java因為沒有運算子多載, 簡單的 a + b*c都得寫成 a.add(b.multiply(c))
你覺得用處不大, 那麼做數值運算的人呢?
沒有泛型編程 , 所以java的容器在取出元素時得動用轉型, 遇到得以型別
訂製class時, 只能對每個型別製作一個語法幾乎一樣的class.
沒有多重繼承(c#也一樣), 所以如果你的class要繼承兩個class的"介面與實作"
就得用interface來代替另一個class, composite此class之物件, 再動用delegate
實作出此interface的所有methods, 跟vb沒有繼承時候的情形一模一樣
也許以上所說, 很多人都還是覺得用處不大, 所以移除無傷大雅.
但是別忘了sun發展java的目標除了簡單,productive之外, 更重要的是
cross platform, 統一運算平台. 結果java為了簡化的理由把以上功能全都拿掉
嗯 真不知道這樣的做法要如何說服"所有人"採用java.
而java自身的缺點也讓其他競爭對手見縫插針.
.NET platform已經針對java的缺點做出改進, .NET把operator overloading納入
但不強迫所有語言都使用, for example, c#支援operator overloading, 但VB並不支援
.NET framework 2.0也將加入template機制, 當然同樣的, 以簡單做號召的VB不
一定會支援.
多重繼承雖然.NET不直接支援, 但語言仍可自行實作出多重繼承, 例如
managed c++依然可以使用多重繼承.
so , 結論就是.net平台依然享有java的簡單編程模型(use vb),同時也有結合
java+vb的簡單與c++的語言設施之c#, 如果programmer還是不滿意, 他們還可以
退回到最powerful的c++, 同時依然享有.net的優勢
而java呢, programer得到的只有一個簡化過的編程模型.
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: NK219-91-117-21.adsl.dynamic.apol.com.tw