Go语言的设计初衷

  • 如果有一门编程语言,有像C/C++那样性能,可以做系统开发。

但是繁琐的类型系统(虚函数、纯虚函数重载等等),编译速度慢

  • 如果有一门语言,像Java那样拥有垃圾回收

但是垃圾回收导致慢

  • 如果有一门语言,像Python那样简单易学,拥有灵活的类型,支持函数式编程,异步IO

但是Python是解释型语言比较慢,没有编译器那样进行静态类型检查

针对上述痛点进行设计,并加入并发编程设计出Go语言
**

Go语言的归类

类型检查:编译时
运行环境:编译成机器代码直接运行
编程方式:面向接口、函数式编程、并发编程

Go语言并发编程

  • 采用CSP模型
  • 不需要锁,不需要callback
  • 并发编程vs并行计算

Go语言的编译

Golang的编译(不涉及cgo编译的前提下)默认使用了静态编译,不依赖任何动态链接库。

这样可以任意部署到各种运行环境,不用担心依赖库的版本问题。只是体积大一点而已,存储时占用了一点磁盘,运行时,多占用了一点内存。早期动态链接库的产生,是因为早期的系统的内存资源十分宝贵,由于内存紧张的问题在早期的系统中显得更加突出,因此人们首先想到的是要解决内存使用效率不高这一问题,于是便提出了动态装入的思想。也就产生了动态链接库。在现在的计算机里,操作系统的硬盘内存更大了,尤其是服务器,32G、64G 的内存都是最基本的。可以不用为了节省几百 KB 或者1M,几 M 的内存而大大费周折了。而 golang 就采用这种做法,可以避免各种 so 动态链接库依赖的问题,这点是非常值得称赞的。

https://studygolang.com/articles/27716?fr=sidebar