设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

Google首席Java架构师访谈:Java的命运

2011-3-11 17:20| 发布者: joejoe0332| 查看: 6017| 评论: 0|原作者: 程序员|来自: 程序员

摘要:   本文是Common Lisp专家Peter Seibel对Google公司首席Java架构师Joshua Bloch的访谈,谈到他所遇到的最糟糕的Bug以及Java的命运。  最糟糕的Bug  Seibel:我们聊聊调试吧。你遇到的最糟糕的Bug是什么?  Bl ...

  Seibel:如果去掉泛型,现在Java会变得更好用吗?

  Bloch:我不知道。我还是喜欢泛型。泛型能帮我找到代码中的Bug。泛型可以让编译器强制做一些限制,之前这些限制我只能放在注释中。另一方面来说,当我看到那些疯狂的参数类型相关的错误信息,当我看到像 classEnum<EextendsEnum<E>>这样的泛型类型声明时,我就会想,显然泛型的设计还没成熟到可以放到 Java中的水平。

  我们总是太乐观,然后搬起石头砸自己的脚。所以我们说:“耶!我们当然可以把泛型放到Java中。在CLU的时候我们就知道泛型了。这技术25年前就有了。”最近我听到关于闭包的类似言论,不过那是50年前的技术了。“噢,闭包很简单,不会给语言加入任何新的复杂性。”

  嗯,没错。但是我觉得我们从泛型这件事儿得到了教训。在你懂得这个改动会对概念层面带来什么影响之前,在你可以确保软件行业从业人员可以高效地使用新特性,而且这一新特性会让他们活得更好之前,你不应该给语言加入这一特性。

  如果早知道程序员们对泛型是这个反应,我们肯定不会把它加到Java里。这是不是说我们就完全不会搞泛型?不,我不这么认为。我认为泛型确实很好。主要是因为大多数集合是同质的,而不是异质的,同质的集合处理起来是比较方便的。多数情况下类型转换都不合适。转换可能会失败,而且让你的程序不再优雅。我想你知道这是什么集合,它应该自动符合你的这些需求。但是,是不是这就意味着你应该承受我们现在承受的这种复杂度?不,我想我们只是没有处理好泛型。

  Seibel:关于泛型有来自于用户的压力吗?有人抱怨泛型的缺点干扰他们写程序了吗?

  Bloch:有没有工程师大骂泛型的缺点?不,没有,他们没有抱怨过。如果因为泛型简洁就把它们加进来,那我会内疚的。因为当时我们以为这么做是对的。

  有人说,很多工程都是扯淡。有人要求我们加入foreach吗?没有。他们没有要求我加入。但是我就知道这是应该做的。我对了——每个人都喜欢它。但是我觉得我们行业内的一大问题就是,在工程领域,做一个东西,仅仅因为它简洁,仅仅因为它是一个好的工程项目,等等。如果你不能解决真实用户——在这里就是Java程序员——的真实问题,那么你就不应该加入新的特性。

  James Gosling曾做过一个非常了不起的演讲——“Java的感觉”。他说,给Java加入任何东西之前,都需要三个真实的用户。不应该因为一个东西简洁就把它放进来。

  但是人们就是想把什么东西都放进去。工程师是做什么的?他们就是写代码的。而当他们写一个库,或者一个语言的时候,他们就是想放各种东西进去。你需要他人的参与,需要指导的声音,需要这些东西来帮助你完成产品,帮你在放与不放之间做出最好的权衡。因为你可以放进去的东西总比你应该放进去的东西多。那么是不是说所有的这些东西都不好呢?那也不是。只是你需要做出决定,某些东西是不应该放进去的。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部