- 论坛徽章:
- 4
|
本帖最后由 hbsycw 于 2013-06-17 14:46 编辑
好话题,但个人观点:没有银弹!
1、谈谈您对Go语言的特性对当前的程序设计技术领域的冲击
答:个人认知,各种编程语言只是在用不同的方式组织代码,而并没有本质的不同。编程语言所起的作用都是把待解决问题转化为机器码,所不同的是针对待解决问题的规模和转化效率,用那种工具更高效的问题。初步了解了下Go, Go 语言起源 2007 年,并于 2009 年正式对外发布。该项目的三位领导者均是著名的 IT 工程师:Robert Griesemer,参与开发 Java HotSpot 虚拟机;Rob Pike,Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan 9,Inferno 操作系统和 Limbo 编程语言;Ken Thompson,贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范。这是一个由计算机领域“发明之父”所组成的黄金团队(这些都是大神啊,膜拜下~),他们对系统编程语言,操作系统和并行都有着非常深刻的见解。显然,Go语言并不是重复发明的轮子,Go的诞生就是为效率而生。那么,Go语言的特性对当前的程序设计技术领域的冲击是肯定的,但,我认为这只是一种效率补充,而不是颠覆!
Go语言可以说是对编程语言的本质回归,更多做的是减法,而不是编程语言发展的越来越庞大和复杂,例如:JAVA\C#。下面是摘抄的一部分Go语言特性说明,更多信息请大家去官网考证。
关于特性丢失
许多能够在大多数面向对象语言中使用的特性 Go 语言都没有支持,但其中的一部分可能会在未来被支持。
•为了简化设计,不支持函数重载和操作符重载
•为了避免在 C/C++ 开发中的一些 Bug 和混乱,不支持隐式转换
•Go 语言通过另一种途径实现面向对象设计来放弃类和类型的继承
•尽管在接口的使用方面可以实现类似变体类型的功能,但本身不支持变体类型
•不支持动态加载代码
•不支持动态链接库
•不支持泛型
•通过 recover 和 panic 来替代异常机制
•不支持断言
•不支持静态变量
关于 Go 语言开发团队对于这些方面的讨论,你可以通过这个页面查看:http://golang.org/doc/go_faq.html
2、Go语言适用的领域以及其将来的发展潜力
答:根据官方文档来看,Go被定义为一种系统编程语言,因此,可以做的事很多。但就目前来看,好像,主要还是发力于WEB后端程序的构筑,在快速开发应用程序、以及多核和并发性能方面有很大发展潜力。从Google的内部使用来看,对于高性能分布式系统领域而言,Go 这门自创的新编程语言也许比现存的大多数其它编程语言有着更高的开发效率。
|
|