HackerTube ?

Are We There Yet - Rich Hickey

Zhang Jian在 YouTube 播放 ↗

从这部视频出发 主题阅读 · 1

数据建模用户今天续费了,还能解释昨天那封催缴邮件吗?

字幕解读

Rich Hickey 追问常见面向对象语言为何难以表达时间:身份、某刻的状态与变化过程经常混在一起。他提出用不可变值表示状态、以纯函数产生后续值,再用明确的时间协调机制管理变化;观察者读取稳定快照,不必阻塞过程。后半段解释持久化数据结构的共享、CAS、agent 与 STM/MVCC 的不同职责,也讨论内存与写入成本。结尾明确这是进程内模型,外部世界和 I/O 的协调仍未解决。

自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。

内容要点

  • 值是不可变快照;身份是把一系列相关状态联系起来的概念,不能等同于一个原地改变的值。
  • 观察和行动应分开;在所讨论的 STM/MVCC 模型中,读取快照不应进入写入者的变化序列。
  • 按协调范围选择机制:CAS 管理单个身份,agent 加入异步序列,STM 协调多个身份;它们不是可无条件互换的工具。
视频章节 6
  1. 隐含复杂性与工具模型

    从内存管理类比时间管理,讨论可变引用造成的推理负担。

  2. 值、身份、状态和时间

    区别纯函数与长时间运行的过程,建立连续身份与不可变状态的模型。

  3. 观察与行动分离

    以感知和快照作类比,提出原子状态演进与独立观察者。

  4. 高效保存不可变版本

    介绍结构共享、持久化集合、并行变换与暂态构造的性能取舍。

  5. 协调时间与一致性快照

    比较 CAS、agent、STM 和 MVCC,并区分整体快照与逐项扫描。

  6. 边界与问答

    限定进程内,承认外部时间、I/O 和 GC 压力,不主张把整个系统当作纯函数。

具体观点与证据 3

应把身份、状态和值分开:身份串联因果相关的多个状态,每个状态是某时点不可变的值,而非随时变化的同一块数据。

Hickey 提出的进程内时间建模方式,不是对物理学的严格论证。

the state is a snapshot this entity has this value at this point in time
探索此观点 →

持久化数据结构通过共享未变的树结构产生新版本,既保存旧快照,也避免完整复制数据。

仍有分配和写路径复制成本,不保证所有操作都快于可变数组。

the next version of the value shares a lot of structure with the prior version
探索此观点 →

多版本并发控制保留历史让读取不阻塞写入,感知应读取一致的过去快照而不是强迫整个过程停下来。

这里只讨论进程内模型;讲者明确把外部 I/O 协调列为未解决问题。

multi-version concurrency control is that readers don't impede writers
探索此观点 →
补充字幕原文 2

值是不可变快照;身份是把一系列相关状态联系起来的概念,不能等同于一个原地改变的值。

key characteristic of a value is that it's immutable

观察和行动应分开;在所讨论的 STM/MVCC 模型中,读取快照不应进入写入者的变化序列。

this box right perception does not interfere with process
解读边界

自动英语字幕未做音频核验,CAS 被写成 Kaz/cast/calves,STM 也出现 SDM 等误识别。 Whitehead、感知与物理时间用于启发模型;讲者明确承认简化,不能当作科学论证。 部分问答只录入讲者回答,听众问题不完整;不能重建未转录的问题。 保留不可变版本不自动等于永久保存所有历史;讲者提到 GC 可清除不再引用的过去。

阅读准备 有变量、对象和并发的基本概念。

相关视频与证据 2

机制解释时间模型解释了状态为何造成纠缠

Are We There Yet? 把值定义为不可变快照,并把身份与状态演进拆开;Simple Made Easy 则从理解成本解释可变状态的复杂性。前者提供机制模型,后者给出设计判断框架。这不是两个独立实验相互验证,也不是对状态的全面禁止。

当前视频

Are We There Yet - Rich Hickey

值是不可变快照;身份是把一系列相关状态联系起来的概念,不能等同于一个原地改变的值。

key characteristic of a value is that it's immutable
关联视频

"Simple Made Easy" - Rich Hickey (2011) ↗

可变状态把值与时间绑在一起;藏进方法或类里仍可能把这种依赖传给调用方。

Having state in your program is never simple, right?
▶ 36:01–36:08 · 观看片段

适用边界 同一讲者不同层次的设计论述,不是独立实验证实,也不构成立场逆转。

概念扩展从不可变快照扩展到信息值的设计

两者都明确把不可变性作为值的属性;The Value of Values 进一步突出语义透明、比较与跨边界共享。适用层次由进程内时间模型延伸到信息表达,而非立场改变。

当前视频

Are We There Yet - Rich Hickey

值是不可变快照;身份是把一系列相关状态联系起来的概念,不能等同于一个原地改变的值。

key characteristic of a value is that it's immutable
关联视频

The Value of Values with Rich Hickey ↗

不可变与语义透明是本讲重点:值应暴露可理解、可比较的含义,而非依赖隐藏状态。

values are immutable right and values are semantically transparent
▶ 10:43–10:54 · 观看片段

适用边界 同一讲者不同层次的设计论述,不是独立实验证实,也不构成立场逆转。

Hacker News 评论

查看 HN 原评论 ↗