课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Java语言
  • Java语言

    发布:昆明Java培训      来源:达内新闻      时间:2016-06-27

  • Java 是过去的 10 年中计算行业里发生过的最好的同时也是最坏的事。

    一方面,Java 把你从 C++ 编程的很多枯燥易错的细节中解救出来了。没有数组越界了,没有 core dump 了。抛出来的异常能让你精确定位到出错的那一行代码,而且 99% 的时候都是正确的那一行出错了的代码。对象们在需要的时候能智能地把它们自己打印出来。等等等等。

    另一方面,除了是一种语言,一个虚拟机,一个巨无霸的类库,一个安全模型,一个可移植的字节码格式,Java 还是一个宗教。邪教。所以你不能太相信对它太虔诚的人。想要招一个好的 Java 工程师是一项很有技术挑战的活。

    但是总的来说,Java 是软件工程史上的一大进步。

    从 C++ 到 Java 不只是语法上的改变。这是一种需要一段时间去好好体会的一种震撼性的世界观的转变。这有点像突然你被配了一个执行助理。你知道老总们为什么总是好像有时间去开会,总是知道公司现在运行的情况,总是写出很酷酷的文档 吗? 老总们常常忘记其实他们不是一个人在战斗,他们都是两个全职的人,他们和他们的执行助理们。有一个执行助理把你从琐事中解救出来让你有时间去思考那些真的需要你去解决的问题; 没有的话你将不得不花一半的时间在那些无聊的世俗的事情上。切换到 Java编程语言就把你变成了两个程序员 —— 一个处理那些你不需要关心的东西,另一个可以集中精力在问题本身上。这是一个很震人的改变,一个你应该很快就能习惯能喜欢上的改变。

    就像 Jamie Zawinski (Netscape 牛人,开发 Mozilla 浏览器,好像学历是高中毕业?)在他著名的“Java 真烂(Java sucks)”那篇文章里说的:“先说那些好东西:Java 没有 free() 函数。我必须一开始就承认,其他的东西都没什么了不起。(没有 free)是能让我原谅其他所有东西的特性,不管其他东西有多烂。讲完这一点后,我的文章里其他一切几乎都完全没有重要性了。”

    Jamie 的文章写在 1997 年,按 Java 年来算的话是很早以前了,跟他写这篇文章时比,Java 已经有很大的改善; 一些他抱怨的东西甚至已经被 fix 了。

    但是大多数还是没有被 fix。Java 作为一门语言还是有点烂。但就如 Jamie 指出的,Java“是今天为止最好的语言。我的意思是说,它是今天市面上那些烂得底儿掉地一堆语言比起来有那么一点能被我接受。”

    真的,你应该读读他那篇文章。

    Java 几乎每一方面都很好,除了它的语言本身,而这是 JWZ 抱怨的主要对象。但那是一个很大的抱怨。再好的库也救不了一个烂语言。相信我:你可能比我知道多得多的东西,但是我知道好兵救不了烂将。在 Geoworks 搞了五年汇编语言都会了我这个道理。

    跟 C++ 比,Java 作为一个语言还过得去。好吧,别扯了,Java 要好很多。因为它有(内建)的字符串。哥们,你说一个没有内建的字符串的语言是人用的吗。

    但是 Java 跟 C++ 比少了一些好东西,比如(函数调用时)传引用,栈上的对象,typedef,宏,以及运算符重载。一些时不时地会很称手的东西。

    哦,还有多重继承,我现在老了,反而挺欣赏了的多重继承。如果你认为我这个观点僵硬不灵活的家伙是多态教义很好的反例的话,我倒是可以给你举几个为什么你需要多态继承的好例子,或者至少像 Ruby 那样的 mixin 或者自动的派遣。下次问问我白龙马的事情。今天我要告诉你为什么 Java 的 interface 是个烂货。

    几年前 Gosling 自己都说,如果一切都能重来的话,他不会搞出个 interface 的概念。

    但是那正是 Java 的问题。当 James 说出那句话的时候,人们被雷到了。我甚至能感觉到那股雷劲儿,能感觉到 Sun 公司市场部和法务部的鸟人是多么想把 James 灭口,然后告诉大家他没那么说过。

    Java 的问题就是人们都被那帮人搞的广告效应蒙住了眼。C++,Perl,任何流行语言都有这个问题。这是很严重的,因为如果没有一些说大话吹牛逼的广告,一个语言是不会流行起来的。所以如果一个语言的设计者说他的语言没有被设 得很完美的话,就是赶紧用****射击这胡说八道的家伙并关闭会议的时候了。

    语言们需要放点儿卫星才能活,我只希望人们不要被卫星耀瞎了眼。

    我学了面向对象编程, 我自己也对此大吹大擂。当我加入亚马逊时,我不能告诉你我有什么智慧或者经验,但我可以给你背诵出所有关于 OOP 的魔咒。多重继承是邪恶的,因为大家都这么说; 运算符重载是邪恶的,诸如此类。我甚至有点模糊地知道为什么是邪恶的,但实际上不知道。后来我明白了,这些都不邪恶,不是烂玩意儿,烂的是开发者,是我。我现在还是烂,但是希望每年都不烂一点起来。

    上礼拜我碰到一个来面试的,他告诉我多继是邪恶的,因为,比如,你可以从头,胳膊,腿,躯干多重继承出一个人来。他既是对的,又是错的。那样的多继情形当然邪恶,但那都是因为他自己太邪恶了。那样继承出来的“东 ”远远就能看见有多蠢,如果他还把这玩意儿弄进门来那就更邪恶了。

    不良开发者,占了这世上开发者的大多数,他们能用你扔给他们随便什么语言写出不良的代码。

    说了这些,还是得说回来,多继不是请客吃饭那么轻松的事儿; mixin 看起来是更好的解决方案,但是还没人完美的解决这个问题。但我还是认为 Java 比 C++ 好,即使它没有多继。因为我知道不管我的出发点是多么好,某一天我还是会被一堆不懂怎么写好代码的人包围,让他们用 Java 比用 C++ 会带来更少的伤害。

    此外,Java 除了语言本身外还有老多其他的重要有用的东西。且 Java 语言本身也在进化,虽然像冰川一样慢,所以我们还是能看到希望。Java 正是我们应该在亚马逊推荐使用的语言。

    你就是得小心点儿,因为和其他任何语言一样,你能很容易找出一堆人,他们很懂一门语言及其编程环境,但对品味,计算或者其他任何重要的东西却一无所知。

    当你有怀疑时,还是雇那种会好几门语言的 Java 程序员,那种厌憎 J2EE/EJB 之类松松跨跨的所谓框架的,那种使用 Emacs 的。这都是一些实战经验。

    推荐文章

上一篇:我们来看看Lisp的优缺点

下一篇:Perl,怎么说呢?

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56