柏拉图和技术呆子

作者: k与k | 来源:发表于2018-07-22 16:14 被阅读61次

    《柏拉图和技术呆子:人与科技的创造性伙伴关系》(Plato and the Nerd: The Creative Partnership of Humans and Technology)

    作者简介

    《爱德华·阿什福德·李(Edward Ashford Lee):加州大学伯克利分校电子工程与计算机科学教授。

    内容简介

    这本书说的是最高的工程师智慧。

    工程师都有啥智慧呢?有个笑话是这么讲的。面对一个装了半瓶水的瓶子,乐观主义者说,瓶子已经半满了!悲观主义者说,唉,瓶子还有一半是空的……然后一个工程师说,嗯?这个瓶子其实没必要做这么大,只要一半大就够了。

    这个笑话是说工程师有个思维惯性叫“优化”。“优化”就是怎么才能多快好省地实现一个功能。产品经理想要一个什么功能,工程师就看看可不可行、怎么能用最节省的方法把功能实现。

    这么说,工程师似乎不是一个特别高光的行业。直是这样吗,咱们先从这本书的书名说起。

    1  柏拉图的世界观

    柏拉图在《理想国》里提出一个概念叫做“洞穴寓言”。说从前有个洞穴,洞穴里面有篝火,篝火前面有些人在做各种表演,他们的影子被篝火投射到洞穴的墙壁上。几个犯人被限制在演员和墙壁之间,他们不能回头看后面的情况,只能看见墙壁上的影子。这些犯人以为墙上的影子就是真实世界,殊不知自己看到的只是世界的影子。

    柏拉图说,我们人生的意义就是要摆脱影子的束缚,去发现真实的世界 —— 也就是“真理”。

    我们设想存在一个独立于任何宇宙的、由数学组成的柏拉图世界。那上面有各种数学方程,而我们看到的这个宇宙,只不过是柏拉图世界里某些数学方程的投影!

    一般人只看到影子,连想都想不到还有别的,你跟他说他也不能理解。而如果有人能发现影子背后的东西,那就是英雄。柏拉图说这就是人生在世唯一值得做的事情 —— 探索和发现真理。

    按照这个世界观,科学家显然是最厉害的人物,他们发现新知识。发明家不如科学家,因为发明家只不过是使用已有的科学知识去解决我们这个影子世界里的一些问题,跟发现理想世界不能相提并论。那工程师就更是下等了,工程师好像只是实现别人的想法。

    这条鄙视链,其实是错的。

    2  工程和科学

    2015年发生了一个大事件,两个黑洞合并产生的强烈的引力波,被人类探测到了。这件事当时在美国有一些议论。

    建造引力波探测装置,LIGO,总共花了11亿美元。那如果这个探测装置的意义就是证明了爱因斯坦100年前的一个推测、甚至说这就是物理学近年以来最大的成就……那只能说明现在物理学已经不行了。花11亿美元证实一个100年以前的学说,难道现在没有别的科学问题值得做了吗?

    这么说当然有失偏颇。引力波探测的意义并不是证明爱因斯坦有多伟大。绝大多数物理学家早就相信广义相对论是对的,这次在理论上没什么惊喜。其实引力波探测的主角不是爱因斯坦,而是工程师。

    引力波导致LIGO探测器的两个手臂之间的空间距离发生了相当于原子直径的千分之一那么小的变化 —— 而这个变化居然被人类探测到了!这是工程上的伟大奇迹。爱因斯坦曾经认为这么小的空间波动根本就不可能被探测到。爱因斯坦得感谢现代工程师。

    所以你看,科学的进步高度依赖于工程。这还不算,有时候科学发现还是工程的副产品。

    三个贝尔实验室的研究者因为发现了晶体管效应而获得了1956年的诺贝尔物理奖。那的确是半导体物理学的重大突破,但是,那三个研究者可不是为了发现新物理而去研究晶体管 —— 他们是为了发明新的晶体管而不得不解决物理学问题。

    其实工程师从来都不认为他们只是在应用现有的科学理论。历史上经常发生的事儿是工程师已经把东西做出来了,科学家还没搞清楚原理。比如塔勒布特别爱举的一个例子是喷气式发动机。你要在百度搜索,很多网页会信誓旦旦地告诉你喷气式发动机的“原理”是什么 —— 其实这个原理到现在也没完全搞明白。工程师只是不断地试错、鼓捣,喷气式发动机不是在哪个科学理论的指引下发明的。

    那这么说的话,工程师和科学家之间的地位是不是有点变化了呢?我们应该如何认识工程学呢?

    3  爱迪生用的模型

    咱们还是请出历史上最有名的这位工程师,爱迪生。爱迪生发明电灯的故事人人皆知,但是Lee给我们说了一个不同的角度。

    电灯需要灯丝。最早的时候,爱迪生用的是金属铂的丝。在铂丝两端加一个电压,其中有电流通过,铂丝会发热。在空气中,这么做会把铂丝给点着、烧断。爱迪生想了个办法 —— 用灯泡。灯泡内部抽成真空,真空中的铂丝就不会燃烧,而是会持续发光。

    你可以说爱迪生在发明电灯的过程中做出了一个科学发现:金属铂在真空中的发热性质 —— 工程师客串了科学家。但爱迪生想要的不是这个,他想要的是物美价廉的电灯泡。

    铂丝的问题是电流太大。我们在高中都学过“欧姆定律”,电流 = 电压/电阻。铂的电阻很小,所以铂丝的电流就会很强。电流很强,灯泡外边的铜导线就必须做得很粗,这样用电灯照明就会很贵,人们就用不起。

    那要想降低电流,爱迪生一看欧姆定律,就知道必须选择电阻大的东西来代替铂丝。根据这个思路,他做了无数次实验,找到了竹丝。后来又使用了钨丝。

    那你说这是不是欧姆定律的伟大胜利呢?爱迪生的成功是不是一个工程师正确使用了柏拉图世界里的科学知识呢?

    不是。欧姆定律根本就不是柏拉图世界里的真理 —— 它是一个错误的定律

    真实世界里没有哪个材料的电压和电流是成正比的。电阻根本就不是个常数,它跟温度有关,而温度又跟电流有关 —— 所以电阻跟电流有关!严格地说,欧姆并不是“发现”了欧姆定律 —— 你大概可以说他是“发明”了欧姆定律。

    欧姆定律不是真理,它只是科学家提出的一个代替真实世界的“模型”。现代的哲学家都会告诉你,所谓科学理论其实都是模型。牛顿力学不是真理、爱因斯坦场方程也不是真理 —— 它们都是柏拉图世界投射到我们这里的影子。

    模型都是错的,但是有些模型很有用。

    对爱迪生来说,欧姆定律是个有用的模型。根据这个模型,爱迪生去找到了竹丝。爱迪生并不关心欧姆定律是不是柏拉图世界里的真理,他关心的是能不能基于这个模型制造灯泡。

    这才是工程师和科学家的不同定位。人类的探索发现和发明创造,都不是像柏拉图说的那样一步到位找到客观真理。科学家和工程师都是研究模型的人。科学家关心的是这个模型能不能更好地反应真实世界。工程师关心的是能不能用这个模型创造出东西来。

    工程师思维的大道,就是先创造一个好模型,然后想办法实现这个模型。模型是为了后来的产品实现而创造的,这就非常具有主观特色了。创造或者选择什么样的模型、怎么实现这个模型,这些都充满了工程师的个性。

    这是一种创造。就好像艺术创作一样。而且这个创造过程是一代一代的工程师们集体去做的,它会被积累成文化。

    爱迪生发明电灯的过程中,有很多的动作属于“试错” —— 不断尝试、直到好使为止。而现代工程学面对的东西实在太复杂,一点一点试验是不行的。所以现代工程学越来越依赖于模型 —— 如果你最初的模型好,就可以在模型之上再建造模型,这么一层层下去。

    可以说,模型,是工程师们“想象的共同体”

    3  硬件的大智慧

    芯片是人类最高技术水平的呈现。一个典型的CPU上芯片的面积大概只有不到两平方厘米,而上面有十几亿个晶体管。这东西现在无处不在,所有计算机全靠CPU运行各种程序,芯片是计算机的大脑。咱们先不用考虑那么小的晶体管是怎么造出来的,我想先请你思考一个问题 ——

    怎样管理十几亿个东西?

    这可不是十几亿个原子或者十几亿粒沙子。所有这十几亿个晶体管都必须按照某种严格的秩序连接在一起,每一处连接都得精心安排。请问这是怎么做到的?人的认知能力非常有限,绝大多数人连500个人的名字都记不住 —— 而设计芯片,可是相当于给全中国的人安排工作。

    这不是什么“工匠精神”、什么“巧干加实干”、什么“文化传承”、什么“充分发挥市场作用”或者什么“集中力量办大事”就能做的事情。你需要中外古代都没有的、现代化的一流智慧。这个秘密就在“模型”之中。

    芯片,是模型的模型的模型的模型。

    晶体管的本质

    不知道你对“场效应晶体管”的熟悉程度如何。这个词听起来有点吓人,如果没学习过数字电路相关的课程,你可能都没听说过这种东西。最新型的场效应晶体管 ——它最细微处的结构尺度只有10纳米 —— 也就是一亿分之一米,相当于20个硅原子并在一起的宽度!

    场效应晶体管涉及到精深的物理学,但是在计算机芯片上,它只有一个非常简单的功能 —— 当你听说晶体管的时候,你不需要理解半导体物理学。你只需知道晶体管是个开关。

    开关。这么简单的东西,就能实现一切计算功能!

    香农的洞见

    说到这里我们必须再次请出大神克劳德·香农(Shannon)。我们知道他是信息论的祖师爷。而这种祖师爷级别的洞见,香农有不止一个。1940年的香农才22岁,在麻省理工学院获得硕士学位,毕业时他写了一篇硕士学位论文。这可能是历史上应用最广泛的一篇硕士论文。在这篇论文里,香农解释了怎么用最简单的开关,实现*一切*逻辑运算。

    那时候还没有晶体管这种东西,大概只有电子管、甚至可能是一些用机械方式来实现的开关。而香农已经看出来了,只要你有开关,你就能有一切。

    这篇论文我们不一定要弄明白 —— 但是你应该记住香农告诉我们的两件事。

    第一,所有基本逻辑门都可以用晶体管搭建。第二,用基本逻辑门组合,就可以实现各种运算。

    开关的功能是如此的简单。它只能根据两种命令完成两个动作,它是纯机械化地事,没有任何智能。但是亿万个这样的开关组成在一起,就是 CPU,就能运行软件,就能实现人工智能。

    我们总结一下,这整个过程包含了四层的模型 ——

    1. 最底层的是半导体物理学,

    2. 晶体管开关,是建立在半导体物理学上的模型,

    3. 逻辑门,是建立在开关上的模型,

    4. CPU,是建立在逻辑门上的模型。

    这个层级系统很像是人类的组织:中央管省,省管市,市管区,区管基层单位。人类组织是人类“想象的共同体”,CPU 的层级结构也是工程师想象的共同体。

    平台与自由

    晶体管能做多小,这是物理学决定的。但是除此之外,CPU 就跟物理学没啥关系了。剩下的事都是工程师的头脑里的设计,所以叫“模型”。从开关往上一层一层的构建,都是人为设计的,只受到想象力的限制。而且这种设计肯定不是唯一的 —— 今天的计算机是历史的产物,保留了香农的个人风格,已经成了一个文化 —— 如果计算机起源于中国,从晶体管到CPU也许会是非常不同的设计。

    但是请注意,这种分层的大结构,这种每一层模型是建立在前一层的基础之上的思想,很可能已经是最好的办法。

    这种结构的好处是,在每一层上搞设计,你都只需考虑它紧挨着的下一层。设计逻辑门不需要考虑半导体物理学,设计运算器不需要考虑晶体管。

    像这样的“层”,可以称为“平台” —— 给你搭一个平台,设计者可以在平台上随便唱戏。

    有人说平台的好处就是给了设计者“免于选择的自由(freedom from choice)”。每一层平台都在减少上一层的选项。选项变少了,集中精力创作才成为可能。最后程序员只需要对一块 CPU、而不是十几亿个晶体管编程。

    这种层级平台之间的合作,和亚当·斯密说的那种人与人横向的劳动分工不是一个故事。想要发明铅笔这种东西,你是先看看世界上都有些什么,把不同东西拼凑在一起综合成一个新东西。而 CPU 的平台结构则完全是工程师的顶层设计!

    除了最底层是物理学给的之外,其他每一层都首先是工程师想出来的模型。CPU 是个硬件,而设计 CPU 却几乎全是理论 —— 就好像艺术创作一样。

    这可不是自然界的逻辑。你可以把生物体分成好多层,比如分为器官、组织、细胞,但是这种分层跟设计 CPU 可不一样。自然界有很多所谓“涌现”现象,也就是整体会表现出个体运动解释不了的性质 —— 哪怕你把这一层研究透彻了,你也无法解释下一层是怎么回事。

    只有 CPU 这种人为设计的分层,才有那么清楚的逻辑结构。这个逻辑结构不但给了设计师自由,而且保证了通用性。

    比如2001年,加州大学伯克利分校的华人教授胡正明和人合作发明了一种新的晶体管,叫“鳍式场效应晶体管(FinFET)” 。这种晶体管跟以前的非常不一样,但是英特尔并不需要专门为它重新设计 CPU,用户除了发现速度更快能耗更低,完全感受不到晶体管的不同 —— 因为往上每一层的做法都是完全一样的。

    最底层的硬件可以随时变,但是每一层的逻辑范式可以长期不变。这大概也是为什么想在芯片领域“破坏性创新”如此困难。香农以来的芯片结构已经被历史积累成了一个文化。

    4  分层与革命机会

    今天的中国拥有全世界最发达的互联网应用,但是在信息技术上,我们还没有什么特别拿得出手的创新。比如说,现在有很多很多种编程语言,有的是第一流的计算机科学家发明的,但也有的像PHP和JavaScript是工程师在工作中随手发明的,也都流行了。我最近还听说一个新编程语言叫 Jeeves,是麻省理工学院一个女研究生发明的……

    可是有哪个编程语言是中国人发明的呢?

    真没有。

    发明好用、流行的编程语言似乎也不是什么了不得的事情,可是堂堂的信息大国,居然就没有。那是不是我国工程师的工作思路有点问题?

    我们非常希望用高级的工程技术赚高级的钱。几年前有个移动网络的“标准之争”,中国说我们这么大的市场必须搞一个中国标准,谁抓住了标准谁就能收取专利费,谁就厉害。可标准是从哪来的呢?难道不是应该你提供了一个众人都急需的解决方案,才*需要*制定新标准吗?

    以赚钱为核心的思路恐怕还不是工程师的大道。工程师的大道应该是开创一个可供后人追随的新路线。标准、专利费和作为祖师爷的声望都只不过是副产品。

    最近我们非常关心中国怎么做,才能在芯片这个最尖端的领域赶超美国。很多人意识到,按照现有的芯片技术框架发展,一直跟在美国后面追赶的话,中国没啥机会 —— 芯片是个胜者通吃的领域,中国擅长的价格优势和大市场优势都不存在。

    我们需要一个“弯道超车”的机会。最好另起炉灶,中国主导搭建一个新框架。那这样的机会在哪呢?如果有这样的机会,我们有人准备好了吗?

    信息技术最核心的思想就是分层,在每一层上有不同的范式,给工程师最大的创作自由。我们看看能不能从这个思路找到新机会。

    用分层解决复杂性

    Lee 做了个估算,运行在云端服务器上的一个软件,大约要调动10^24个晶体管。这大约是人类设计出来的最复杂的东西了。分层是解决复杂问题最好的办法。上一讲我们说了从晶体管到CPU的硬件分层,今天接着说软件的分层。

    软件的底层是“指令集”。计算机直接能读的东西,是全是0和1组成的机器代码,比如像下面这样 ——

    0011010111010100

    最早的程序员就是这么跟计算机对话的……一般是在纸带上打卡。这么操作实在太复杂,所以工程师发明了“指令集”。有了指令集,我们就可以用“汇编语言”操作计算机,比如上面那行代码可以写成 ——

    cmp eax, ebx

    它的意思是比较两个字符串是否相同。现在最常用的是英特尔的“x86”指令集,它具有向后兼容的特点,确保新一代的机器能运行老一代的代码。

    汇编语言再往上一层,才是所谓“高级”编程语言。这里“高级”的唯一意思就是这些语言是建立在汇编语言的层次上面的一层。比如我们常用的C语言、Fortran语言、Python、Java等等等等,这些才是给人用的编程语言。你用高级语言写个程序,它会被“编译”成汇编语言,然后再操纵硬件。你几乎就不需要考虑硬件,你面对的是纯逻辑模型。

    再往上一层是“云”。在云这一层整个硬件都被虚拟化,软件实际在哪台计算机上运行已经没有关系了。比如 Google 存储了几十亿个网页的检索系统,这些数据存在于无数台主机上。当你搜索的时候,你不是跟一台计算机互动,而是在和“云”互动。

    Lee在书中给了个不完全总结,从最底层到我们的日常应用,计算机技术至少可以分成下面这九层 ——

    1.半导体物理学

    2.晶体管数字开关

    3.逻辑门

    4.运算器代表的逻辑图

    5.CPU代表的数字机

    6.汇编语言、指令集

    7.编程语言

    8.各种可供调用的公共库函数

    9.云计算

    互联网通信协议,包括TCP/IP和SMTP等等,则是另一个用分层的方法解决复杂性的例子。

    所有分层自下而上建立,每一层都建立在前一层的基础之上,而不提供它上面一层的功能。每一层的程序员完全不用考虑前面一层的事儿,这样就给了各层的工程师最大的自由度。

    那你说如果我掌控了一个底层技术,上面所有层岂不是都要从我这里出发?我不就建立了标准吗?我不就可以坐地收取专利费了吗?原则上的确是这样的。中国要搞国产通用芯片,就面临x86指令集的专利问题。

    但专利壁垒并不是中国搞国产芯片真正的困难。模型都是人为的,如果仅仅是为了避开专利,你完全可以自己弄一套指令集。问题不在于别人允不允许你另起炉灶,问题在于你另起炉灶之后有没有别人跟进。

    分层模型是程序员们想象的共同体,而这个共同体现在已经无法撼动。这些层已经被历史沉淀成了文化,所有新产品都在这些层上生长。中国错过了计算机技术的奠基时代,我们来晚了。

    但是这也不是说中国就完全没机会了。有一种机会是建立新层。

    应用层

    苹果公司“发明” iPhone 的时候,并没有使用什么独创的新技术。iPhone 用到的所有技术当时都已经有了,但是 Lee 认为,iPhone 仍然是一个革命 —— 因为它解决了“机会危机”。

    2007年,手机已经可上网,而人们不知道这代表什么新机会。难道说手机上网就是用手机浏览网页吗?

    iPhone 的真正革命性贡献在于APP开发平台。苹果在现有的技术之上又增加了一层,提供了一个新的开发环境 —— 任何人都可以在这一层上开发手机应用。

    今天我们用手机做的事情,十年前的人连想都想不到。微信和手机支付是重大的“范式转移(paradigm shift)”,它们在技术上是谁第一个实现的已经不重要了,它们可以说就是中国的创新。

    要论工程师的大道,能左右国运的创新还得跟“层”有关。

    以前我们搞过一些行为艺术式的伪创新。比如说中国没有自己的编程语言,有人说要“发明”“国产编程语言”,结果就是把别人的语言给中文化而已。人家用个“if”,两个字符就能说明白的话,你非得变成“如果”,这有意义吗?没有任何意义。包括“国产操作系统”,也是这种思路。

    你说我爱国,所以我要支持国产操作系统 —— 可以。但从技术进步本身来说,把别人的操作系统重新包装一遍并不是创新。

    革命的机会

    Lee 看到了两个信息产业革命的机会。一个是现在的人们做所有事情、将来用的所有东西都可能上网,而网络在与人方便的同时,也影响到了个人隐私。方便和隐私之间有一个矛盾,那能不能用创新来解决这个矛盾,就是一个机会。这个领域现在有很多人讨论我们就不细说了,但是有一点值得说 —— 前面说的那个 MIT 研究生发明的 Jeeves 语言,就是专门为隐私和保密数据编程的语言。

    Lee 的另一个洞见可能对中国更有用。IT 技术的这个用分层解决复杂问题的方法,现在还没有被用到物理设备的制造中来。

    比如说造大飞机,现在就没有软件层面的分层。这里面有个根本矛盾。

    普通计算机如果同时运行多个程序,那哪个程序先结束运行、哪个程序运行得快一点慢一点、都无所谓,其中没有什么时间协调。而飞机就不一样了。飞机各种部件的运动,是通过不同程序分别控制的。飞机的各种机械动作必须协调得非常好才行,每个控制程序什么时候启动、什么时候结束,必须分毫不差。可是这种时间协调不是通过什么“飞机操作系统”统一指挥的 —— 各个参数都是在实验中分别微调出来的。

    这就意味着芯片一旦调好就不能换了。新一代芯片的计算速度会不一样,原有的协调就会被打破。大飞机一旦设计定型,当初用什么芯片就得以后一直用这个芯片。飞机制造公司不得不买很多芯片长期备用,要保存好几十年 —— 像空中客车公司甚至是用液氮保存芯片。

    不但飞机,现在包括汽车在内,凡是涉及到物理操作的机械设备的计算机化,都存在时间协调的问题。我们急需一个“协调层”。

    我觉得这可能是中国的一次弯道超车的机会。中国是个制造业大国,而且恰恰正在制造大飞机,将来必定是这项技术的最大用户。不过美国已经有了一些积累,2006年就有了称为“赛博物理系统(cyberphysical systems)”的研究立项。

    总而言之,现在中国面对的不是一两项关键技术,而是一个建立在分层模型上、树大根深的信息技术文化。除非有新的分层机会,你很难另起炉灶。“中国标准”不能刻意为之,最好抓住关键机遇,解决真问题,才有可能创造一个新体系,那才是真正的大国风范。

    相关文章

      网友评论

        本文标题:柏拉图和技术呆子

        本文链接:https://www.haomeiwen.com/subject/zuilmftx.html