世界末日的最佳编程语言

编程语言

一旦我开始思考世界末日,就很难停止。一次与悬挂在纽约联合广场上空的末日时钟的不期而遇,让我疯狂地在 WikiHow 上搜索生存技巧。很快,我找到了加拿大程序员维吉尔-杜普拉斯(Virgil Dupras)的末日著作。他认为人类文明的崩溃已经迫在眉睫,而且将分为两波。

首先,全球供应链将崩溃。现代科技依赖于由工厂和国际航线组成的微妙网络,这些网络极易受到快速气候变化的影响。iPhone 使用的存储芯片来自韩国,半导体来自台湾,组装线位于巴西和中国。杜普拉斯说,切断这些联系将催化整个社会的崩溃。

第二部分将在最后一台电脑崩溃时发生。杜普拉斯认为,现代硬件的复杂性意味着几乎不可能对其进行维修或再利用,而如果没有制造新设备的手段,就会出现缓慢的停电–没有轰鸣声,更多的是呜咽声。路由器死亡。服务器咽下最后一口气。手机报废。什么都不能用了。

除了崩溃的操作系统。它是杜普拉斯为世界末日设计的操作系统,重量轻,可在废旧硬件上运行。

杜普拉斯与妻子和两个孩子住在加拿大魁北克省的乡下,在一个500人的小镇上,人们自己劈柴,自己种菜,有时还自己盖房子。向他发出谷歌日历邀请感觉很奇怪,因为我从他的文章库中得知,他讨厌大型科技公司。我们通话时,他的声音听起来怪怪的,很单调。是信号不好吗?声音变闷了?杜普拉斯与他的许多具有可持续发展思想的邻居不同,他认为与气候变化的斗争是徒劳的。我们已经输了。”他说:”一旦你窥探到了深渊,你就无法再看到它了。杜普拉斯接受了自己的命运,甚至将其视为一种信仰。他说,就像有天主教徒就有垮掉派一样。

但他并不绝望。一个无药可救的人不会如此疯狂地为反世俗做准备。杜普拉斯于2019年开始构建崩溃操作系统,试图保留人类对8位微控制器的编程能力。这些微型计算机控制着收音机和太阳能电池板等设备,可用于从天气监测到数字存储等一切领域。杜普拉斯认为,能够用最少的剩余资源对它们进行重新编程将是 “天崩地裂 “后的必要条件。但首先,他必须自学一门适用于末日的编程语言。

20 世纪 50 年代末,计算机科学家查克-摩尔(Chuck H. Moore)在史密森天体物理天文台工作,根据观测数据预测天体和卫星的未来位置。当时机器内存稀缺–那时还是打卡机时代–摩尔需要一种方法,通过最大限度地减少内存使用来优化处理效率。他开发了一种程序,可以直接执行简单的命令,一次一条,无需重新编译。在接下来的十年中,它逐渐发展成为一种编程语言,他称之为 Forth。

Forth 可直接与硬件通信。它通过 “Words ”命令来控制计算机的内存,而 “Words ”命令则由用户自行定义。由于这些 “Words ”下的基本命令集是用本地机器码定义的,因此只需翻译一小部分,这意味着汇编器更小,内存更少。因此,Forth 提供了杜普拉斯所说的 “功率密度”,使其成为 Collapse OS 的完美基础。这很重要,因为电灯(很可能)不会永远熄灭,相反,我们轻松的自来电世界将被宝贵而来之不易的本地发电机所取代。高效利用处理能力将至关重要。在Collapse.org网站上的一篇文章中,杜普拉斯描述了他是如何发现Forth的,“就像酗酒者所说的瞬间清醒”。Collapse.org是他的宣言/博客/大脑垃圾/手册。

