TooLongLink Video Watcher AI
Watch:
العربية - Arabic
Bahasa Indonesia
বাংলা - Bengali
български - Bulgarian
简体中文 - Chinese Simplified
繁體中文 - Chinese Traditional
Hrvatski - Croatian
Čeština - Czech
Dansk - Danish
Nederlands - Dutch
English
Eesti - Estonian
فارسی - Farsi
Suomi - Finnish
Français - French
Deutsch - German
Ελληνικά - Greek
ગુજરાતી - Gujarati
עברית - Hebrew
हिन्दी - Hindi
Magyar - Hungarian
Italiano - Italian
日本語 - Japanese
ಕನ್ನಡ - Kannada
한국어 - Korean
Latviešu - Latvian
Lietuvių - Lithuanian
മലയാളം - Malayalam
मराठी - Marathi
Norsk - Norwegian
Polski - Polish
Português - Portuguese
Română - Romanian
Русский - Russian
Српски - Serbian
Slovenčina - Slovak
Slovenščina - Slovenian
Español - Spanish
Kiswahili - Swahili
Svenska - Swedish
தமிழ் - Tamil
తెలుగు - Telugu
ไทย - Thai
Türkçe - Turkish
Українська - Ukrainian
اردو - Urdu
Tiếng Việt - Vietnamese
Submit
防止文明崩溃 / Jonathan Blow (Thekla, Inc)
DevGAMM
总结:
Jonathan Blow认为,由于日益增长的复杂性和对基础知识的丧失,技术,特别是软件,正在衰退,这与过去的文明崩溃有相似之处。
他用历史上的例子来说明这种退化,例如罗马的莱科格斯杯、拜占庭的火焰喷射器和安提凯希拉机械装置,这些先进的知识随着时间的推移而丢失,以及现代太空计划能力下降的例子。
阿波罗11号任务的巨大规模,显示了在履带运输车上的土星五号火箭 [
00:03:10
]
莱科格斯杯,一种古罗马纳米材料,根据光源显示不同的颜色 [
00:07:29
]
一张图表,展示了安提凯希拉机械装置的复杂齿轮系统 [
00:11:09
]
核心论点是,当前的软件开发,尽管看起来很先进,但很大程度上依赖于巨大的硬件改进,而实际的软件健壮性和程序员的生产力正在下降。
核心论点:尽管软件依赖无处不在,但它正在衰退,以飞机为例 [
00:18:08
]
图表显示了Twitter和Facebook员工人数的迅速增长,与软件生产力没有类似增长的论点并列 [
00:33:56
]
他列举了许多日常软件错误和系统故障,以证明质量期望的普遍降低,以及过度复杂化而不是真正创新的趋势。
一个Gmail撰写窗口,展示了一个格式错误,迫使文本进入一个狭窄的列 [
00:24:07
]
一个Visual Studio错误消息,阻止保存简单的命令行参数 [
00:24:29
]
一份俄罗斯签证申请表,显示一个持续的 "电话号码无效 "错误 [
00:26:17
]
这种过度的复杂性加速了知识的丧失,用肤浅的琐事取代了深刻的理解,并将良好的信息淹没在噪音中,使系统变得脆弱,并且对压力源的抵抗力降低。
一个说明,说明LSP如何创建一个复杂的,相互连接的 "其他库 "和服务器的分布式网络,导致系统脆弱 [
00:44:24
]
Blow敦促程序员通过优先考虑各个层面的简化——从硬件和操作系统到应用程序代码和用户界面——来积极抵制这种趋势,以防止“非常平庸”的未来,甚至社会崩溃。
呼吁在技术的各个层面(从硬件到用户界面)进行简化,以对抗退化 [
00:52:53
]
技术进步与衰退的周期性本质 [
00:00:00
]
快速进步的历史例子
:
太空竞赛
:演讲者首先强调了20世纪中期太空技术的快速进步。
苏联发射人造卫星(1957年)
:苏联发射的人造卫星刺激了美国巨大的追赶努力,导致在120天内成功发射。[
00:00:13
]
尤里·加加林绕地球轨道飞行(1961年)
:加加林绕地球轨道飞行一个月后,肯尼迪总统承诺美国将在十年内将人类送上月球。[
00:00:53
]
阿波罗11号(1969年)
:阿波罗11号任务的成功,在几乎没有太空计划的情况下,在12年内完成,展示了协调工程和科学进步的不可思议的壮举。[
00:01:53
]
来自阿波罗11号准备工作的纪录片强调了这项任务的巨大规模,包括巨大的履带运输车。[
00:02:31
]
阿波罗11号任务的巨大规模,显示了在履带运输车上的土星五号火箭 [
00:03:10
]
阿波罗后的衰退
:航天飞机尽管具有创新的可重复使用性,但证明了其昂贵且不可靠,导致其退役。[
00:03:37
]
这标志着美国太空能力下降的时期,迫使依赖其他国家进行轨道访问,导致人们普遍感到“太可惜了?”,失去了对太空旅行未来的愿景。[
00:04:02
]
现代复兴(SpaceX)
:埃隆·马斯克在没有火箭经验的情况下,创立了一家私人太空公司,其动力来自于技术进步不是必然的,需要努力工作的信念。[
00:04:42
]
马斯克指出技术退化的历史趋势,引用古埃及忘记金字塔建造,罗马人忘记建造渡槽。[
00:06:01
]
今天,SpaceX正在实现可重复使用的火箭,并讨论新的月球任务,显示了之前衰退的逆转。[
00:06:23
]
SpaceX的猎鹰9号火箭展示了可重复使用性,预计到2024年将进行月球任务 [
00:06:30
]
失去技术的历史例子
:
莱科格斯杯(公元300年)
:一种古罗马玻璃高脚杯,根据光源的不同,颜色从绿色变为红色。[
00:06:51
]
这种效果是由于玻璃中嵌入的纳米尺寸的银和金颗粒,这种纳米技术远远领先于其时代,其知识在罗马帝国灭亡后丢失,直到1990年左右才被重新发现。[
00:07:36
]
所涉及的复杂性和工艺表明对材料科学的深刻理解,而不仅仅是偶然。[
00:08:03
]
莱科格斯杯,一种古罗马纳米材料,根据光源显示不同的颜色 [
00:07:29
]
拜占庭火焰喷射器
:拜占庭帝国拥有先进的“希腊火”火焰喷射器,能够从船上的加压容器中喷射出类似凝固汽油的物质。[
00:09:16
]
这种强大的军事秘密对于保卫君士坦丁堡至关重要,但最终从知识中消失了。[
00:09:38
]
一幅拜占庭船只部署火焰喷射器的插图,被称为希腊火 [
00:09:19
]
安提凯希拉机械装置(公元前200-80年)
:从一艘沉没的希腊船只中发现的一种复杂的机械日历。[
00:10:00
]
这个复杂的装置使用大量的齿轮来跟踪天体的运动,预测日食,甚至安排奥运会。[
00:10:21
]
其复杂性意味着古希腊发展了科学过程,然而,这种知识完全丢失了。[
00:12:00
]
一张图表,展示了安提凯希拉机械装置的复杂齿轮系统 [
00:11:09
]
退化原则
:
与现代持续改进的假设相反,技术往往会随着时间的推移而退化。[
00:12:31
]
由于世代传承失败而导致知识丢失,要么是由于突然的文明崩溃,要么是由于渐进的制度衰败。[
00:15:10
]
青铜时代晚期的崩溃就是一个例子,由于环境压力,一个复杂的文明和贸易网络(依赖于青铜,由广泛来源的铜和锡制成)崩溃了,导致整个城市、语言和文化的丧失,因为关键技能没有得到广泛传播。[
00:15:41
]
一张图表,展示了青铜时代晚期文明之间相互连接的贸易和通信网络 [
00:17:54
]
现代软件的衰退 [
00:18:12
]
论点
:软件目前正在衰退,一种“软衰退”,可能导致“硬衰退”,因为文明越来越依赖于它(例如,通信、车辆)。[
00:18:12
]
崩溃通常从内部看起来很慢,这意味着当前的问题可能是更大问题的早期迹象。[
00:18:56
]
核心论点:尽管软件依赖无处不在,但它正在衰退,以飞机为例 [
00:18:08
]
软件依赖于硬件的改进
:
软件的感知进步很大程度上是由于几十年来硬件速度和性能的巨大改进。[
00:19:48
]
机器学习算法和面部滤镜之所以令人印象深刻,是因为快速硬件实现了大量的计算,而不是根本性的软件突破。[
00:20:41
]
支持这些令人印象深刻但更简单的算法的复杂底层软件(例如,加载位图、处理用户输入)实际上是退化所在。[
00:21:40
]
软件质量下降的证据(个人轶事)
:演讲者讲述了几天内经历的日常软件故障的许多例子:
命令行控制台错误(Lua脚本问题)。[
00:23:19
]
Emacs文件重新加载错误,导致内容截断。[
00:23:31
]
Gmail格式错误,重现了旧的Microsoft Word问题。[
00:23:47
]
一个Gmail撰写窗口,展示了一个格式错误,迫使文本进入一个狭窄的列 [
00:24:07
]
Visual Studio无法保存简单的命令行参数。[
00:24:26
]
一个Visual Studio错误消息,阻止保存简单的命令行参数 [
00:24:29
]
游戏商店下载错误(Epic Games Store)和Steam的黑色安装窗口。[
00:25:12
]
一个Epic Games Store错误消息,'无法开始下载' [
00:25:21
]
游戏中全屏显示问题和HUD错误(例如,反恐精英中的“未定义”玩家)。[
00:25:36
]
一个反恐精英记分牌,显示一个'未定义'的玩家,表明一个显示错误 [
00:25:57
]
网站表单验证问题需要完全重置会话(例如,俄罗斯签证申请)。[
00:26:18
]
Ultima 4的网站地图显示一个格式错误,导致文本错误地换行 [
00:26:12
]
一份俄罗斯签证申请表,显示一个持续的 "电话号码无效 "错误 [
00:26:17
]
酒店房间气候控制触发电话铃声。[
00:27:06
]
新安装的Photoshop由于“程序错误”而无法创建新文档。[
00:27:42
]
笔记本电脑由于更新或操作系统故障而意外重启,导致工作丢失。[
00:29:07
]
质量言论的丧失
:该行业不再谈论“五个9”(99.999%的正常运行时间),这是可靠性的常用指标,表明质量标准下降。[
00:28:24
]
行业借口和盲点
:
演讲者质疑“市场不会为此付出代价!”这个常见的借口,并质疑该行业是否还具有生产强大软件的能力。[
00:29:46
]
“科技公司”的定义已经从硬件创新者转变为专注于市场利基的软件初创公司,通常忽略了核心软件技术的进步。[
00:30:42
]
程序员生产力下降
:
编程语言中向更高抽象级别的转变(例如,从机器语言到JavaScript)通常被认为可以提高生产力。[
00:31:40
]
一张幻灯片,说明了编程语言中历史上的'抽象序列',从机器代码到高级语言 [
00:31:41
]
然而,这伴随着低级能力和理解的丧失,导致程序员现在的生产力低于过去,当考虑到像Twitter和Facebook这样的大公司及其功能变化的速度时,每个程序员的生产力接近于零。[
00:33:57
]
图表显示了Twitter和Facebook员工人数的迅速增长,与软件生产力没有类似增长的论点并列 [
00:33:56
]
根本原因:过度复杂化 [
00:37:18
]
“你不能只是...”现象
:软件变得过于复杂,使得在没有解决方法的情况下不可能完成简单的任务。[
00:37:26
]
部署
:你不能只是复制一个程序;你需要安装程序、flatpak或容器,这些都是解决操作系统不兼容性问题的复杂解决方案。[
00:37:35
]
操作系统在增加功能的同时,也删除了CPU直接程序可移植性等基本功能。[
00:38:59
]
图形
:编写着色器涉及每种平台的不同编程语言,即使硬件相同,也迫使复杂的自动翻译或多次重写。[
00:39:38
]
开发工具
:找到已安装的库(例如,Microsoft的
vswhere
程序,它有7,000行代码仅仅是为了找到库)等简单任务非常复杂。[
00:41:36
]
语言服务器协议(LSP)
:LSP将简单的编辑器功能(如查找变量的声明)转换为在本地机器上运行多个服务器的分布式系统,增加了巨大的、不必要的复杂性、错误和延迟。[
00:42:31
]
一张图表概述了语言服务器协议(LSP)模型,该模型将简单的编辑器功能转换为复杂的分布式系统 [
00:42:45
]
一个说明,说明LSP如何创建一个复杂的,相互连接的 "其他库 "和服务器的分布式网络,导致系统脆弱 [
00:44:24
]
复杂化加速知识丧失
:
个人知识减少
:复杂性的增加意味着个人只知道整个系统中较小的百分比,阻碍了良好的工作和知识转移。[
00:45:36
]
深刻的知识被琐事取代
:基本概念(例如,缓存一致性)被大型框架中特定,通常是临时的,错误解决方法所取代(例如,“如何解决Unity垃圾”)。[
00:45:58
]
淹没好信息
:理解复杂系统的困难导致在线搜索和教育材料中出现更多的不良或过时的信息。[
00:46:42
]
前进的道路:在各个层面进行简化 [
00:52:58
]
不加控制的复杂性危险
:更多的复杂性降低了系统对灾难的抵抗力,并加速了制度衰败。[
00:47:15
]
现代社会似乎可以处理无限的复杂性,但是存在一个极限,尤其是在考虑到世代知识转移的难度时。[
00:47:26
]
与青铜时代崩溃的相似之处,当时精英掌握的知识的脆弱性导致了像阅读和写作等技能的广泛丧失。今天,对CPU的详细了解同样是一种脆弱的,非广泛的技能。[
00:51:27
]
由于网络攻击或供应链限制导致的互联网关闭等潜在压力可能会严重影响脆弱、复杂的系统。[
00:52:16
]
简化的任务
:
技术会自然退化;因此,有必要有意识地进行简化。[
00:53:01
]
简化必须发生在各个层面:硬件、操作系统、库、应用程序代码、通信系统(例如,互联网)、编译、调试、分发以及人们与软件的交互方式。[
00:53:11
]
呼吁在技术的各个层面(从硬件到用户界面)进行简化,以对抗退化 [
00:52:53
]
“好消息”是,当前的系统是如此荒谬地复杂,以至于改进的机会比比皆是,只需要采取行动的“意愿”。[
00:53:33
]
为什么程序员应该关心
:
即使文明没有崩溃,如果目前的道路继续下去,未来也将是“非常平庸”。[
00:53:53
]
程序员自己也经常不快乐,因为他们一直在与愚蠢、复杂的任务作斗争,而不是从事有趣的工作。简化将带来个人满足感。[
00:54:09
]
对于个人游戏开发人员来说,消除复杂性是正确的“短期策略”,即使最初看起来违反直觉或成本高昂。[
01:00:16
]
坚持一个有错误的、复杂的系统总是比直接解决复杂性花费更多的时间并造成更多的痛苦。[
00:55:05
]
简化自己的代码有助于建立关于如何简化的制度知识,这是一项目前缺乏的技能。[
00:55:54
]
Copied!
Why didn’t you like it?
Inaccurate / wrong facts
Missing important points
Took too much time to load
Article too long / verbose
Article too short / not enough detail
Article hard to read / bad formatting
Images irrelevant / broken
Language / translation issues
Offensive / inappropriate
Other
Submit
Thank you for your feedback!
×