美文网首页
golang设计哲学

golang设计哲学

作者: hu_luo_tong | 来源:发表于2023-12-03 18:20 被阅读0次

最近在阅读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 等

相关文章

  • Golang 设计哲学

    原文:http://blog.csdn.net/hittata/article/details/43668569 ...

  • golang 设计哲学

    1, 围绕 简单 这一核心的设计 隐式接口,切片,类的弱化,强制用组合简洁高效的并发弱化的指针err 判定,先判错...

  • Closure in Golang

    序言 Golang遵循“少即是多”的设计哲学,同时又支持闭包(Closure),那么闭包对于Golang来说肯定有...

  • golang channel & select

    通过消息来共享数据是golang的一种设计哲学,channel则是这种哲理的体现.channel定义 dataTy...

  • ota go 服务搭建

    整体设计: golang&beego 在设计中,采用了golang 语言,使用了开源的beego , beego ...

  • golang的interface

    1.golang的interface设计golang的interface设计,从是否有方法的角度,分为iface和...

  • 19年第34周:Go语言 有趣的接口

    一、Golang的接口 Go语言接口设计很符合设计原则参考图灵丛书中的《设计模式》 当我看到Golang的接口时,...

  • Golang 常见设计模式之单例模式

    之前我们已经看过了 Golang 常见设计模式中的装饰和选项模式,今天要看的是 Golang 设计模式里最简单的单...

  • Golang源码之Channel

    引用 图解Golang的channel底层原理 深入理解Golang Channel Go语言设计与实现-Chan...

  • gorm相关实践

    gorm是golang下操作数据的一种orm框架,能够方便开发者进行数据库操作。其设计哲学是约定大于配置,所以在掌...

网友评论

      本文标题:golang设计哲学

      本文链接:https://www.haomeiwen.com/subject/dyxlgdtx.html