talks.golang.org日前发布了PPT《Go in Go》和《The State of Go》,讲解Go最新的发展趋势和成果:随着Go1.5版本的发展,现在整个系统都是用Go编写的(一个小部分汇编)C已成为过去。Go1.5计划于8月发布,并将尝试支持iOS。(Go1.4已正式支持Android)4月举办的NYJavaSIG会议上,Go团队技术经理分享了《Go for Java Programmers》,Java程序员的Go入门指南,正式进军Java领域了吗?视频地址:https://www.youtube.com/watch?v=_c_tQ6_3cCgPPT地址:http://talks.golang.org/2015/go-for-java-programmers.slide#1OSC两年前发表Java领域里面有关于Go的文章和讨论:JavaProgrammerQuickStartGoLanguage不知道大家的看法有没有改变。《Go in Go》随着Go1.5版本的发展,现在整个系统都是用Go写的(有一小部分汇编)C已经成为历史了。注:gccgo还在走强本文主要讨论为什么原来的编译器gcc以前是用C写的?开始(Go的主要目的不是作为编译器实现语言)为什么要用Go重写编译器?不仅仅是验证,我们还有更实际的原因:Go比C更容易编写(实际上)Go比C更容易调试(即使没有调试器)Go将是您唯一需要了解的语言,并且鼓励对Go做出贡献有更好的模块化、工具链、测试工具、配置工具等,Go可以轻松进行并行操作。虽然看起来有很多优点,但现在夸大还为时过早:)设计文档:golang.org/s/go13compiler为什么runtime也要用Go重写?我们有自己的C编译器来编译运行时,我们需要一个具有相同GoABI的编译器,比如分段堆栈。用Go编写可以摆脱C编译器的缺点,这比用Go重写编译器更重要。(所有在Go中重写编译器的原因都可以作为在Go中重写运行时的原因)将运行时限制为仅一种语言可以更容易地集成、管理堆栈等。一如既往,简单性是首要考虑因素。历史为什么我们有自己的工具链?我们的ABI?我们自己的文件格式?Go的大规模重大改进比GCC或LLVM更难。news.ycombinator.com/item?id=8817990由于使用自己的工具简化了功能而进行了重大改进,并且在Go中重写后进行了一些改进:链接器重构新的垃圾收集器堆栈图连续堆栈写入障碍***三者都没有可能实现inC:C是非类型安全的,并且由于最大化而导致栈槽混乱(Gccgo很快就会有分段栈和不精确的(栈)集合)。更多技术细节和改进请参考原PPT。你不需要C编译器启动,你只需要一个Go编译器,所以你需要从1.5源代码下载并安装来构建Go我们使用Go1.4+作为基础库来构建1.5+工具链详情:golang.org/s/go15bootstrapFuture未来还有很多任务要完成,但是1.5已经差不多完成了。未来计划:更好的逃逸分析新编译器后端使用SSA(使用Go会比C容易得多)更多优化:从PDF(或XML)生成机器描述,将有一个纯机器生成的指令定义,“从PDF读入,写出装配配置”;反汇编程序已部署总结摆脱C是Go项目的巨大改进,代码更清晰、可测试、可部署且更易于运行。新的统一工具链减少了代码量并提高了可维护性。灵活的工具链对于可移植性也很重要。《The State of Go》本PPT主要讲解Go1.5的开发成果,用数据说话,各种图表显示Go1.5和Go1.4不在一个档次,大量的优化和极高的性能提升。Go1.5的主要特点:1.并发垃圾回收机制,目标是:GC延迟小于10毫秒。新的垃圾回收机制是花费一些内存和CPU时间来换取更低的延迟:2.更高的并发性能,设置GOMAXPROCS=N(其中N是你的CPU数量):更好的goroutines执行性能:更好的goroutines转换性能:3.整体表现《Go for Java programmers》这是谷歌Go团队技术经理SameerAjmani分享的PPT,为Java程序员快速上手Go准备的。Go和Java有很多共同的C系列(强类型,括号)静态类型垃圾收集内存安全(无引用,运行时边界检查)变量总是被初始化(零/零/假)方法接口类型断言(实例)反射Go和Java代码程序的区别是直接编译成机器码,没有VM静态链接二进制内存布局控制函数值和词法闭包内置字符串(UTF-8)内置泛型映射和内置数组/片段并发性Go有意删除了很多特性没有类没有构造函数没有继承没有final没有异常没有注解没有自定义泛型为什么Go省略了这些特性?代码清晰度至关重要。查看代码时,很清楚程序将做什么。在写代码的时候,也很清楚程序会做你想做的事。有时这意味着编写一个循环而不是调用一个晦涩的函数。(不要让它太无聊)详细的设计背景请参考:Lessisexponentiallymore(Pike,2012)GoatGoogle:LanguageDesignintheServiceofSoftwareEngineering(Pike,2012)更详细的内容和代码例子请参考OSC翻译频道:http://www.oschina.net/translate/go-for-java-programmers-ppt。原文及所有图片均来自talks.golang.org。