杜普拉斯花了两年时间才完成了崩溃操作系统。通过 U 盘启动该操作系统,精通技术的用户就能对微控制器进行编程,进而实现温室自动化、电话线控制,甚至电力调节。但杜普拉斯知道,这还不足以重建崩溃后的社会。因此,2022 年,他开始着手开发 Dusk OS–一个可在现代设备上运行的崩溃操作系统版本。杜普拉斯使用 Forth 编写了自己的编译器,使 Dusk OS 兼容 C 语言(大多数现代软件的基础)编写的代码。这样,无需从头开始重写已有的逻辑,Dusk OS 就能检索和编辑文本,并访问常用于备份设备的文件格式。它可以在智能手表和旧平板电脑上仿真运行,并可根据用户的喜好进行黑客攻击和引导。

起初,我不明白为什么这些东西会如此重要: 当我们为了食物而互相厮杀时,电脑接入肯定不会是优先考虑的问题吧?在《最后的我们》中,佩德罗-帕斯卡尔(Pedro Pascal)在躲避僵尸的过程中从未暂停过发送电子邮件。但杜普拉斯说得很有道理: 在我们重新认识狩猎和采集之后会发生什么?

如果我们想重建社会,就必须知道如何重建。而在文明崩溃的情况下,我们的大量集体专业知识,就像我珍贵的维基知识一样,将被锁在硬盘里或丢失在云端。杜普拉斯希望,“黄昏操作系统 ”能让崩溃后的人类访问丢失的知识档案,就像斯瓦尔巴全球种子库一样,为人类的努力提供帮助。问题是什么?最好在崩溃前将 Dusk OS 下载到旧手机、记忆棒或笔记本电脑上。否则,在没有互联网的情况下,你只能从已经安装了它的人那里复制它。这就引出了另一个问题–杜普拉斯把精通 Forth 等同于能力的原因。只有极少数人能同时拥有一份 Dusk OS 和操作它的知识。这部分人将掌握重建社会的钥匙,并将成为崩溃后的哲人王。是时候让我去征服福斯了。

用代码编码》让我想起了《疯狂的麦克斯》中无法无天的乌托邦。你可以根据上下文的限制,制定自己的规则。如果你愿意,可以重新定义 IF 语句。你可以为一个 Word 重写机器码指令。你甚至可以在运行时更改单词。由于在 Forth 中,Words 本身就是关键字,因此你可以创建一种针对单一目的进行优化的语言,将原本需要几十行的命令打包成一行。”第一本 Forth 教科书《Starting Forth》的作者 Leo Brodie 告诉我:”在 Forth 中,你在创造自己的语言。

Forth 的低级特性虽然是其处理能力的关键,但却让编程感觉很陌生。它使用后缀,一种将 2 + 1 译为 2 1+ 的数学符号形式,我觉得这种符号既不直观,也不容易辨认。大多数语言允许内存被分割和移动,而 Forth 是基于堆栈的,这意味着数据是按时间顺序存储的,并以后进先出为基础进行管理。我不断遇到错误,被迫放弃我认为通用的编程习惯。我发现自己在努力使用机器语言。

当我给杜普拉斯发邮件寻求帮助时,他把使用 Forth 比作开车。后者定义了调用约定、变量存储和返回堆栈管理,而 Forth 则将这一切都留给了程序员。它直接与内存交互的方式与 C 语言相同,但在精度和效率上远远超过 C 语言。“人们误以为 Forth 只是一种语言,”Dupras 说。”它是一种与计算机交互的方式。

Forth 没有更受欢迎的原因与我们大多数人驾驶自动驾驶汽车的原因相同。20 世纪 90 年代的个人计算热潮引发了一种痴迷,那就是让技术适合你的手掌,让代码更容易编写。为了保护程序员,我们对语言进行了抽象,结果迷失了方向。为了方便而变得臃肿,用杜普拉斯的话说,开始 “在每个角落渗出难以捉摸的脓液”。

“我们对效率的理解出现了偏差,”杜普拉斯说。Forth 是 Python 除草机的镰刀。“他说:”如果你计算每片草叶的焦耳数,你会发现割草的人效率更高。”当你考虑速度时,你会发现割草机的效率更高。福斯迫使你做到精确和高效记忆,就像你在崩溃后一样谨慎地调配资源。杜普拉斯显然是用镰刀割自己的草坪。“他说:”到了一定程度,你就可以像割草机一样快了。

