乔纳森·布洛(Jonathan Blow)在一次演讲中提出,软件抽象可能导致文明的崩溃。他认为,随着技术的发展,程序员越来越依赖高级抽象,逐渐失去了对底层编程的理解。如果这种趋势继续下去,未来可能没有人能够维护关键的基础设施,从而导致文明的崩溃。
乔纳森·布洛是谁?
乔纳森·布洛(Jonathan Blow)是一位美国独立游戏开发者,以其创新的游戏设计和深刻的哲学思考而闻名。他出生于1971年,成长于电子游戏蓬勃发展的时代,童年时期因父母缺乏关怀而与电子游戏为伴19。他在加州大学伯克利分校学习计算机科学和创意写作,但未完成学业便辍学,理由是课程内容与他的兴趣不符。
然而,像许多成功人士一样,他可能也会被自己的成就和光环所影响,导致在某些问题上显得固执或过于自信。
布洛的主要观点:
- 上下文信息在抽象中丢失:实践比理论更能保持技能的传承。
- 现代社会依赖软件,但程序员对底层的理解在减弱。
- 抽象导致无知:高级抽象让程序员远离底层细节,可能导致关键技能的丧失。
- 文明崩溃的风险:如果忘记底层技术,我们将无法维护关键系统。(IBM利用AI将COBOL代码翻译为Java)
- 高可用性“五个九”(99.999% 正常运行时间)的质量标准已经消失,不适用于消费者设备。但仍然用于关键系统(如医院、金融等)。
- 虽然抽象可能导致某些能力的丧失,但它也推动了技术进步,让更多人能够参与编程。AI教父蒸馏论文曾被拒,如今DeepSeek引爆蒸馏革命!
- Meta等公司的程序员生产力低下,但实际上他们的大部分工作并不直接体现在用户可见的功能上,而是集中在广告投放和数据收集等后台系统。
核心结论:
- 抽象让编程更高效,但也可能导致对底层技术的忽视。
- 软件复杂性的增加部分源于市场需求和管理决策,而不仅仅是技术本身。
- 尽管抽象有其优势,但理解底层技术(如内存管理、指针等)仍然至关重要,尤其是在维护关键系统时。
担忧文明崩溃?
我们需要在利用抽象提高效率的同时,确保不丢失对底层技术的理解,以维持关键系统的稳定运行。
如今有了 AI,底层技术有AI理解了。
详细点击标题
网友讨论:
1、我在蒙大拿州立大学教授系统课程,讲授内容从晶体管到真正的计算系统,有些学生在开始上我的课时,并不理解文件系统到底是什么
2、我们无法培训每一位工程师,让他们有资格担任复杂系统工程组织的 CTO。无论如何,最终担任这些职位的人会随着时间的推移学到他们需要知道的知识。
3、不是所有的简化都叫抽象。也不是所有的抽象都叫简化。但通常我们追求简化的时候,就会想到抽象。我不觉得抽象会毁掉软件或者文明,但如果只是为了短期的简化而乱用抽象,那就会让软件和文明变得不灵活、不敏捷,也不容易理解。
就拿编程语言里的语法糖来说吧。很多时候,你会发现简化到一定程度后,再简化下去就不值得了,因为那样会让语言变得太复杂。在用那些语法很复杂的语言时,人们容易犯错,不是因为某个具体的语法难,而是因为用这种语言解决复杂问题本身就很难(不管编译器有多厉害)。
比如,当我用 Kotlin 写一些“类似线程”的东西时,我会把它和用 Elixir/Erlang 写同样功能的东西做对比。我发现,Kotlin 的异步和协程让事情变得复杂多了,简直是天差地别。虽然它们都对并行/异步计算这个问题做了抽象和简化,但 Kotlin 的简化只是把简单的东西堆在一起,结果还是复杂;而 Elixir/Erlang 的抽象/简化是真的好用,而且非常简单。
4、看起来他就是随便说了几句批评的话,然后就没干啥正经事了。
我甚至不觉得他有什么特别厉害的成就。他就是做了一些还不错的事情。
他做了两个勉强能叫游戏的东西,但其实更像是解谜题。玩过一次之后就没啥意思了。《时空幻境》还行吧,《见证者》其实就是《Flow》那种感觉。后来他花了十年时间研究一种编程语言,但一直没公开,因为他说“还没做完”。
他就是运气好,成功了,然后从那以后就觉得自己特别牛,其实没那么厉害。