这些是大家讨论中来自于@hooluupog 在http://www.oschina.net/news/30754/less-is-more-go-language 一些评论,感觉还是很理性、很不错,所以做了一下简单的整理,来给大家分享下。同时看到其他人的评论,确实也收获很多。
google内部主要使用c++/java还有python,所以没怎么主动推过自己的语言,也没有开发过什么IDE,都是以eclipse插件的形式出现,比如gwt,adt。google以搜索起家,不像微软和苹果是OS平台起家,所以没属于自己的平台专属的语言很正常。苹果30多年过去了直到最近oc才火了,微软也是推过各种自家的语言,直到现在就一个c#也是勉勉强强,远达不到java的应用广泛程度。dart和go可以说是Google自己第一次推的语言,dart为了解决外部的问题,go则是为了解决自己内部的问题。dart的推广力度比go大的多,一面世就是ide支持(darteditor),而且包括java教父,v8虚拟机的作者等等多位大牛被调去开发dart,google也是力推dart,而且dart虚拟机已经被chrome内置,这算的上是从自家的平台层面推广dart了。再看看go是什么情况。
go来自ken,rob等等几位unix,贝尔实验室的大牛的兴趣之作,根本不是google力推的东西,而且其官网的golang也找不到任何google的标识。它是一个开源项目,几位大牛的闲暇之作,原本就没有什么商业化的目的,那几个作者就是觉得现存的c/c++和动态语言都各有优缺点,不够好,于是go出现了,就是这么单纯而又似乎不切实际的目的。但随着go的开发深入,到最近go1正式版的推出,这个语言才可以说是真正的进入到生产化阶段。原本打算内部使用的,没想到随着发展,外部的兴趣越来越浓,所以go有成为通用语言的潜力。有多少公司使用go?看看go in production那个视频,go1才出来不久,要知道python差不多经历了10年才火了。
目前阻碍go起飞的因素就是:1.库太少(这需要时间,python刚开始才几个库);2.开发工具不成熟,没有杀手级的应用出现来推它。(同样,需要时间。go目前的主要任务还是在gc,编译器改进上面,还有接下来的性能优化,所以等这些问题解决了,好的应用出现只是早晚的事情)。语言能否主流被喜欢无非就是语言本身设计的很好和有推广的平台。go的设计没有问题(而且还有大的潜力继续改进,比如未来可能考虑对泛型的支持),至于推广平台。
1.android。 android有dalvik虚拟机,所以java是其根本不会变。现在用go去替代java,那么android会死掉,因为go是未成熟正在走向成熟的新的东西,而android和java则是早已成熟旧有的东西,go应该是融于其中,提供一种选择,而不是去替代。但android有ndk,可以用c,c++,同样,go有cgo,所以未来android支持go不会是幻想;
2.chromeOS。上面有人说为啥google用mac,ubuntu不用chromeOS。因为chromeOS和go一样同样是新出现的东西,需要不断的改进完善,而很多东西根本没办法瞬间迁移过来。再者,chromeOS目前面向的是消费者,根本不是针对开发者,因为目前在chromeOS中根本就没有开发平台环境,开发者怎么用?很简单的道理。难道google没有发明c++,java, google就不能使用他们么?
go语言在tiobe排行榜上面为啥不见影子?
1.go这个词本身太宽泛;
2.go有godoc,没人去搜索引擎中检索;
3.go还年轻。不过倒是可以去github和sourceforge看看go的排名,看看这个语言如今热不热。
有人说 你开发的东西你自己都不用,别人怎么对它有信心?
1.go不是google力推的,是google内部的几位unix大佬20%时间搞的,只不过目前发展的很好,完全转变成了一个开源项目,而且代码贡献者中非google的人员越来越多。
2. gae已经支持go,可以使用go编些代码了;youtube服务端的一些代码已经用go重写了。已经有一些商业公司开始在其商业化生产中使用go了。国内的豆瓣已经使用go了,去知乎上问问就知道。
3.还是那句话,go还年轻,OC用了几十年,python用了10年,ruby直到rails出现,c#依靠微软从windows平台层级和大力推广.net至今才有那么些许成绩,java从96年到现在多少年了。语言要成为主流需要时间的积累去印证。
go目前的软肋是桌面开发,缺乏gui库。go原本是网络编程,跑在服务端的语言,为解决高并发的并行编程语言。但发展到现在,其有成为通用语言的潜质,所以做图形方面的开发不是不可以。因为google本身不是传统桌面的公司,web是其基因,所以,它支持桌面开发的可能性多大不知道。但如今,html+js,websocket,web化的桌面是未来的趋势,谁知道到那个时候传统桌面应用的重要性还有多大?需不需花大力气去搞桌面库?这可是大工程,就像google从来不去开发自己的ide那样。
但同时从另一方面讲:第三方的力量是不可忽视的。go和第三方的图形库绑定越来越多。go和opengl的讨论话题也越来越多。如果这些东西得到不错的结局,未来go可以胜任游戏开发领域。
如果有人说:捧go是为了舔google,那我还不如去捧dart,比起一直被google力推,从内部大牛到资金全方位的支持上面,go和dart比起来就不是亲生的。喜欢go,觉得它未来是有潜力,希望的语言之一,为什么?等你有时间了静下心来,自己去了解,学习下go就知道了。
Go的开发环境,凭Google的个性,一定会靠着Eclipse,肯定自己不会用Go去开发一个,顺便看到OSC推荐新闻里的LiteIDE,也是Go的开发工具,C/C++的.
你自己来说说,Go到底现在能干啥?Java在桌面软件再不怎么样,好歹人家还能用来开发IDE不是?
================================================
你说的这些,其实就是在问:我能用go做桌面开发么?不知道,也许能,也许不能,未来的需求决定。java不做桌面开发那也是java,因为java的重头在j2EE。
以上是整理的我认为很有思想的评论,学术上有分歧是好的,碰撞下才会产生更多的想法。时间能说明一切,无论好与不好,真心的希望技术改变生活,希望用我们的代码去构建更美好的世界!