Presentation is loading. Please wait.

Presentation is loading. Please wait.

Go, Next Java? No, Next 许式伟 2012-9-10. Go ,会成为下一个 Java 吗? 不。 Go 不是下一个 Java 。 认为 Go 是下一个 Java ,那是远远低估 Go 的能力。 Go 是下一个 C !

Similar presentations


Presentation on theme: "Go, Next Java? No, Next 许式伟 2012-9-10. Go ,会成为下一个 Java 吗? 不。 Go 不是下一个 Java 。 认为 Go 是下一个 Java ,那是远远低估 Go 的能力。 Go 是下一个 C !"— Presentation transcript:

1 Go, Next Java? No, Next C! @ 许式伟 2012-9-10

2 Go ,会成为下一个 Java 吗? 不。 Go 不是下一个 Java 。 认为 Go 是下一个 Java ,那是远远低估 Go 的能力。 Go 是下一个 C !

3 谁是最成功的语言? 1970 – 至今 – 什么语言是最成功的? C (1970) C++ (1979) Objective-C (1986) Java (1994) C# (2002) Go (2009)

4

5

6 Sourceforge 语言指数 (8 月 ) Rank NameShareLast month’s shareLast year’s share 1C17.507%16.769%17.445% 2Java16.987%19.576%15.002% 3Objective-C10.333%9.872%2.582% 4C++7.730%8.093%9.025% 5Basic7.283%7.611%6.302% 6Python4.370%3.759%3.531% 7PHP4.316%4.188%7.753% 8C#4.296%4.383%4.914% 9Perl2.312%2.102%6.025% 10Ruby1.691%1.656%1.809% 11JavaScript1.401%1.402%1.674% 12R1.377%1.281%1.389% 13Pascal1.119%1.125%0.993% 14D1.058%1.179%0.843% 15Ada0.955%0.923%0.999% 16Delphi0.765%0.749%1.076% 17Go0.733%0.786%0.714% 18Bourne shell0.720%0.745%0.130% 19Logo0.647%0.673%0.740% 20Fortran0.607%0.571%0.454%

7 C 是 40 年来最成功的语言 C 语言的黄金时间 – 1970 至今, >40 年,经久不衰 Java 语言的黄金时间 – 2000 至 2012 ,约 12 年,老态初显

8 Go, Next C! Go 语言要学习的是 C ,不是 Java – 多数的系统级语言包括 Java 、 C# ,其根本的编 程哲学来源于 C++ ,将 C++ 的面向对象进一步发 扬光大。 – 但是 Go 语言的作者们很清楚, C++ 真的没啥好 学的,他们要学的是 C 语言。 C 语言经久不衰的 根源是它足够简单。 Go 语言也要足够得简单。 Go ,互联网时代的 C ,下一个 C – 要再创 C 的辉煌

9 个人预测 2011 年 5 月 – 七牛云存储公司成立,选择了 Go 语言 – 我在团队内部说: Go 语言会是未来最流行的语言 Go 会超过 C 、 Java ,成为最流行的语言 – 2012 年 2 月:新浪微博 http://weibo.com/1701886454/y7pROzJJj – 2012 年 3 月《 Go 语言编程》序 – 2012 年 4 月 QCon Beijing 在《 Go ,互联网时代的 C 语言》的讲座上

10 自我介绍 七牛 – 七牛云存储 CEO – 《 Go 语言编程》作者 盛大 – 盛大创新院资深研究员 – 盛大祥云计划(盛大云前身)发起人 – 盛大网盘发起人 百度 – 百度网页搜索 金山 – 金山软件技术总监 – WPS Office 2005 首席架构师 – 金山实验室发起人 研究云存储课题

11 进入主题 Why Go is Next C?

12 Go 至少领先其他语言 10 年 尽管是 40 年来出现的语言非常之多,各有 各的特色,让人眼花缭乱。但是我个人固 执地认为,谈得上突破了 C 语言思想,将 编程理念提高到一个新高度的,仅有 Go 语 言而已。 10 年后才会有语言试图去突破 Go 语言已经 达到的新高度。 – 不会是现有的任何语言,而会是一门新兴语言。

