看板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