Go 一周年,一年前的今天

未匹配的标注

本文为官方 Go Blog 的中文翻译,详见 翻译说明

Andrew Gerrand
2010 年 11 月 10 日

在 2009 年 11 月 10 日, 我们启动了 Go 项目: 一种注重简洁性和效率的开源编程语言。 在这一年中, Go 项目本身以及社区都取得了不错的进展。

我们着手建立一种用于系统编程的语言 —— 其可以用 C 或 C++ 编写 —— 并且我们对 Go 作为通用语言的实用程序感到惊讶. 我们曾预料到 C、 C++ 和 Java 程序员们会对此感兴趣。 意外的是 Python 和 JavaScript 等动态类型语言的用户对此产生了浓厚的兴趣。 Go 的原生编译, 静态类型, 内存管理, 以及轻量级语法的组合似乎引起了编程社区的广泛关注。

这部分逐渐成为热情的 Go 编码者们的专属社区。 我们的 邮件列表 有 3,800 多名成员, 每月约有 1,500 个帖子。 该项目有 130 多个 贡献者 (提交了代码或文档的人), 自启动以来的 2,800 次提交中, 几乎有三分之一是由核心团队之外的程序员提供的。 为了使所有代码成型, 在我们的 开发邮件列表 上交换了近 14,000 封电子邮件。

这是数字反应了在项目的代码库中所做的工作成果是显而易见的。 编译器已得到实质性改进, 具有更快, 更高效的代码生成功能, 修复了一百多个报告来的错误, 并支持广泛的操作系统和体系结构。 多亏了一个专门的贡献者小组 (其中一个成为了我们对该项目的第一个非 Google 提交者), Windows 端口即将完成。 ARM 端口也取得了非常不错的进展, 最近达到了通过所有测试的里程碑。

Go 工具集已得到良好的扩展和改进。 godoc, 现在已支持他人源码树的文档 (你可以浏览和搜索自己的代码), 并提供 “代码遛遛” 界面, 用于教程示例 (当然还有待改进)。 Goinstall, 一个新的包管理工具, 允许用户使用单个命令安装和更新外部软件包。 Gofmt, Go 的代码美化器, 现在会在可能的情况下简化语法。 Goplay, 一种基于 Web 的「按需编译」工具,无需耗费很多时间即可尝试使用 Go 的便捷方法 Go Playground

标准库增加了 42,000 多行代码, 并包括 20 个新的 packages。 其中包括 jpegjsonrpcmimenetchansmtp 包, 以及大量新的 cryptography 包。 总而言之, 随着我们对 Go 习惯用法的理解加深, 标准库也在不断得到完善和修订。

调试的故事也变得美好。 gc 编译器的 DWARF 输出和最新的改进使 GUN 调试器、 GDB,对 Go 二进制文件很有用, 并且我们正在积极致力于使调试信息更加完整。 (相关详细信息, 可参阅 最近的博客。)

现在与使用除 Go 之外的语言编写现有库进行链接比以往都更加容易。 Go 支持在最近的 SWIG 发行版, 也就是版本 2.0.1 中提供, 这使得链接 C 和 C++ 代码, 以及我们的 cgo 工具有许多修复和改进。

Gccgo, 是 GNU C 编译器的 Go 前端, 它已与 gc 编译器并列为并行实现,并保持同步。 它现在有一个正常的垃圾回收器, 并已被 GCC 核心接收。 现在我们正在努力使 gofrontend 成为 BSD 许可证下的 Go 编译器的前端使用, 并独立于 GCC。

在 Go 项目之外已有用 Go 构建的真实的软件。 在我们的 项目仪表盘 上列出了 200 多个 Go 程序和库。 并且在 Google CodeGithub 上还有数百种 Go 程序和库。 在我们的邮件列表和 IRC 频道你可以找到来自世界各地的开发者们用 Go 编写的项目。 (可以参阅我们上个月的 来宾博客文章 来获取真实示例。) Google 有几个团队选择了 Go 来构建生产软件, 我们已经收到其他公司的报告, 这些公司正在用 Go 开发大型系统。 我们还与一些使用 Go 作为教学语言的教育工作者们保持联系。

语言本身得到了发展和壮大。 在过去的一年里, 我们收到了功能请求。 但是 Go 是一门小众语言, 我们一直在努力确保任何新功能在简洁性和实用性之间寻找平衡。 自发布以来, 我们进行了许多语言方面的更改, 其中许多更改是由社区的反馈推动的。

  • 现在几乎所有情况下分号都是可选的。 spec
  • 新的内置函数 copyappend 使切片的管理更加高效和直接。 spec
  • 进行子切片时, 上限和下限可以忽略。 这意味着 s[:]s[0:len(s)] 的简写形式。 规定
  • 新的内置函数 recover 作为对 panicdefer 的错误处理的补充。 博客规定
  • 新的复数类型 (complexcomplex64complex128) 简化了某些数学运算操作。 规定规定
  • 符合文本语法允许省略冗余的类型信息 (如: 在制定二维数组时候)。 发行版.2010-10-27规定
  • 现在制定了函数多参数变量 (...T) 及其打散 (v...) 的基本语法。 规定spec发行版.2010-09-29

Go 随时可以用于生产,但仍有改进的空间。 我们在不久的将来的重点是在高性能系统的背景下使 Go 程序更快,更高效。 这意味着改进垃圾回收器, 优化生成的代码, 并改进核心库。 我们还在探索对类型系统进行的其他扩展, 以简化通用编程。 一年中发生了很多事情。 既令人兴奋又令人满足。 我们希望, 来年比去年更加富有成果。

如果你想和 Go 来点 [邂逅], 机不可失时不待我! 来看看 文档 入门 页面来获取更多信息, 或者到这里体验一番 Go Playground

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-blog/go-one-...

译文地址:https://learnku.com/docs/go-blog/go-one-...

上一篇 下一篇
Summer
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~