并发
Go语言编程范式:面向接口、函数式编程、并发编程。
各个编程语言的使用场景.
Go 语言并发编程
采用 CSP (Communication Sequential Process)模型
不需要锁,不需要 callback
并发编程 vs 并行计算
Go 语言的归类
类型检查:编译时
运行环境:编译成机器代码直接运行
编程范式:面向接口,函数式编程,并发编程
Go 语言的设计初衷
如果有一门语言,针对上述痛点进行设计,并加入并发编程
这就是 Go 语言
Go 语言的设计初衷
如果有一门语言,像 Python 那样简单易学,拥有灵活的类型,支持函数式编程,异步 IO
但是有编译器进行静态类型检查
Go 语言的设计初衷
如果有一门语言,像 Java 那样拥有垃圾回收
但是更快,对业务的影响更小
Go 语言的设计初衷
如果有一门语言,有像 C/C++ 那样的性能,可以做系统开发
但是没有繁琐的类型系统,有简单统一化的模块依赖管理,编译速度飞快
Google 内部的“标准”编程语言
C++:必须有性能保障的部分,如搜索引擎
Java:复杂业务逻辑,如 adwords, google docs
Python:大量内部工具
Go:新的内部工具,及其他业务模块, 如 dl.google.com
Go语言底层还是有锁,有Callback的,但是我们在写语言的时候就不需要关注这些东西
Go语言的并发编程模型包含了两大部分,一个是并行计算一个是分布式
并行计算比较简单,有一个很明确的计算任务,我们把计算任务分布到各个节点上去做,做完了以后再去合并一下就出来了最终的一个结果。
分布式比较复杂,他没有具体的这样一个流程,有很多人互相等来等去,很多人互相传递消息,GO语言是为并发编程设计的,它能做非常复杂的并发编程系统,能够很容易的去做到分布式
这节课会搭建一个并行计算的pipeline
并行计算最简单的任务就是外部排序,内存中放不下,外部中分别处理,再归并
Go语言,编译时类型检查
运行环境:编译成机器代码直接运行
编程范式:面向接口,函数式编程,并发编程
Go语言不是面向对象是面向接口
Google内部标准编程语言
标准编程语言
Go语言并发编程
Go语言的归类
Go语言的设计初衷4
Go语言的设计初衷,python静态类型检查
Go语言的设计初衷1,垃圾回收慢
Go语言的设计初衷
Google内部的“标准”变成语言
采用 csp 模型
go 语言的归类
c ++
java
python
go 新的内部工具, 及其他业务模块 . dl.ggole.com
CSP模型?
go 语言的特点
1,性能保障,可以做系统开发
2,垃圾回收机制
3,灵活的类型、支持函数式编程、异步IO
4,并发处理
go 语言归类
go语言并发编程
go语言的归类
Google 内部的「标准」编程语言