前言
这个是在 Go 语言 14 年的发展历史中,我们做得对的和不对的 [译] | 宝玉的分享 (baoyu.io)和Google 里的 Go 语言:服务于软件工程的语言设计(翻译) | 存档Save&Load (jaycechant.info)的一个阅读 总结,可以点击查看原文翻译。
go语言产生的背景
Go 语言在 2007 年末被构思出来;为了处理多核处理器、网络系统、大规模计算集群 和 网络编程模型 所带来的问题而设计开发;为了提高 这种环境下的工作效率 。 设计 Go 时的考虑因素,除了众所周知的像 内置并发 和 垃圾回收,还包括 严格的依赖管理 、系统规模增长时 软件架构的自适应性,以及 跨组件的健壮性 。
go语言 简介
Go 是 Google 开发的一种 编译型 、 支持并发 、带垃圾回收 的 静态类型 语言。Go 是为由编写、阅读、调试和维护大型软件系统的人设计的,不是在研究领域有突破的语言。
go解决的问题
- 构建速度慢
- 失控的依赖关系
- 每个程序员使用相同语言的不同子集
- 程序难以理解(代码难以阅读,文档不完善等)
- 重复劳动
- 更新代价大
- 版本偏斜(version skew)
- 难以编写自动化工具
- 跨语言构建
一门语言的单个特性并不能解决这些问题。这需要有软件工程的大局观(larger view),所以在 Go 的设计中,试图把重点放在解决这些问题上。
C 和 C++ 中的依赖关系
go语言的目标
go语言需要解决的问题:构建现代服务器软件时遇到的种种复杂性,如管理依赖关系、大团队协作编程以及人员更迭、软件的易维护性、高效测试、多核 CPU 和网络的有效利用等等。
Go 的目标一直都是简化和提高生产软件构建的效率。