产品沉思录 产品沉思录 产品沉思录 产品沉思录
批判电脑

批判电脑

现代电脑的批判集中在软件质量、用户界面设计和技术意识形态上。尽管硬件性能大幅提升,软件却未能同步进步,导致维护成本上升和用户体验恶化。程序员面临的复杂性管理问题和对用户控制权的剥夺也被强调,最终指出技术进步的缺乏与教育体系的失败密切相关。

我一直认为人类历史上发明的最好的工具是计算机,而我更想叫它电脑,一个由电驱动的类人脑工具。带有其发明之初的目标,而不是仅仅作为计算的一个机器。进入新世纪及互联网时代,电脑和应用程序几乎变成我们的神。在看不见的天空中运作,他们反复无常的念头决定了我们的心情和命运。有人警告过我们。我们被警告过这是一种太复杂的危险,但我们不在乎。

批判现代电脑的历史是有故事性的,也是令人兴奋的。

下面是一些最尖锐的批评的总结。

好的硬件掩盖了真正糟糕的软件。

我们笔记本电脑中的处理器比30年前快了1000多倍。因此,我们很自然地会问,就像 Joe Armstrong 所做的那样,为什么我们的程序不能运行得快上1000倍。

Jonathan Blow 回答说,因为软件正在衰退,尽管看起来它正在蓬勃发展。几十年来,软件一直免费搭乘硬件的便车,实际上,软件技术多年来没有得到改善。他说: “今天,我们只是不再期望软件能够工作。“The Five 9s” 在90年代曾经是一个非常普遍的说法当人们想卖给你软件或者硬件系统的时候。它的意思是“这个系统在99.999% 的时间里正常工作并可用。”我们不再用这个了。部分原因是9的数量会下降,我们不能让它们再次上升。我们甚至失去了过去那种高质量的口号。”

Jonathan Blow
Jonathan Blow

糟糕的代码堆积如山,而我们分身乏术。

Joe Armstrong 说在过去的40年里,我们写了数十亿行代码,在接下来的几千年里,这些代码可以让程序员花费数万亿工时来维护和调试我们编写的代码。

一方面,应该感谢软件工程师创造了这个令人难以置信的就业计划。另一方面,在某种程度上,实现软件是为了降低劳动力成本的解决方案,看起来实现软件可能无意中增加了劳动力成本?

如果像才华横溢的数学家 Edsger Dijkstra 所说的那样,“计算是关于控制复杂性的”,那么计算机行业的程序员所做的工作就完全失败了。

在过去,当电脑只有这么多的内存时,程序员必须选择哪些程序将存在于内存中。这些约束对程序员施加了严格的纪律,加班时,自然选择过程保留了好的程序,同时剔除了坏的。今天,内存不是问题!我们的内存比我们知道的要多要大。所有糟糕的代码都会继续折磨和迷惑未来的程序员。

Joe Armstrong
Joe Armstrong

GUIs are killing pipes.

已经存在一种编程哲学,其思想是如何驯服熵,并确保计算机实际控制复杂性,而不是增加复杂性。这些想法总结在 Unix 的理念中

如果你把程序想象成计算的模块化单元,那么你就可以考虑把这些程序组合在一起,或者用管道pipe 把它们连接起来,做各种各样的新事情。这样,当你只是尝试创建一个新的函数组合时,你就不必重新编程任何东西,如果你的程序出了问题ーー很容易调试,因为你的程序的每个组件只做一件事。此外,因为每个程序的输入和输出都是文本,所以我们甚至可以将用不同语言编写的程序通过管道连接在一起!

可管道程序承诺一个未来可能性的黄金世界。以任何你喜欢的方式将程序组合在一起,让电脑做你要求它做的任何事情!你是你命运的主人,电脑是带你到那里的飞船!

唯一的问题是,我们使用的大多数程序都不是可管道的。通常,当我使用一个应用程序时,我通过一个 GUI 与它交互。我点击一个按钮,然后这个应用程序就有了一些功能。也许我点击天气应用程序询问明天的气温是多少。天气应用程序不会给我一个方便的输出格式,我可以管到另一个程序的答案。天气应用程序可能只是在我的屏幕上显示一个数字,然后我必须记住并在其他地方重新输入。

电脑告诉我该做什么,但我不能告诉他们该做什么。

可以毫不夸张地说,今天电脑对人类行为的影响比人类对电脑行为的影响更大。实际上,这就是现代个人电脑设计背后的全部理念。最大的想法是,用户不应该有能力修补他们的文件系统是如何组织的,或者改变他们的操作系统的外观或功能。这个想法随后传播到了整个电脑应用领域。现在,给用户提供不可编程的界面是完全正常的,用户不能改变与之交互的程序的任何内容!

软件不是技术,而是意识形态

“随着思想而来的是思想的政治。有成千上万的电脑思想,所以有成千上万的电脑宗教。每个派系都想拉你入伙。每个派别都希望你认为他们是未来的浪潮,因为没有客观的标准,就像宗教一样,有成千上万的教派和分裂的团体。每个人都有自己喜欢的语言,而且他们对语言非常狂热!C + + ,Perl,Python,Ruby,PCP,C # ,Lisp ー但是哪个 Lisp 呢?东海岸 Unix 对抗西海岸 Unix。但是ーー谁来决定将使用什么方法呢?在创建软件时将遵循什么思想?啊——这就是电脑世界的政治。”

“只要业界认为软件就是技术,进步就不会发生。”ーTed Nelson

Ted Nelson
Ted Nelson

把电脑当成很计算快的机器,这是最愚蠢的使用它的方式。

“半导体行业的人对电脑知之甚少,所以他们抄袭了一些古老的架构。因此,我们在个人电脑中所拥有的是这种奇妙的(半导体)技术的陈旧架构。因此,推动这项技术的人对系统一无所知,而建造传统大型计算机系统的人也没有参与(半导体)技术革命。超级计算机对能源和空间的利用效率极其低下。他们只是强行进入。他们说我们不会用任何聪明的方法,我们只是把煤倒进去,看看我们能让它跑多快。所以他们只要打开门把手就行了。最后你会看到这些巨大的蒸汽机,散发出所有的热量。从任何角度来看都没有任何意义。但是,你看,情况实际上要好得多。这就是没人在乎的地方。我的意思是,如果你利用今天的技术来做一个真正新颖的架构,你现在就可以得到10000倍的系数。来自 Carver Mead

Carver Mead
Carver Mead

No one knows what they’re doing, and it’s a civilizational problem.

Jonathan Blow 说一代又一代地传递信息需要消耗大量的能量,而且“如果没有一代又一代的知识传递,文明就会消亡,因为这些文明所依赖的技术会退化和失败。没有 Google 和 Stack Overflow 的帮助,大多数人都无法编程。正如前面提到的,基本上没有人完全了解计算机是如何工作的,所以我们真的搞砸了教育下一代计算机如何工作的机会。

历史上最伟大的程序员之一 Niklaus Wirth 写道: “认为复杂系统需要大批设计师和程序员的信念是错误的。一个没有被完全理解的系统,或者至少没有被一个人在很大程度上理解的系统,可能不应该被建立起来。”我们不仅建立了这样的系统,我们所有的集体生计都依赖于它们!

Niklaus Wirth
Niklaus Wirth

推荐: