Re: 請問陣列的宣告…

看板java作者時間20年前 (2004/06/20 21:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/11 (看更多)
※ 引述《iamstudent.bbs@wretch.twbbs.org (有空來下棋喔!됩》之銘言: > ※ 引述《Wiseman.bbs@bbs.cs.nthu.edu.tw (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
文章代碼(AID): #10rOgX00 (java)
文章代碼(AID): #10rOgX00 (java)