算法与理论计算机2015research.microsoft.com
并发教学(2009)
Teaching Concurrency (2009)
入门 · 约 15 分钟读完前置知识:基本编程经验、并发编程概念、计算机课程体系常识
导读
这是 Leslie Lamport 2009 年关于"如何教授并发"的文章,讨论并发编程应如何在计算机课程中定位。他主张并发不该被当作高级专题推后,而应更早进入基础教学;同时批评把进程代数、范畴论、时序逻辑等"高深数学"塞进工程师基础教育的做法。
HN 关注点:并发难教难学、实践中最容易出错,加上 Lamport 本人的权威身份,让 HN 读者围绕"该教什么、何时教、是否被滥用"展开讨论。
HN 评论精选
这几条评论里:支持 1 补充 3
补充推荐一本免费的信号量/并发入门书作为补充教材。
强烈推荐 Allen Downey 的《The Little Book of Semaphores》,免费 PDF:http://greenteapress.com/wp/semaphores/
fizixer查看英文原文
Highly recommended: Allen Downey The Little Book of Semaphores (free pdf here: http://greenteapress.com/wp/semaphores/)
补充并发常被滥用,教学应先讲清它的代价与适用边界。
我认为教并发时第一件该讲的事,是什么时候不要用并发。并发会带来更高的维护成本和复杂度;在单核上并发也不会更高效;并发真正能帮上忙的是延迟和响应时间。尤其在嵌入式系统里,并发被过度使用,往往导致代码臃肿复杂。
TickleSteve查看英文原文
I think the first thing people should be taught about concurrency... is when not to use it. Concurrency can result in increased maintenance costs and complexity. Concurrency is also not more efficient on a single core. Concurrency can help with latency and response time. In embedded systems in particular, there is an over-use of concurrency which often results in bloated, complex code.
补充打好"计算是状态转移序列"的基础,比直接教并发技巧更关键。
对负责设计并发课程的人来说,文中唯一可操作的建议是:确保先修课程能把"计算即一系列状态转移"这个观念灌输给学生。
argv_empty查看英文原文
The only actionable advice in here for someone tasked with developing a curriculum for teaching concurrency is to make sure the prerequisite courses instill the idea of computation as a sequence of state transitions.
支持引用原文观点:抽象数学工具不适合放进工程教育的基础阶段。
值得注意的一句话:"进程代数是代数,当然属于数学;范畴论和时序逻辑也是数学。这些高深的数学形式自有其位置,但这个位置不在计算机工程师的基础教育里。"
zvrba查看英文原文
Notable quote: "Process algebra is algebra, which is certainly math. Category theory and temporal logic are also math. These esoteric forms of math have their place, but that place is not in the basic education of a computer engineer. "
历次讨论
- 2015Hacker News 讨论帖20 分 · 1 评
- 2016Hacker News 讨论帖151 分 · 44 评
同领域还值得读
哲学家为何应关注计算复杂性
Why Philosophers Should Care About Computational Complexity (2011)
Scott Aaronson 的这篇长文论证计算复杂性理论(如 P vs NP、停机问题的复杂度视角)对哲学问题(如知识的本质、中文房间、水槽论证等)具有实质意义,而不仅是技术细…
算法与理论计算机2015 · 552 分 · 120 评进阶 · 约 90 分钟编辑精选通信的数学理论
A Mathematical Theory of Communication
是香农1948年的《通信的数学理论》,为通信建立数学框架:把信息量定义为不确定性或自由度(信息熵),并讨论信源编码、信道容量与可靠传输。
算法与理论计算机2020 · 495 分 · 91 评进阶 · 约 120 分钟编辑精选物理、拓扑、逻辑与计算:罗塞塔石碑
Physics, Topology, Logic and Computation: A Rosetta Stone (2009)
用范畴论充当“罗塞塔石碑”,试图在量子物理、拓扑、逻辑与计算四个领域之间建立统一的结构性类比:物理中的量子过程、拓扑中的配边、逻辑中的证明和计算中的程序,都可被视为某类范畴中的态…
算法与理论计算机2009 · 390 分 · 55 评 · 引用 13专业 · 约 180 分钟编辑精选一种快速、极小内存的一致性哈希算法
A Fast, Minimal Memory, Consistent Hash Algorithm
论文给出一种快速、省内存的一致哈希方案,目标是在桶数量变化时保持较小的键迁移成本,同时降低计算和内存开销。
算法与理论计算机2014 · 327 分 · 57 评 · 引用 4进阶 · 约 25 分钟编辑精选第五个 Busy Beaver 值的确定
Determination of the fifth Busy Beaver value
宣布确定了第五个 Busy Beaver 值 BB(5):即 5 状态图灵机中停机前运行步数最多的机器(Champion)在 47,176,870 步后停机。
算法与理论计算机2025 · 288 分 · 116 评 · 引用 1专业 · 约 75 分钟编辑精选