Google 的 Go 到底是为了解决什么样的问题

polaris · · 5236 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

**来自官方FAQ的解答:** 用Go语言设计者的话说,主要有如下几点 1)计算机的速度变得极快,但软件开发还不够快。 2)在今天,依赖管理成为了软件开发中一个大的部分,但C传统语言的“头文件”与清晰的依赖分析——以及快速编译背道而驰。 3)对于像Java和C++那笨重的类型系统的反抗越来越多,这将人们推向了Python和JavaScript之类的动态类型语言。 4)流行的系统语言对于像垃圾回收与并行计算那种基本思想的支持并不算好。 5)多核计算机的出现产生了一些麻烦与混乱。 而Go语言是一种并发的、带垃圾回收的、快速编译的语言。它需要满足以下几点: 1)它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 2)Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 3)Go的类型系统没有层级,因此不需要在类型之间的关系定义上花费时间。此外,尽管Go是静态类型的,该语言也试图使类型感觉起来比典型的面向对象语言更轻量级。 4)Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 5)按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。 Go在既有语言与环境下进行系统编程的挫折中诞生。编程变得太难,对语言的选择有一定的责任。 我们必须在高效编译、高效执行或轻松编程之间选择其一,在同样主流的语言中,三者不能同时达到。 程序员们通过转移到Python和JavaScript之类的动态类型语言,而非C++或一定程度上的Java上, 来选择轻松在安全和效率之上。 Go试图成为结合解释型编程的轻松、动态类型语言的高效以及静态类型语言的安全的编译型语言。 它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题: 一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。 这些无法通过库或工具解决好,必须创造新的语言。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5236 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传