谷歌高管对Java、C++的复杂性不满 - 开源中国社区
Float_left Icon_close
谷歌高管对Java、C++的复杂性不满
xyxzfj 2010年07月26日

谷歌高管对Java、C++的复杂性不满

xyxzfj xyxzfj 发布于2010年07月26日 收藏 1 评论 18

【腾讯云】0基础建站 网站模板9元起! >>>  

最新消息谷歌高管Rob Pike 在OSCON 开源大会上打开了简化式编程语言新议题。

今天的商业级编程语言--尤其是C++和Java--太过复杂而不能与今日计算环境充分相容。谷歌资深工程师Rob Pike 在周四于O'Reilly开源大会上的一次谈话中发表了以上论点。
“我觉得这些语言太难用了,太精细,太复杂,太冗长。而且这些缺点似乎在与日俱增,”Pike说,“它们被过度接受,被用得太广了。”
Pike详细说明了此类语言的缺点,以此展开描述了他和其它谷歌工程师对所开发的名叫Go的新编程语言所持的期望。

为了证实此类语言的复杂性,Pike展示了一些C++代码示例。其中一例是一个几乎占据了屏幕整行的变量声明。

“我们怎么能让这种东西成为在学校里教、在产业里被使用的操控计算机的标准方式?”他问道。这种语言“太官僚了(制度化)。每一步都必须要考虑编译是否可通过,”他说。

尽管Pike承认他自己有点爱开玩笑,他声明说此类问题确实应该被提及。C++出现是因为人们对使用低级语言C绝望,Java出现是为了简化C++。随着时间的推移,新的特性都加在了新出现的二者之上,使它们越来越复杂了。

“成熟(复杂)会带来噪音(不可预知不被期望的错误),”他补充说。

Pike还说,此类语言还是在多核处理器和网络被广泛应用等大的事物出现之前被开发出来的,因此它们不能简单地与这些新环境相容。

Pike并不是谷歌唯一一个表达对传统商业级编程语言不满的人。

在上个月的USENIX 年度会议上,Gmail工程师Adam de Boor 出语惊动了与会者。他说,公司的Gmail服务完全是由JavaScript写的,总代码全长443,000行,全部手写。

他指出,尽管Java更具有表达性,它也更加繁琐。“在这个节骨点上,对我来说所使用语言的选择问题是一个大问题,”de Boor说。

JavaScript是为避免C++和Java不断增长的复杂性,而在过去十年里被开发出来的一批语言中的一支。其它支还包括Ruby和Python。但是尽管有了一个简化了的语法,这类语言也同样有它的弱点,他论证道。

这类新语言要慢一些,伸缩性较差,还隐藏了更多的错误,Pike详尽地描述道。

这类语言多为解释型而非编译型,它意味着用这类语言写的程序在运行前是没被编译过的,因此运行的缓慢得多。它们也倾向于使用动态数据类型,即程序员无需定义他们变量所属的数据类型。

“动态数据类型并不见得好。本来你可以在编译时找出的错误的,它(动态数据类型)让你只能在运行时找出错误,”他说。

借着这些观点,Pike接下来描述了作为融合两类语言集各自优点的一个大胆尝试--Go语言。“Go是把静态数据类型语言的安全与效率和动态数据类型解释型语言的方便与轻松结合起来的一个尝试,”他说,“它到底能做多少,还得你亲自去尝试了才知道。”

与会人员Larry Augustin, 客户关系管理软件提供商SugarCRM的CEO对Pike所指出的C++和Java变得太复杂了的观点表示赞同,尽管他也说这是在一切为应对广泛应用需求而发展的语言身上所发生着(了)的。

“这些语言在复杂度上增长的原因是,它们用得越多,我们就会发现越多的错误和二义性,然后为消除这些错误和二义性而做的工作又创造出了一些更复杂的东西出来,”具有软件工程和程序语言设计背景的Augustin这么说。

