写点什么

Google 关于 Go 2 的讨论

  • 2017-07-19
  • 本文字数:1034 字

    阅读完需:约 3 分钟

在本周召开的 GopherCon 2017 上,Google Go 的技术负责人 Russ Cox 做了关于 Go 的未来的主旨演讲,请社区就该语言的下一个主要版本应该包含哪些内容提出建议。

Google 在十年前开始发展 Go 语言,在 5 年前提供了第一个稳定版本 1.0。目前的稳定版本是1.8.3,Google 正在向社区开放,听取下一个主要版本2.0 应该包括哪些内容。

最近的一项研究评估,Go 语言的开发者数量约为50 万。如果就编程语言向所有这些开发人员询问他们想要什么,那么很可能得到一个很长的期望功能列表。但Google 非常关心维护与现有Go 代码库的兼容性,该代码库大致近似于1B LoC。虽然这表明该语言的成功,但是按照Cox 的说法,它也是“Go 2 的主要制约因素”。

Go 1承诺兼容性,让开发人员放心,只要 Go 1 规范还存在,他们的程序将可以继续编译并正确运行。现在,要设计的 Go 2 规范,存在破坏与 1.x 兼容的可能性。Cox 认为需要谨慎选择新特性。

Go 2 必须带动所有开发者 [包括使用 Go 1.x 的开发者]。只有回报足够丰富,我们才能要求他们放弃旧有习惯,来学习 Go 2 的新特性。

Go 2 还必须兼顾所有现有的 Go 1 源代码。 我们不能分裂 Go 生态系统。在混合型的项目中,用 Go 2 写的包中导入了用 Go 1 写的包,或者相反的情况,这种情况必须要在多年的过渡期中正常运行。我们必须弄清楚如何做到这一点,自动化工具像 go fix 一定会发挥作用。

为了避免引起混乱,Google 将新功能的数量限制为“两到三个,一定不超过五个”,“每一个变化都需要仔细的思考,规划和工具化”。 这些功能不包括“标识符支持使用更多的现实语言来定义或添加二进制整型字面量”等轻微改变,因为“这些改变很容易实现”。 Cox 谈到了重大变化,例如“对错误处理的额外支持,或引入不可变或只读值类型,添加某种形式的泛型或其他尚未被建议的重要主题。”

从 Google 的角度来看,Go 2 的主要目标是“解决 Go 在可扩展性方面的不足”。Cox 提到了生产期的扩展性(云环境中运行并发应用)和开发期的扩展性(大量的开发人员在一个较大的代码库上并行协作)。

主题演讲的大部分内容是介绍和解释用于修改 Go 的五个步骤:

有关此过程的更多详细信息,我们建议您阅读博客文章 Toward Go 2 。有兴趣为 Go 2 推荐新功能的用户请参考 GitHub 上的关于该语言的 Wiki

查看英文原文 Google Discusses Go 2


感谢张卫滨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-07-19 19:004754

评论

发布
暂无评论
发现更多内容

Spring Cloud:第二章:eureka服务发现

Java 程序员 后端

Spring+SpringMVC+Mybatis框架整合(SSM整合)

Java 程序员 后端

Spring--基于AOP实现事务控制

Java 程序员 后端

Springboot 实现 上传、下载 以及解决必须项目重启才能访问资源的问题

Java 程序员 后端

Spring Boot+Mybatis+thymeleaf整合

Java 程序员 后端

Spring Cloud Gateway修改请求和响应body的内容

Java 程序员 后端

Springboot 整合Retry 实现重试机制

Java 程序员 后端

Spring Boot 集成 Elasticsearch 实战

Java 程序员 后端

Spring Cloud 2020 版本最佳实践,你落伍了

Java 程序员 后端

spring-bean的理解

Java 程序员 后端

从环境搭建到回归神经网络案例,带你掌握Keras

华为云开发者联盟

Python 神经网络 tensorflow keras 回归神经网络

Spring 三级缓存和循环依赖 思考和总结

Java 程序员 后端

Spring--基于IOC的CRUD操作

Java 程序员 后端

Spring MVC框架:第七章:REST架构风格(1)

Java 程序员 后端

Go WebSocket开发与测试实践【/net/websocket】

FunTester

Java websocket 接口测试 Go 语言 FunTester

Springboot 整合RabbitMq ,用心看完这一篇就够了

Java 程序员 后端

Spring Cloud Gateway限流实战

Java 程序员 后端

fastposter 2.2.0 新版本发布 电商级海报生成器

物有本末

Java Vue 海报 fastposter 海报生成器

来,带你一次性搞懂数据分析和数据挖掘!

博文视点Broadview

spring-cloud-kubernetes背后的三个关键知识点

Java 程序员 后端

Spring5 框架新功能(Webflux)

Java 程序员 后端

Spring Boot 核心的 25 个注解

Java 程序员 后端

Spring Boot在微服务中的最佳实践

Java 程序员 后端

Spring MVC温故而知新 – 从零开始

Java 程序员 后端

Spring(一):容器的实现——两大核心类

Java 程序员 后端

Springboot 整合 Current-Limiting 实现接口限流

Java 程序员 后端

Vue进阶(幺柒伍):色彩搭配

No Silver Bullet

Vue 11月日更

Spring MVC框架:第七章:REST架构风格

Java 程序员 后端

【LeetCode】合并两个有序数组Java题解

Albert

算法 LeetCode 11月日更

外包学生管理系统详细架构设计文档

Beyond Ryan

Spring MVC框架:第六章:传统增删改查

Java 程序员 后端

Google关于Go 2的讨论_开源_Abel Avram_InfoQ精选文章