我开始找到自己的方向。我不再像在 Python 中那样,把字节发送出去,然后相信系统会找出它们的去向,而是习惯于自己负责分配和释放内存。我满脑子想的都是要存储什么、存储在哪里、需要多少空间。每一行代码突然都有了重量。我就是不死乔,笔记本电脑就是我的城堡,内存就是我的水。

很快,我发现自己就像修改跑题的句子一样,不断完善和修改我的代码。我不再指望机器能预知我的需求,而是试着像机器一样思考,以满足它更多的需求。正因为我必须三思而后行,所有那些在其他编码语言中提醒我们要简洁的不必要的复杂缩写–YAGNI(你不需要它)、KISS(保持简单,愚蠢)、DRY(不要重复自己)–都变得过时了。

在摆弄了几天 Forth 之后,回到 Python 感觉很奢侈。我从来不需要考虑内存不足的问题,也不需要彻底解释自己。这种感觉就像与老朋友重逢。那一刻,让编程变得 “用户友好 “的资源变得显而易见。

在认识杜普拉斯之前,我认为效率就是速度。但这种速度的真实成本被小心翼翼地隐藏在农村数据中心和遥远的铜矿中。我很少考虑每增加一千兆字节内存所需的能源,也很少考虑云计算现在的碳足迹比航空业还大这一事实。

尽管环境成本在不断增加,但内存却一如既往地廉价和充足。如今,只有在必要时才会使用离机器更近的语言:银行试图尽量减少金融交易的延迟,航天器利用有限的机载资源工作,过时的系统需要大量工作才能更新。

但在文明崩溃的时候,阵列处理和自动内存管理这些安静的奢侈品将在很大程度上消失。随着便利性让我们离机器越来越远,我们有可能忘记计算机的实际工作原理,并在崩溃时失去重建技术的能力。“没有人记得如何编写文本编辑器,”与杜普拉斯保持联系的独立程序员德文(Devine)说。“当你开始忘记如何做这么重要的事情时,事情就会开始崩溃,而且会崩溃得很厉害。”

戴文认为,编程的效率不是割草机或镰刀,而是更像野花草地–“尽可能减少状态的转换”。在他们看来,人工智能是 “以人为本 ”编程的顶峰,在这种编程中,计算机会找出你想要做什么,并替你完成。那一刻,我突然明白了什么。随着程序员越来越依赖高级语言,低级语言的平均熟练程度直线下降,这就增加了对首先支持这种抽象的计算资源的需求。人工智能不仅会抢走我们的工作,还会让我们忘记如何去做这些工作–如果我们不先耗尽为其提供动力的能源的话。

但也许还有另一种方法。2016 年以来,德文和他们的伙伴雷克一直全职生活在北太平洋的一艘小船上,他们使用 Forth 等低级语言,最大限度地利用两块太阳能电池板每天提供的 190 瓦电力。我是在一个由大约一百名 “崩溃派 ”成员组成的邮件列表上找到他们的。他们的生活方式就像杜普拉斯预告的那样,我们很快就会过上资源受限的生活。当我在八月联系他们聊天时,他们告诉我他们可能在十月才有手机服务。

当我们终于接通电话时(仅限音频),德文给我的印象是更年轻、更乐观的杜普拉斯。虽然完全赞同杜普拉斯对崩溃的看法,但戴文相信低级编程的力量,不是因为它能重建社会,而是因为它有可能防止崩溃。戴文观察到一种名为 “永生计算”(permacomputing)的趋势在不断发展,这种趋势促进了与技术之间的关系,这种关系考虑到了资源的限制。

当我从荒野回到散列表和内置库等我以前认为理所当然的奢侈品世界时,我对机器的错综复杂有了新的认识,或许还有一丝希望。Forth 是杜普拉斯为最坏情况做准备的方式,但它也在帮助像德文和雷克这样的人更可持续地编码和生活。如果我们都能做到这一点,也许世界末日并不像看起来那样不可避免。

本文文字及图片出自 The Best Programming Language for the End of the World

你也许感兴趣的:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注