Paul Butcher是一位资深程序员,涉猎广泛,从单片机编码到高级声明式编程无所不精,现在他开办了独立咨询公司Ten Tenths。他曾任的首席软件架构师,并先后担任Texperts和Smartner的CTO。Paul是一位少年天才,8岁时就已经开始在8位机上编写游戏。他从1989年开始攻读博士学位,在并行计算和分布式计算的领域深造,当时他便深信并发编程将成为主流。二十年后,他的观点终于得以验证——整个世界都在讨论多核以及如何发挥其优势。
Paul Butcher的最新作品《七周七并发模型》延续了《七周七语言》的写作风格,通过以下七个精选的模型帮助读者了解并发领域的轮廓:线程与锁,函数式编程,Clojure,actor,通信顺序进程,数据级并行,Lambda架构。除《七周七并发模型》外,Paul还著有在亚马逊获得全五星好评的《软件调试修炼之道》。
作品选读:并发还是并行?
最终入选问题的提问者,将获得manbetx户口社区送出的manbetx户口电子书一本。
往期活动回顾:
向Facebook产品设计总监Maria Giudice提问!,问题入选的获奖者有:likeya,cage,aimountain,旁观者,emdoe,华元,fdy1045,normalme《Flask Web开发》作者Miguel Grinberg访谈问题有奖征集,问题入选的获奖者有:normalme,大廖,likeya
《物联网设计》作者Adrian McEwen访谈问题有奖征集,问题入选的获奖者有:linkin1005,fdy1045,旁观者,normalme,cage,yiqiok,phoenixne,周翰
《发布!》作者Michael Nygard访谈问题有奖征集,问题入选的获奖者有:slideclick,fdy1045,南岳山,华元,Juven
2、并发模型和传统串行模型比较,并发模型有哪些优势?
2. 大多数程序员比较习惯非并发的编程模型,我们知道并发编程能够带来巨大的价值,但是却存在很大的困难。有没有比较适合并发编程的思考模型?您在进行并发编程的分析时是否采用了生活化的模型来思考?
2、各种并发模型中,有没有存在性价比最好的模型(性能/实现难度)? 还是说每个模型都有自己适用的场合?
对于这两个并发模型,我有如下问题:
1. 如何在Channel传递结构化的数据?
scala也是采用了类似erlang的actor模型,而scala和java一样是强类型语言,erlang和go都没有完整的类型系统,这对编程开发应该有较大的影响。
erlang或者go,如果没有类型系统,那数据的有效性处理比较麻烦,比如传递结构化的json数据,如何正确并有效的解析这类数据,希望Paul Butcher能指点一二。
2. 如何看待scala的actor的并发模型?
erlang比scala古老,但最近scala相关的技术很流行,效率也很高。scala的actor的并发模型能取代erlang吗?erlang的运行环境看起来远不如scala宽松(scala能运行在jvm平台)。
2. 不同的语言都有着不同的并发模型,而且目前看来交集比较少,那么如果对于一个系统来说不同的子系统要使用不同的并发模型,那么这个系统很大概率上要使用两种以上的语言。那么就会出现多语言调试比较麻烦问题,如何解决呢?尤其是要追踪一个特定的数据流时,这个数据流可能经过了多个Actor以及多个语言编写的模块,这时的调试是不是就变得很有挑战性?如何应对这种挑战呢?
3. 而且比如说有基于ErlangVM和JVM的子系统,两个子系统之间的连接方式就是进程间通信,在外部高并发情况下,负载就汇聚到了两个子系统连接的边界上,这时有什么好的解决方法?
1.在并发和并行两个领域,有哪些比较新的书是必读的,学习时的先后顺序如何?分布式领域呢?
2.您研究的领域非常基础,那么您认为像虚拟化、云计算、大数据等等当前/曾经热门的发展方向,哪些是必然的或者说正确的,哪些更有钱途呢?毕竟像后两个方向,大厂商多年前都已经投入巨资做研发,如果最后连本都没回来的话。。。
3.以TIOBE上排名比较靠前的语言为例,哪些语言比较适合撰写并发代码?哪些语言比较适合撰写并行代码?哪些语言又比较适合撰写分布式代码呢?这几类语言中有交集吗?