编程语言应用

首页 » 常识 » 预防 » 每周译Go更新Go内存模型
TUhjnbcbe - 2021/11/2 7:20:00

这是RussCox的系列论文的第三篇,也是最后一篇:UpdatingtheGoMemoryModel。

文章对官方的Go内存模型做了一些补充和思考。

当前的Go语言内存模型是在年编写的,从那以后略有更新。很明显,至少有一些细节我们应该添加到当前的内存这个内存模型中,其中包括对竞态检测器的明确认可,以及关于sync/atomic中的API是如何同步程序的清晰声明。

这篇文章重申了Go的总体哲学和当前的内存模型,然后概述了我认为我们应该对Go内存模型进行的相对较小的调整。假定你已经了解了前两篇文章“硬件内存模型”和“编程语言内存模型”中的背景知识。

我已经开启了一个GitHub讨论项目来收集对反馈。根据这些反馈,我打算在本月晚些时候准备一份正式的Go提案。使用GitHub讨论本身就是一个实验,我还会继续尝试找到一个合理的方法来扩大这些重要变化的讨论。

Go设计哲学

Go旨在成为构建实用、高效系统的编程环境。它的目标是为小型项目的轻量级开发语言,但也可以优雅地扩展到大型项目和大型工程团队。

Go鼓励在高层次上处理并发,特别是通过通信。第一句Go箴言(Goproverb)就是“不要通过共享内存来通信,而是通过通信共享内存。”另一个流行的谚语是“清晰胜于聪明。”换句话说,Go鼓励通过避免使用巧妙的代码来避免狡猾的bug。

Go的目标不仅仅是可以理解的程序,还包括可以理解的语言和可以理解的packageAPI。复杂或巧妙的语言特征或API与这一目标相矛盾。正如TonyHoare在年图灵奖演讲中所说:

Iconcludethattherearetwowaysofconstructingasoftwaredesign:Onewayistomakeitsosimplethatthereareobviouslynodeficienciesandtheotherwayistomakeitso

1
查看完整版本: 每周译Go更新Go内存模型