Google关于Go 2的讨论
jopen 7年前
<p>在本周召开的 <a href="/misc/goto?guid=4959009843788080037" rel="nofollow,noindex">GopherCon 2017</a> 上,Google Go的技术负责人Russ Cox做了关于Go的未来的主旨演讲,请社区就该语言的下一个主要版本应该包含哪些内容提出建议。</p> <p>Google在十年前开始发展Go语言,在5年前提供了第一个稳定版本1.0。 <a href="/misc/goto?guid=4958961169925733344" rel="nofollow,noindex">目前的</a> <a href="/misc/goto?guid=4958961169925733344" rel="nofollow,noindex">稳定版本</a> 是1.8.3,Google正在向社区开放,听取下一个主要版本2.0应该包括哪些内容。</p> <p><a href="/misc/goto?guid=4959009843930581959" rel="nofollow,noindex">最近的一项研究</a> 评估,Go语言的开发者数量约为50万。如果就编程语言向所有这些开发人员询问他们想要什么,那么很可能得到一个很长的期望功能列表。但Google非常关心维护与现有Go代码库的兼容性,该代码库大致近似于1B LoC。虽然这表明该语言的成功,但是按照Cox的说法,它也是“Go 2的主要制约因素”。</p> <p>Go 1 <a href="/misc/goto?guid=4959009844027315378" rel="nofollow,noindex">承诺兼容性</a> ,让开发人员放心,只要Go 1规范还存在,他们的程序将可以继续编译并正确运行。现在,要设计的Go 2规范,存在破坏与1.x兼容的可能性。Cox认为需要谨慎选择新特性。</p> <p>Go 2必须带动所有开发者[包括使用Go 1.x的开发者]。只有回报足够丰富,我们才能要求他们放弃旧有习惯,来学习Go 2的新特性。</p> <p>Go 2还必须兼顾所有现有的Go 1源代码。 我们不能分裂Go生态系统。在混合型的项目中,用Go 2 写的包中导入了用Go 1写的包,或者相反的情况,这种情况必须要在多年的过渡期中正常运行。我们必须弄清楚如何做到这一点,自动化工具像go fix一定会发挥作用。</p> <p>为了避免引起混乱,Google将新功能的数量限制为“两到三个”,一定不超过五个“,”每一个变化都需要仔细的思考,规划和工具化“。 这些功能不包括“允许使用更加口语化的标识符或添加二进制整型字面量”等轻微改变,因为“这些改变很容易实现”。 Cox谈到了重大变化,例如“对错误处理的额外支持,或引入不可变或只读值类型,添加某种形式的泛型或其他尚未被建议的重要主题。”</p> <p>从Google的角度来看,Go 2的主要目标是“解决Go在可扩展性方面的重要不足”。Cox提到了生产期的扩展性(云环境中运行并发应用)和开发期的扩展性(大量的开发人员在一个较大的代码库上并行协作)。</p> <p>大部分主题是介绍和解释用于修改Go的五个步骤:</p> <p><img alt="Google关于Go 2的讨论" src="https://simg.open-open.com/show/5cf4e7d29b55ff0c71dcdc2b842954cc.jpg" /></p> <p>有关此过程的更多详细信息,我们建议您阅读博客文章 <a href="/misc/goto?guid=4959009844110964620" rel="nofollow,noindex">Toward Go 2</a> 。有兴趣为Go 2推荐新功能的用户请参考 <a href="/misc/goto?guid=4958966288334585123" rel="nofollow,noindex">GitHub上的关于该语言的Wiki</a> 。</p> <p>查看英文原文: <a href="/misc/goto?guid=4959009844236847407" rel="nofollow,noindex">Google Discusses Go 2</a></p> <p> </p> <p>来自: http://www.infoq.com/cn/news/2017/07/google-go-2</p> <p></p>