“我很欣赏你们的目标,”他谈及Pike等人的努力时这么说。“问题是他能否达成那一目标,抑或是在被越来越多人用之后,它也会变得很复杂,”Augustin说。

Joab Jackson 负责为IDG News Service报道企业软件和一般技术突破的新闻。您可以在推客上跟随他:@Joab_Jackson。他的Email地址是:Joab_Jackson@idg.com

 

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:谷歌高管对Java、C++的复杂性不满
分享
评论(18)
最新评论
0
JavaScript是为避免C++和Java不断增长的复杂性,而在过去十年里被开发出来的一批语言中的一支。其它支还包括Ruby和Python。
---------------------------------------------------------
JavaScript 可以跟C++,java,ruby,python相提并论么?
0
8楼:myleft 发表于 2010-07-27 15:30 (非会员)
“JavaScript是为避免C++和Java不断增长的复杂性。”JavaScript不是網頁腳本語言麼。
Ruby和Python也是屬於腳本語言啊。怎麼相提並論。
----------------------------------------------------
尼玛,一个是客户端脚本语言一个是服务器端的,怎么可以相提并论呢?
0
这个主要是他自家的那个语言要出来了。。。在造势吧~
0

引用来自“打酱油的”的评论

问:高管是干什么的?
答:磨嘴皮子的!

顶!
0
看好python
0
go太不成熟了,我只能抱着期待的心情
0
@夜游神
我同意vical的看法。
建立规范只能解决一部分的问题,很多问题无法藉由规范来控制。
1.你们总要用别人开发的中间件或类库吧,那些复杂的特性自然就被带进系统
2.c++复杂度带来的另一个问题就是"新老手的差距过大",老手经常要帮新手解决低级错误而降低生产力
3.调试成本高

事实上只需要少量的c++老手编写关键性的性能代码,主体还是用其他语言会轻松些
0

引用来自“夜游神”的评论

纯粹是卖瓜.
一个高管身份的人本来就没什么资格评价C++. C++确实非常复杂,但又没要求你一定要复杂,公司可以建立规范,不使用某些特性就OK了.当然C++能在一些编写细节上再人性一点,就很好了.C++为了完美,的确需要改变.每个人都试图通过批判C++来卖弄自己的软件觉悟 或推销自己的产品.
另外我知道Gmail为什么这么慢了. go 我也看了. 开始还能接受,觉得很好,很快我又放弃了.一些我在C++里能做的事情,它无法满足.

在项目里用C++烦得要死之后你就会想骂了。
规范?那我曾在组里定过一个:
可以用C++,但不能用STL,不能超过2重继承,不能用异常,RTTI,不能用模板,不能用影响VC/GCC移植的特性,如果开发的是中间库,则对外必须是C接口。不能接受则请用C。
我看你还用不用。
0
胡说八道~
0
问:高管是干什么的?
答:磨嘴皮子的!
0
“JavaScript是为避免C++和Java不断增长的复杂性。”JavaScript不是網頁腳本語言麼。
Ruby和Python也是屬於腳本語言啊。怎麼相提並論。
0
纯粹是卖瓜.
一个高管身份的人本来就没什么资格评价C++. C++确实非常复杂,但又没要求你一定要复杂,公司可以建立规范,不使用某些特性就OK了.当然C++能在一些编写细节上再人性一点,就很好了.C++为了完美,的确需要改变.每个人都试图通过批判C++来卖弄自己的软件觉悟 或推销自己的产品.
另外我知道Gmail为什么这么慢了. go 我也看了. 开始还能接受,觉得很好,很快我又放弃了.一些我在C++里能做的事情,它无法满足.
0
c++可以说是面向对象的标准。
0
说实话,我看过几行go语言的代码,我还真没有发现它有多么的简单。
0
搞来搞去还是高级语言。
0

说说容易可是改变真是太难了.
不之前linux之父就说C++不好吗.
0
Java确实复杂了点
0
确实~~~
顶部