talks.golang.org 前几天放出了 PPT《Go in Go》和 《The State of Go》讲解最近 Go 的开发动态和成果:
4月份进行的 NYJavaSIG 聚会上 Go 团队的技术主管经理分享了《Go for Java Programmers》,为 Java 程序员提供的 Go 入门指南,正式向 Java 领域进军了吗? OSC 上两年前就有 Go 要涉猎 Java 领域的文章和讨论了: 不知道现在大家的看法是否有些改变。 《Go in Go》随着 Go 1.5 版本的开发,现在整个系统都是使用 Go 编写的(有一小部分汇编) C 已经成为过去时了。 注: 为什么之前用 C 编写?启动 (而且 Go 的主要目的不是作为一个编译器实现语言) 为什么编译器使用 Go 重写?不单单是验证,我们还有更多实际的原因:
虽然看起来很多优势,但是还是夸的太早了:) 设计文档: golang.org/s/go13compiler 为什么运行时也是用 Go 重写?我们有自己的 C 编译器来编译运行时,我们需要一个带有跟 Go ABI 一样编译器,比如 segmented stacks。 使用 Go 编写可以摆脱 C 编译器的劣势,这是比使用 Go 重写编译器还重要。 (所有使用 Go 重写编译器的理由都可以作为使用 Go 重写运行时的理由) 限制运行时只用一种语言编写,更容易进行集成,管理 stack 等等操作。 跟往常一样,简化是首要的考虑因素。 历史为什么我们要有完全属于自己的工具链?
Go 的大规模重大改进要比 GCC 或者 LLVM 要更困难。 news.ycombinator.com/item?id=8817990 重大改进由于使用自身工具简化的功能和使用 Go 重写后的一些改进:
最后三个都不可能用 C 实现:
更多技术细节改进请看 PPT 原文。 启动不需要 C 编译器,只需要一个 Go 编译器 因此需要从 1.5 的源代码去下载安装构建 Go 我们使用 Go 1.4+ 作为基础库来构建 1.5+ 的工具链 详情: golang.org/s/go15bootstrap 未来未来仍然有很多任务要完成,但是 1.5 已经完成的差不多了。 未来的计划:
更多优化:
总结摆脱 C 是 Go 项目的一个巨大改进,代码更整洁,提升可测试性,可部署性,也更容易运行。 新的统一工具链减少了代码数量,提升可维护性。 灵活的工具链对可移植性也很重要。 《The State of Go》这篇 PPT 主要讲解了 Go 1.5 的开发成果,用数据说话,各种图表显示 Go 1.5 跟 Go 1.4 简直不是一个级别的,大量的优化和极高的性能提升。 Go 1.5 主要特性:1. 并发垃圾收集机制,目标是:GC 延迟小于 10 毫秒。 新的垃圾收集机制是花费一些内存和 CPU 时间来换取更低的延迟时间: 2. 更高的并发性能,设置 更好的 goroutines 执行性能: 更好的 goroutines 转换性能: 3. 整体性能 《Go for Java programmers》这是 Google 的 Go 团队技术主管经理 Sameer Ajmani 分享的 PPT,为 Java 程序员快速入门 Go 而准备的。 Go 和 Java 有很多共同之处
Go 与 Java 的不同之处
Go 特意去掉了大量的特性
为什么 Go 要省去那些特性?代码清晰明了是首要的 当查看代码时,可以很清晰的知道程序将会做什么 当编写代码的时候,也可以很清晰的让程序做你想做的 有时候这意味着编写出一个循环而不是调用一个模糊的函数。 (不要变的太枯燥) 详细的设计背景请看: 更多详细内容和代码示例请看 OSC 翻译频道:http://www.oschina.net/translate/go-for-java-programmers-ppt。 原文和所有图片都来自 talks.golang.org。 |