13 Go ,超越我的想象 Go 语言的各种语法特性显得那么深思熟虑、 卓绝不凡,其对软件系统架构的领悟,让 我深觉无法望其项背。 处处带给我惊喜的语言。

14 惊喜 1 :大道至简 基础哲学:继承自 C – 大道至简。 显式表达 – 任何封装都是有漏洞的。 – 最佳的表达方式就是最直白的表达方式。 – 不试图去做任何包装。 – 所写即所得的语言。 少就是指数级的多 – 最少特性原则。 – 如果一个功能不对解决任何问题有显著价值,那么 就不提供。

15 惊喜 2 :最对胃口的并行支持 我的并行编程历程 – Erlang – CERL 1.0 (Erlang 风格并行的模仿 ) – CERL 2.0 ( 对 Erlang 风格并行的修正 ) 后来发现, CERL 2.0 的并行编程理念,与 Go 完全一致。一个雏形版的 Go 。 – Go 语言 参考资料 – ECUG 2011 讲座 《从 Erlang 到 CERL 到 Golang 》 – 下一期程序员杂志 《云计算时代,我与 Go 语言难解的缘分》 – Collison 预言: Go 语言将在两年内制霸云计算领域! http://www.csdn.net/article/2012-09-14/2809984-will-go-be-the-new-go-to- programming-lan http://www.csdn.net/article/2012-09-14/2809984-will-go-be-the-new-go-to- programming-lan

16 惊喜 3 : interface 非侵入式接口 – 只要某个类型实现了接口要的方法,那么我们 说该类型实现了此接口。该类型的对象可赋值 给该接口。 – 任何 Go 语言的内置对象都可以赋值给空接口 interface{} 。 接口查询 – Windows COM 思想优雅呈现。

17 惊喜 4 :极度简化但完备的 OOP 废弃大量的 OOP 特性 – 如:继承、构造 / 析构函数、虚函数、函数重载、 默认参数等。 简化的符号访问权限控制 取消隐藏的 this 指针 – 改为显式定义的 receiver 对象。 OOP 编程核心价值原来如此简单 – 只是多数人都无法看透。

18 惊喜 5 :错误处理规范 函数多返回值 内置的 error 类型 defer 例子 f, err := os.Open(file) if err != nil {... // error processing return } defer f.Close()... // process file data

19 惊喜 6 :功能内聚 用组合实现继承 ( 包括虚拟继承 ) type Foo struct { // 继承 Base... } type Foo struct { // 虚拟继承 *Base... } 直达问题的本质,清晰易懂。

20 惊喜 7 :消除了堆与栈的边界 Go 语言里面你不需要关心,也并不清楚, 变量在堆上还是栈上。 与 Go 语言的显式表达并不矛盾 – Go 语言强调的是对开发者的程序逻辑(语义) 的显式表达,而非对计算机硬件结构的显式表 达。 – 对计算机硬件结构的高度抽象,将更有助于 Go 语言适应未来计算机硬件发展的变化。

21 惊喜 8 : C 语言的支持 Go 语言是除了 Objective-C 、 C++ 这两门以 兼容 C 为基础目标的语言外的所有语言中, 对 C 语言支持最友善的一个。 – 什么语言可以直接嵌入 C 代码?没有,除了 Go 。 – 什么语言可以无缝调用 C 函数?没有,除了 Go 。 对 C 语言的完美支持,是 Go 快速崛起的关 键支撑。

22 Go 语言当前状态 最适合服务端开发 – Go 语言的标准库最完善( for 服务端开发)。 不太适合桌面开发 – 没有桌面开发的基础组件 GDI UI 系统与事件处理

23 献给 给力的复旦学子 ^_^ 所有劳碌的 IT 程序猿 – 从此快乐编程!

24 Q & A 许式伟 @ 七牛云存储


Download ppt "Go, Next Java? No, Next 许式伟 2012-9-10. Go ,会成为下一个 Java 吗? 不。 Go 不是下一个 Java 。 认为 Go 是下一个 Java ,那是远远低估 Go 的能力。 Go 是下一个 C !"

Similar presentations


Ads by Google