《并发哲学:从编程入道到开悟升天》2.3 良好理解选型助力顺畅吸收

良好理解选型助力顺畅吸收

从第一章走来,我们已经了解人类在自然进化中萌生的并发处理思想,但是究竟后人应该以一种怎样抽象且易于理解的模型,来体现并发的基本思想,直至今日争论声依然不绝于耳。普遍的两种观点造就了如下的理解方法:

  • 选用网络等渠道上普遍存在的,且表面上认可度高的,进行强制的记忆
  • 通过自己的理解,建立一套自己专属的理解模型,进行个性化的自然记忆

但是,针对第一点,网络上部分的理解模型本身就是错误的,不但个人理解的时候往往感觉自相矛盾从而一头雾水,模型实际上也在并发思想的基本观点上产生了严重缺陷,这样的理解模型可以说是误人子弟。而针对于第二点,自己的理解具有天然思想内的权威性,往往会进一步带来自以为是的负面影响。

为什么理解选型如此重要?

缺乏统一、普遍且正确的,适合人们理解的模型,往往会成为今后进一步学习并发相关知识的阻碍。

这种阻碍可能在刚刚接触各类编程语言所谓并发、并行(也包括多线程、多进程、协程编程)具体编程实践的时候,不会有任何的体现,这也是为什么许多人不注重理解选型的原因。但,一旦并发实践工作进一步开展,特别是进入到复杂系统结构设计、综合调优,理解模型的重要性就体现了出来。在有缺陷的并发理解模型加持下,人们需要反复的推倒、重构自己的理解,进一步耗费大量时间,甚至直接回退到远古时代——基于代码片段、基于显而易见实践的死记硬背,这无疑是灾难的。

但是,优良的理解选型,具有良好的伸缩性,在初步踏入该概念的时候,可以帮助直观理解场景与作用,在进一步深入的时候,可以进一步丰富内涵,在原先理解的基础之上,进一步加深概念,从而推演实践。相比不合适、不正确的理解选型,优良的理解选型带来的长远学习和实践上的优势,是不言而喻的。

为什么本章介绍的两大理解模型是正确、应被推崇的?

本章主要简单介绍了两个我们极力推崇的有助于理解并发的理解模型:

  • 投掷者模型
  • 包工头模型

这两大模型的正确的原因,就在于这是顺应并发思想萌芽、人类发展历史的理解模型。从第一章我们可以看到,现代考古学等研究认为,人类的高级进化,在于投掷能力的补全,和随之带来的语言发展、团队沟通等社会化行为与技能的建立。

我们转变一下表述,准确地说来,这两大模型分别对应着如下的系统实践思想:

  • 投掷者模型:基于不可控体系(人-物)的并发实践思想
  • 包工头模型:基于可控体系(人-人)的并发实践思想

通过巧妙的对其他的物体进行使用,观察结果,利用世界内物体分立的并行性,投掷者学会丢出石头,命中目标,将攻击过程和攻击者分离,极大的提高了攻击效率、延展了攻击范围;通过合理的对其他人进行调配、控制,包工头(或者是任何组织他人进行劳动和工作的人)学会组织更多人,合理利用时间和资源,创造出比单人在同等资源下更大的价值。

结合业界权威对于并发的标准解释(具体解释参见2.1),我们可以看到,投掷者模型讲究的是人对于物体的调度、控制、观察、结果实现,体现了逻辑控制流在时间上重叠:人丢出石头后所作所为与石头的飞行时同时的;包工头模型讲究的是人对于其他人的调度、控制、观察、结果实现,同样体现了逻辑控制流在时间上重叠:包工头分配任务后自己继续干活与手下的人开始干活是同时的。因而说,这两个模型都符合并发标准,是正确的。

反观以人为核心的世界,整个人类活动抽象来看,就是人与物的互动、人与人的互动,因而结合上面所述,投掷者模型加上包工头模型,就可以诠释所有的与人类相关的并发活动,因而该模型是普适的。

一个模型是正确且普适的,因而是应该被推崇的。

写在学习并发编程之前

在了解并发思想起源、适合理解并发的理解模型之后,我想你能够以更加深度和立体的视角,进入接下来有关并发编程相关的学习与实践。你必须要明白,并发编程只是并发思想的又一种具体的实现方式,具体的侧重与核心将在第三章、第四章的内容里进行阐述。

这么看来,我们学习并发编程是为了程序内充斥着数不胜数的并发要素吗?显然不是的,如果我们需要将并发思想融入到编程内,最终的目标也一定是为了提升程序的运行效率,从而在程序对应的解决方案里,实现更大的价值。

低头行走,也不忘抬头看路,就是如此。希望你能带着本章所提及的两大模型进入到下一章的学习。无需记住并发的基本概念,仅用这两大模型带来的场景化理解,结合自己的直觉,我相信你能够得出正确的答案。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务