Seven Concurrency Models in Seven Weeks - 图1

    关键字:并发,并行,分布式,Java,Clojure,Elixir,Go

    推荐:★★★★★
    难度:★

    豆瓣链接:https://book.douban.com/subject/26337939/


    经常学习的人们,
    肯定会遭遇过瓶颈,
    迷茫,不知道做什么。

    但是,瓶颈始终还是会过去的,
    我们要做的是,尽量减少停滞的时间。

    我的办法是,
    遇到难以前进的障碍以后,
    要尽快转移兴趣点,往另一个方向突飞猛进。

    等在另一个方向小有收获后,
    回头观望,会发现,原来的困难也不过如此。

    言归正传。
    这是一系列书,用七周来做一件事情,
    《seven Languages in Seven Weeks》,
    《Seven Web Frameworks in Seven Weeks》。

    这些书非常适合开阔视野,
    打开局面。

    这本书名字是写7个并发模型,
    其实从更高的角度考虑了并行计算和分布式系统。

    并发是一个很热的话题,
    随着Web技术的普及,更多人成为了Web产品的参与者。

    因为现实世界本来就是并发的,
    所以,Web成为了现实世界的写照。

    另一方面,前端的交互设备变得更多样性了,
    使得Web架构演变成前后端分离的形式,
    后端要能提供并发服务,
    这种要求越来越多。

    Java,C#,PHP,采用了多线程的方式处理并发,
    本书以Java为例,介绍了线程和锁的使用方法,
    也以更高的视角说明了这种共享内存模型的优缺点。

    例如,共享内存模型,并不直接支持并行计算,
    对分布式系统也支持的不够好,
    另外锁的处理也是很麻烦的一件事情。

    与Java不同,函数式语言因为更好的维持不可变状态,
    最近也越来越火,
    这是有原因的,因为不可变的状态,天生就支持并发。

    本书以Clojure为例,
    介绍了,不可变量,原子量,软件事务内存,
    可惜没有相关的Haskell介绍。

    函数式语言门槛高,执行效率偏低,这也是它的弱点。
    当然也不能一概而论。

    然后说到了Actor模型,
    这个模型其实是从最初的Smalltalk开始的,
    后续的面向对象语言似乎走偏了路线,
    这个模型被Erlang学去了。

    本书以Erlang虚拟机上的语言Elixir为例,
    介绍了Actor模型,其实相当于邮箱之间的通信。
    消息保存在异步的队列中,
    系统的各个组成部分互相发消息。

    最后,提到了Go语言的Channel,
    不过还是用Clojure讲的,估计作者对Go也不熟,或者其他什么原因,
    本来我对Go印象不好,
    但是发现它其实代表了一种并发模型,也对它肃然起敬了,
    它用同步的Channel来进行通信。

    后面,开始介绍显卡计算什么的,
    不太感兴趣,所以没有看下去。

    不过,本书仍然是一本好书。
    开阔了我的视野,
    磨平了我的成见,
    让我找到了正确的方向。

    非常推荐本书,
    尤其是对各种语言都有兴趣的人。