最近在阅读go语言精进之路,以下主要是对该书中的第三章的总结摘录:
go语言的设计哲学主要有以下四点:
1.追求简单,少即是多
2.偏好组合,正交耦合
3.原生并发,轻量高效
4.面向工程,自带电池
下面针对上面四点分别介绍:
追求简单,少即是多
在语言设计之初,go的设计者拒绝走语言特性融合的道路,而是对特性做“减法”,选择了“简单”; 设计者推崇“最小方式“思维,即一件事仅有一种方式或者尽可能少的实现方式去完成,这大大减少了开发者在选择路径抉择以及理解其他人的设计方案的心智负担;具体体现如下:
1.简单,常规的语法
2.内置垃圾回收
3.接口仅仅是方法集合
4.方法仅按照名称匹配
5.显式依赖,无循环依赖
6.内置并发支持
7.无构造函数
....
偏好组合,正交耦合
go语言设计之初,提供了正交的语法元素供后续组合使用;其中大概有:
- go语言无类型体系,类型之间是相互独立的,没有子类型的概念
- 每个类型都可以有自己的方法集合,类型与方法之间是正交独立的
- 接口与其实现之间是隐式关联
- 包之间是相互独立的,没有子包的概念;
go语言采用组合可概括为垂直组合,水平组合 - 垂直组合
通过类型嵌入,可以让一个新类型快速复用其他类型已经具有的能力,实现功能上的垂直扩展 - 水平组合
interface是go中真正的魔法,它只是一个方法集合,与实现者之间的关系是隐式的,让程序之间的耦合降到最低,同时是程序连接各个部分的纽带,隐式的interface会不经意间满足依赖抽象,里式替换,接口隔离等设计原则。通过interface将各个部分组合在一起的方式,成为水平组合
原生并发,轻量高效
go语言设计者敏锐的把握了cpu向多核方向发展的趋势,果断将面向多核,原生内置并发支持作为新语言设计的原则之一。主要有以下特点:
- 采用协程并发模型,在面对多核硬件时更具扩展性;
- 提供支持并发的语法元素和机制,使用简单,高效
面向工程,”自带电池“
软件工程指引着go语言的设计,go语言设计者将所有工程问题浓缩为一个词”scale"; 其包含以下两方面:
- 生产规模
- 开发规模
go主要从三个方面来解决此问题: - 语言
简化语法,简单意味着可读性好,容易理解,容易上手,容易修复错误,节省开发时间,提升开发者间的沟通;类似还有去除包的循环依赖;不支持默认参数;内置垃圾回收;内置并发支持;增加别名,支持大规模重构; - 标准库
go被称为”自带电池“含义是,由于诞生时间较晚,且目标较为明确,go在标准库中提供了各类高质量且性能优异的功能包;减轻开发者对第三方包或者库的依赖; - 工具链
go提供了十分全面的官方工具链。涵盖了编译,编辑,依赖获取,调试,测试,文档,性能剖析等;如 go build; go fmt; go doc; go test; go vet; go too pprof 等
网友评论