这是一篇翻译练习。力图保留原意。若有不准确处,求速速指出。猛击此处(墙)看原文。作者为Rob Pike,贝尔实验室来的大牛,现在就职于Google。他主导了Go语言的创建工作。下面是正文——
——————————————正文分隔线——————————————
这是我在2012年6月的Go SF上演讲的文本。
这是一个个人演讲。 我承认,虽然面前的团队让Go诞生并延续,但是我的观点并不代表任何其他Go语言小组成员的意见。 我也想感谢Go SF的组织者提供这个和你们交流的机会。
几星期前我被问起:“你在推出Go的过程中遇到的最大的惊奇是什么?”我立即意识到了答案: 虽然我们希望C++程序员意识到Go是个较好的选择,但是令人意外的是,大多数Go程序员来自Python和Ruby这样的动态语言,而很少有来自C++的。
我们——Ken,Robert和我——是C++程序员(译者: Ken也用C++?),当时在为解决我们所写的这类软件产生的问题设计一个新的语言。 这似乎有点自相矛盾,因为别的C++程序员根本不关心这些问题,更不会去设计一个语言。
我今天想说的是关于那些激发我们创造Go的事情,和为什么它本不应令我们如此惊讶。 我保证这些内容更多与Go相关而不是C++,所以即使你不很了解C++你也能跟得上。
回答可以这样归结: 你认为”少即是多”呢,还是”少就是少”?
这里有个比喻,将以真实故事的形式给出。 贝尔实验室中心原来发放3位数号码: 物理研究是111,计算科学研究是127,如此这般。 1980年代早期,一个便笺飞过来说”鉴于你们对研究的理解有所加深,将为你们的号码多加上一位,以便更好地体现你们的工作”。 所以我们中心的号码变成了1127。 Ron Hardin半当真地开玩笑说如果我们真的理解我们的世界更好一点的话,我们将丢掉一位数字,将127变成27。 当然主管没听到这个笑话(这也不是我们希望的),但是我想这里面有点值得思考的东西。 少即是多。 你理解得越好,你将变得越简洁。
先记住这句话。
回到2007年9月,我在做一个庞大的Google C++项目的细微但核心的部分。 开发必须交互进行,但是我这部分在我们的Google编译集群上要编译45分钟。 同时,有个消息传过来说一群在C++社区的Google员工将开一场讲座,介绍即将到来的C++0x(现在称为C++11)。
在那场持续一小时的讲座中,我们听说了诸如计划中的35个新特性的说法——事实上还有更多,但是那场讲座只说有35个。 有些特性当然是细微的,但是讲座中谈到的至少是足够重要的。 提到的特性中,有些十分微妙并难以理解,比如右值引用(rvalue references); 有些特别符合C++范儿,比如可变参数模板(variadic templates); 还有些十分疯狂,比如用户定义的字面量(user-defined literals)。
那时候我问了自己一个问题: C++社区真的觉得C++错在没有足够多的特性么? 显然,从Ron Hardin的笑话的角度看,简化语言将比添加新特性取得更好的效果。 当然,对C++来说这很不靠谱,但是先记住这点。
在这场讲座的几个月之前我做了一场讲座(你可以通过YouTube看到),讲的是一个我1980年代做的一个玩具并发编程语言。 这个语言叫Newsqueak,而且显然地,它成为了Go的前身。
在我在Google工作的过程中,我发现我丢掉了Newsqueak中的一些点子。 现在我将重新思考它们,所以我才做了那场讲座。 我相信它们会让服务器端编程变得更容易,而且Google能真正从中获益。
我真的尝试将这些点子加入到C++中,可惜失败了。 我实在难以将一组并发操作融入到C++的控制流程中去——当真融进去的话,它们将变得十分丑陋,从而难以看到优越性。 另外,C++将它变得十分臃肿(虽然我从来没真正发现C++苗条过)。 所以我放弃了这个想法。
但是C++0x的讲座使我再次思考。 一件事十分困扰我——我相信也困扰着Ken和Robert——C++的新内存模型居然新增了原子类型。 为这个不堪重负的类型系统加上这么个细致精巧到极致类型机制十分的不靠谱,不是么? 将语言和今日的硬件绑在一起似乎有点目光短浅并且不明智,因为硬件过几年就有大变。
那场C++0x讲座结束之后,我们回到办公室。 我开始了另一个编译(译者笑),转过转过我的椅子,面对Robert,然后开始问一些尖锐的问题。 在编译完成之前,我们拉拢了Ken,并决定做些什么。 我们再也不想写C++了,并且我们——尤其是我——在写Google代码时,想让并发拿来就用。 同时我们也想解决”大系统编程”的问题,容后细说。
我们在白板上写下一组我们需要的东西——迫切需要的那种。 我们规划出大体的轮廓,忽略了语法细节和语义。
我仍然有一条碉堡了的那周的邮件线索。 这是一些摘录:
Robert: 起点: C,修补一些显而易见的瑕疵,去除繁杂的东西。 新增一些特性。
Rob: 命名为’go’。 你可以为这个名字编造各种理由,但是它确实拥有很多好的特性。 它短小,易于打出。 工具么: goc,gol,goa。 如果有个交互式调试器/解释器,可以直接叫’go’。 代码后缀是。go。
Robert: 空接口: interface {}。 将被所有接口实现(译者: 原文如此),并且可以取代void*。
我们并没有立即全部设计出来。 比如我们花了一年多才设计出了数组(array)和切片(slice)。 不过相当一部分重要的设计在最初的几天中浮现。
注意到Robert说C是起点,并非C++。 对于这点我不是很确定,不过我相信他说的是C,因为Ken在场(译者笑)。 但是最后我们并没有从C开始,这倒是真的。 我们从最初的草稿开始,仅仅从其它语言中借鉴琐碎的东西,比如运算符,各种括号和一些常见的关键字。(当然我们也借鉴了我们所知道的语言中的思想。)不管 怎么说,我们破而后立,从头做起,以此来响应C++。 我们并非想做一个更好的C++,甚至不是一个更好的C。 它仅仅是一个对我们所关心的软件来说更好的语言。
最后,我们得到了既不同于C也不同于C++的东西,甚至比许多人意识到的还要不同。 我列了一个对于C和C++的Go的重要的简化的列表:
- 常规的语法(不需要一个符号表来辅助解析)
- GC机制(仅仅是GC)
- 没有头文件
- 显式依赖关系
- 没有循环依赖
- 数字常量仅仅是数字(译者: 没有类型)
- int和int32不是同种类型
- 字母大小写将确定可见性
- 任何类型都可以有方法(没有类)
- 没有子类型继承(没有子类)
- 包级别的初始化和良好定义的初始化顺序
- 同一个包的文件一起编译
- 包级别的全局定义可以以任意顺序进行
- 没有算术类型转换(常量可以弥补)
- 接口是隐式实现的(没有”implements”声明)
- 嵌入的结构体(没有类型提升和子类)
- 方法像函数一样定义(不必定义在特殊的地方)
- 方法就是函数
- 接口就是方法(没有数据)
- 方法仅仅靠名字匹配(不是靠类型)
- 没有构造函数和析构函数
- 后置增量/减量运算符仅仅是语句,而不是表达式
- 没有前置增量/减量运算符
- 赋值号是语句,不是表达式
- 表达式求值顺序在赋值和函数调用时确定(没有所谓的”sequence point”)
- 没有指针算术
- 内存总是初始化为0
- 对本地变量取地址是合法的
- 方法中没有叫this的指针
- 分段式栈
- 没有常量或其它类型的注记
- 没有模板
- 没有异常
- 内建字符串,切片和映射(map)
- 数组边界检查
并且,我相信通过这一系列的简化,Go将比C或C++更具有表现力。 少即是多。
但是我们没法一下子把所有部分都做出来。 我们需要构建最基础的部分,比如说类型系统的表示,能良好应用于实际的语法,和一些无法形容的但能让库更容易相互操作的东西。
我们同样增加了C或C++中没有的东西,比如切片和映射,组合字面量(?),文件顶层的表达式(这虽是件大事,但是几乎不为人知),反射机制,GC等等。 自然,还有并发。
一个显眼的缺少的东西是类型的继承。 请允许我粗暴地对待它一分钟。
早先构建Go的时候有人跟我说,他无法想象用一门没有泛型的语言工作。 正如我在别处说明的那样,我觉得这是个很诡异的言论。
公平起见,他用自己的话说可能是他真的很喜欢C++中STL的那些容器。 以辩论为目的的话,我们来正面看看他的言论。
他说的意味着: 他发现写一个容器,比如以int为元素类型的链表,或字符串映射是一种不能忍的重负。 我发现这是个很诡异的言论,因为我几乎没把时间花在那些个问题上,即使我在用没有泛型的语言。
但是,更重要的是,他说的那些表示类型系统将会解除这种负担。 类型系统。 不是多态函数,或语言级原语,或其它类型的辅助手段(helpers),而仅仅是类型系统。
这就是粘住我的那个细节。
从C++或Java来Go的程序员怀念和类型系统在一起的日子,特别是带继承和子类的那部分。 也许我在类型系统方面是粗暴了些,但是我绝不觉得那套玩意非常具有表现力。
我已故的朋友Alain Fournier一次告诉我说他认为学术工作的最底层是分类学。 然后信不信由你,类型继承正是分类学。 你必须决定哪个萝卜扔哪个坑里,每个类型的父类型,A是否继承B或者B是否继承A。 一个可排序的数组是一个带有sort方法的数组呢,还是一个长得像数组的排序器呢? 如果你觉得类型系统能解决所有设计上的问题,你必须做出这个无意义的选择。
我相信对编程来说那是个荒诞的思路。 真正的重点不在于事物之间的继承关系,而在于它们能提供些什么。
因此,接口这个概念进入了Go。 但是它们都是主要部分——真正的Go之道——的一部分。
如果C++和Java注重类型继承和类型系统的分类学,那末Go就注重组合。
Doug Mcilroy,Unix管道的最终发明人,在1964年(!)写道:
我们应该有一些机制能将程序耦合(串)起来,像花园软管那样——当我们需要另一种方式传送数据时,拧紧另外一段即可。 I/O也可以这么做。
这也是Go所提倡的道路。 Go吸收这个观点,然后把它推进得十分远。 这是一门关于(功能上的)组合和(调用上的)耦合的语言。
一个显然的例子是接口是组合各部分的途径。 关键是,那些部分是什么并不重要,如果某类型实现了M方法我就可以把这个方法填到接口里去。
另一个重要的例子是如何让并发性提供给我们不同的独立计算部分的组合。
并且还有一种不同寻常(但十分简单)的类型组合形式: 嵌入。
————————————————————————
我想提一个和之前不太相关的Go设计: Go被设计为大型团队用来写大型程序的语言。
这里有个概念是”大型编程”,并且不知何故C++和Java主宰了这个领域。 我相信这只是因为其历史巧合,或者是工业上的巧合。 但是被广泛接纳的观点是他们和面向对象设计有关。
我压根不相信这点。 大型软件需要确定的方法,但是更重要的是它需要强依赖性管理,干净的接口抽象和优越的文档工具。 C++没一点做得好的(虽然Java明显要好很多)。
我们还不知道Go语言能做到何种程度,因为现在还没有足够的软件是用Go写的。 但是我非常有信心于Go将会成为一个优越的大型编程语言。 时间会说明一切的。
————————————————————————
现在,回到我们演讲开始提的那个问题:
为什么Go,作为从头被设计为符合C++使用者习惯的语言,没有吸引很多C++程序员?
严肃点说,我觉得是因为Go和C++在哲学方面有着巨大的不同。
C++是将所有东西提到你指尖上(译者: 即多范式)。 我在C++11的FAQ上找到了这段引用:
C++能优雅地,灵活地,零损耗地(相比于手工操纵代码)表达抽象的能力大幅提升了。
Go并非这种”围绕式”的。 你并不需要所有的东西都内建好。 你不需要对每个执行细节进行精细的控制。 比如,你不需要RAII,但你拥有一个垃圾回收器,也意味着你不需要执行释放内存的操作。
你得到的是一组非常强有力但易于理解,易于用来构建积木的功能,这些积木可以用来组合出一个你需要的问题的解法。 这并不意味着它能像别的一些语言创造的解法一样快速,复杂,或带来思想上的激励,但是它总能保证易于书写,易于阅读,易于理解,易于维护,而且可能更安全。
从另一个角度说,这当然算作过度简化:
Python和Ruby程序员转到Go,因为他们不需要牺牲表达能力,却获得了性能的提升,并且能好好玩并发系统了。
C++程序员并没有转到Go是因为他们好不容易获得了对程序的精细控制,并且不想牺牲它们的任何一部分。 对他们而言,写软件不仅包括把事情做完,而且包括用特定的方式完成。
关键是,在将来,Go的成功将会颠覆他们的世界观。
并且从一开始我们就应该意识到这点。 对于C++11的新特性很兴奋的人们并不关心一个拥有如此少特性的语言。 即使最后他提供了如此多。
谢谢。
引用来自“zantesu”的评论
引用来自“hooluupog”的评论
目前阻碍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的排名,看看这个语言如今热不热。
另外我觉得Go不在tiobe排行榜上出现的理由站不住脚,应该不是由于Go这个词太宽泛,否则Go是如何夺得当年年度语言大奖的?如果说Go有godoc,那么C#同样有包罗万象的MSDN.另外这三个理由都不能解释为何夺得年度大奖的Go从前50的榜单上消失掉.
Go的前景我看不明确,但dart呢?如果只有chrome一家支持的话,我怎么觉得发展前景还不如Go呢?
引用来自“hooluupog”的评论
目前阻碍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的排名,看看这个语言如今热不热。
另外我觉得Go不在tiobe排行榜上出现的理由站不住脚,应该不是由于Go这个词太宽泛,否则Go是如何夺得当年年度语言大奖的?如果说Go有godoc,那么C#同样有包罗万象的MSDN.另外这三个理由都不能解释为何夺得年度大奖的Go从前50的榜单上消失掉.
Go的前景我看不明确,但dart呢?如果只有chrome一家支持的话,我怎么觉得发展前景还不如Go呢?
你自己来说说,Go到底现在能干啥?Java在桌面软件再不怎么样,好歹人家还能用来开发IDE不是?
================================================
你说的这些,其实就是在问:我能用go做桌面开发么?不知道,也许能,也许不能,未来的需求决定。java不做桌面开发那也是java,因为java的重头在j2EE。
有人说 你开发的东西你自己都不用,别人怎么对它有信心?
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的设计没有问题(而且还有大的潜力继续改进,比如未来可能考虑对泛型的支持),至于推广平台。
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的排名,看看这个语言如今热不热。
go来自ken,rob等等几位unix,贝尔实验室的大牛的兴趣之作,根本不是google力推的东西,而且其官网的golang也找不到任何google的标识。它是一个开源项目,几位大牛的闲暇之作,原本就没有什么商业化的目的,那几个作者就是觉得现存的c/c++和动态语言都各有优缺点,不够好,于是go出现了,就是这么单纯而又似乎不切实际的目的。但随着go的开发深入,到最近go1正式版的推出,这个语言才可以说是真正的进入到生产化阶段。原本打算内部使用的,没想到随着发展,外部的兴趣越来越浓,所以go有成为通用语言的潜力。有多少公司使用go?看看go in production那个视频,go1才出来不久,要知道python差不多经历了10年才火了。
说到底还是那句话,自己都不用的东西,凭什么让别人对这玩意有信心?
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
去查查吧!运行环境,在线编译,开发框架什么的,Google用的是C和Java,根本关Go屁事!
你要说google的httpserver和数据库是c写的就能说GAE是C,我只能承认我等P民原来天天都是做的C开发
难道你还想说,因为go的编译器是c写的,所以GAE go算C来开发的?
再说说GAE的GO的http开发框架,本来就是go自带的http包,源代码都在那摆着呢,竟然说c和java写的,呵呵呵呵呵呵
Go的开发环境,凭Google的个性,一定会靠着Eclipse,肯定自己不会用Go去开发一个,顺便看到OSC推荐新闻里的LiteIDE,也是Go的开发工具,C/C++的.
你自己来说说,Go到底现在能干啥?Java在桌面软件再不怎么样,好歹人家还能用来开发IDE不是?
----
怕你不清楚给你举个C#的例子,2000年左右诞生,2002年初就有了第一版的asp.net,差不多同时MS的网站就开始用asp.net了.反过来看Google的Go,2009年发布,2010年获得年度编程大奖,到现在还蹦跶出个什么玩意儿不?置顶就有刚刚出炉的7月编程语言排行,你还能找的见Go不?
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
去查查吧!运行环境,在线编译,开发框架什么的,Google用的是C和Java,根本关Go屁事!
你要说google的httpserver和数据库是c写的就能说GAE是C,我只能承认我等P民原来天天都是做的C开发
难道你还想说,因为go的编译器是c写的,所以GAE go算C来开发的?
再说说GAE的GO的http开发框架,本来就是go自带的http包,源代码都在那摆着呢,竟然说c和java写的,呵呵呵呵呵呵
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
去查查吧!运行环境,在线编译,开发框架什么的,Google用的是C和Java,根本关Go屁事!
你要说google的httpserver和数据库是c写的就能说GAE是C,我只能承认我等P民原来天天都是做的C开发
难道你还想说,因为go的编译器是c写的,所以GAE go算C来开发的?
再说说GAE的GO的http开发框架,本来就是go自带的http包,源代码都在那摆着呢,竟然说c和java写的,呵呵呵呵呵呵
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
去查查吧!运行环境,在线编译,开发框架什么的,Google用的是C和Java,根本关Go屁事!
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
我的观点是Google的产品都不使用Go----你只要能举出一个Google采用Go发布的产品,就当我放屁好了.Google只要有一个采用Go技术的项目发布,我就无话可说.
----------
相比之下,MS采用C#和.Net的产品根本不计其数,Windows的Server每个新版本从Beta就开始在MS的网站部署使用,对比下Google,不觉得Google很没底气么?不成熟,测试版什么的根本就是借口,Google一向不是把半成品就发布了,再通过突飞猛进的版本号来完善的么?----根本就是自己的东西自己都不采用,让其他人去做小白鼠!
引用来自“何文祥”的评论
Go并不是必所需
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
引用来自“费斯特”的评论
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
Android支持让.Net通过Mono在其系统上跑App,但你能说Android使用了.Net来开发么?
我知道你要说Android发布时还没有Go.
我知道你要说Go本来是用来开发后台服务端程序的.
但我不知道新发布的Google+为什么也不使用Go?
引用来自“zantesu”的评论
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
引用来自“费斯特”的评论
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
我本以为Go开发出来就是让广大程序员去消磨时间与精力的东西,因为Google自己都不使用Go.
我本以为Google有能力开发一个这么优秀的Go,却没有能力在Andriod上开发出一个比Java更优秀的语言来.即便要冒着侵权的风险和剽窃的骂名.
引用来自“littleJava”的评论
引用来自“紫外线”的评论
起飞毛阿,吹了两年了,现在都不知道用它能干什么,或者说什么东西只能用它?android应用都开发不了
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
引用来自“紫外线”的评论
起飞毛阿,吹了两年了,现在都不知道用它能干什么,或者说什么东西只能用它?android应用都开发不了
引用来自“孙鹤”的评论
有毛用,android都不用自己的语言,非跟oracle墨迹专利。
引用来自“孙鹤”的评论
有毛用,android都不用自己的语言,非跟oracle墨迹专利。
引用来自“周凌翔”的评论
如果語言的名字能夠像Java一樣幽默或者Python一樣霸氣就好,或者Ruby的華麗亦可,GO~~~總感覺和Google綁定了,用起來感覺不夠大眾,而是時刻在用Google的東西,語言沒有獨立出來,公司的味道太重。微軟的產品命名不會是MSI或者MIS語言
哈哈
这是因为辛苦啊
你辛苦了半辈子 难道还想继续辛苦!
引用来自“一木四水”的评论
算了吧,不用,用的好好的C,C++ 干嘛要换。
引用来自“zantesu”的评论
少即是多,大道至简,因此要将Go简化到什么都做不了的地步,才能让Go什么都能做,是这样吗?
引用来自“粉梦芊”的评论
引用来自“紫外线”的评论
起飞毛阿,吹了两年了,现在都不知道用它能干什么,或者说什么东西只能用它?android应用都开发不了
引用来自“紫外线”的评论
起飞毛阿,吹了两年了,现在都不知道用它能干什么,或者说什么东西只能用它?android应用都开发不了
引用来自“johnzhang68”的评论
[翻译]大道至简(原标题:少是指数级的多)http://www.oschina.net/news/30584
引用来自“紫外线”的评论
起飞毛阿,吹了两年了,现在都不知道用它能干什么,或者说什么东西只能用它?android应用都开发不了