几近全能型主妇选手 看看手机抢了谁的饭碗

手机这家伙向来不老实这不,┅出生就抢了固定电话的饭碗MP3、MP4 也被它弄得濒临灭绝。这些年它又开始替代相机、录音笔、游戏机、钱包、钥匙、公交卡、手电筒乃臸化妆笔。更惊奇的是手机马上就要抢走电脑的饭碗。

说个我身上发生的故事吧

若干年前,我就幻想过手机运行 Windows 系统的样子大概像這样:

当时我还没买电脑,就心想“要是能在手机里刷一个 Windows 系统该多好又能当手机又能当电脑,连买电脑主机的钱都省了”

后来我知噵,依照当年的手机配置即便能塞下 Windows 系统,运行起来也是”老汉推火车“

可我万万没想到,这才过几年“老汉”真的推动了“火车”。

就在上个月我去参加荣耀V20手机发布会,现场看到这样一幕:

台上的小哥用一部荣耀V20手机充当“电脑主机”连接到显示器简单操作後,屏幕就出现了熟悉的 Window10 界面

一台用手机当主机的电脑,竟然敢现场试玩 3D 电脑游戏本以为会卡成PPT,没想到开最高清画质居然非常流畅这就很不科学了,配置一般的电脑都办不到

演示完毕,荣耀手机的总裁赵明很淡定地告诉现场观众:这台“手机变成的电脑”性能相當于一台“万元级别”的电脑

纳尼?一台3000元档的手机插上鼠标键盘显示器就能变成“万元级别”的电脑?开什么玩笑那以后还用买電脑吗?

为了弄懂背后的技术小秘密会后我撩到了一位相关的技术专家。由于是私人关系暂且就叫他“华哥”吧。本期来跟大家揭晓“手机变电脑老汉推火车”的秘密……

华哥透露:“其实发布会那天演示的 Windows 系统和3D游戏根本就没跑在手机里,而是运行在华为云服务器仩观众在屏幕上看到的画面是从云端远程实时传输过来的视频图像。“

云端的某台服务器上跑着一个Windows系统并把画面实时传输给手机。掱机再把鼠标键盘的操作信号实时传回给服务器

这就是组成了所谓的”云电脑“

在“云电脑“的架构里手机只负责接收和显示画面,发出操作指令其他运算处理都交由云端。

看过钢铁侠的同学大概能秒懂机甲里的人只负责发出命令,真正飞天入地贴身肉搏的其实昰机甲

钢铁侠的战斗力很大程度上由机甲的性能决定。同样“云电脑“的性能也和手机关系不大,主要由云服务器的性能决定

也就昰说,只要网络顺畅别说是”万元级别“的电脑, “云电脑”想要多高配置都行理论上性能可以碾压任何一台家用电脑。

可能有朋友偠说了:“幺哥你净吹牛什么云电脑,这不就是个远程桌面么一台设备远程控制另一台,这功能QQ上老早就有啦我以前还用它帮妹子修过电脑呐!”

是的,“云电脑”看着有点像我们熟悉的“QQ远程协助”

华哥告诉我,严格说起来这类技术的鼻祖都是一个叫 ”RDP 远程桌媔协议“。

这个协议最早由思杰公司(Citrix)研发上个世纪90年代被微软公司收购,集成在 Windows NT 4.0 Server 系统中这才有了 Windows 系统上最早的远程桌面访问功能。

不過即便同样是一台电脑控制另一台电脑,“云电脑”和最开始的“远程桌面”已经产生了天差地别

就好比同样从北京到上海,如果对時间没有任何要求可以走路去,可以骑自行车去;如果你想3天之内到可以开车,可以坐绿皮火车;如果你想半天之内到最好坐飞机戓高铁。

在上面这个例子里时间要求发生了量变,交通工具和背后的技术就得发生质变同样,“远程桌面”和”云电脑“实现效果发苼量变背后的技术也得发生质变。

华哥告诉我”远程桌面访问“最早是用来远程管理服务器的。在那个上网都依靠电话线拨号的年代限于网络条件,远程桌面控制另一台电脑一般只用来做做简单的键鼠操作

想用控制另一台电脑来办公、看电影,打游戏倒也不是不荇,只是很可能屏幕会卡顿到出现各种灵异现象

“比如,腿不动就拿赛跑冠军”

后来网络条件稍稍好了些远程桌面访问技术也越来越唍善,这才又爆发一轮新的技术应用

一些大型企业开始采用一种叫“云桌面”的技术,不再给每个员工配一台昂贵的电脑而是配一台荿本很低的“瘦客户端”。

员工办公时用它访问服务器以“云桌面”的方式来办公,所有运算都依靠云端的服务器”瘦客户端“只负責传输图像和指令。

”云桌面“给企业带来的好处很直观:省钱、安全、易管理幺哥在这里用“喝汤”的例子给大家打个比方:

给每个員工配一台电脑,相当于给每个人配一口锅和灶台员工自己熬汤喝。小锅汤虽然味美但锅里喝不完的只能倒掉,造成浪费同时,灶囼太多也很难统一管理不利于食品安全。

对应过来就是:每个员工电脑里剩余的存储空间和运算性能都浪费了而且设备分散,既不利於IT部门统一管理也不利于信息安全。

“云桌面”就相当于煮一大锅汤给每个人发了个碗(瘦客户端),大家都从锅里按需盛汤避免浪费,也便于统一管理和把控安全

为了不让员工碗里的汤相互窜味儿,”大锅汤“后来又和”虚拟化技术“相结合衍生出了一种”瓦罐煨汤“模式,一台服务器可以借助”虚拟化技术“变成几十台甚至几百台服务器员工各自访问一台虚拟机,互不影响

就这样,”云桌面“技术在企业级市场很吃香市场需求的土壤不断滋养出新的技术,如此往复至今”云桌面“、”虚拟桌面“这类技术在企业级市場已经全面开花,相当普遍

但是,”云桌面“在个人消费者市场一直没啥反响

一个主要原因是受到网络条件的掣肘。用人话来说就是普通吃瓜群众家里的网不太行不太适用。

主流的“云桌面” VDI 架构对网络条件的依赖很强因为要实时传输整个电脑画面,延迟太高、带寬不够、网络波动都可能对“云桌面”的使用体验产生毁灭性破坏。

华哥透露”华为云电脑” 项目从2017年11月立项,到18年4月份正式亮相Φ间只花了几个月,因为它的底层技术和华为的另外两款企业级云桌面产品基本相同这两款企业级产品算起来已经有近十年的技术经验積累。

但如果直接把企业级云桌面产品拿到外网环境下当’云电脑‘用绝对会水土不服。因为家用网络环境跟企业的网络环境完全没法比无论是延迟还是稳定性都差得多。“

适应不了公网的网络“云桌面”就没法走出企业,变成真正的“云电脑”

为了让“云电脑”适应互联网环境,华为的研发人员得做成两件事:

1.尽可能压缩视频流量避免占用太多家用网络带宽,或者消耗太多手机流量

当然还嘚有个大前提:确保画面足够清晰流畅

为了达成目的他们需要打磨整套流程的每个细节,用“毫秒必争”来形容并不夸张华哥举了幾个例子:

1)”硬解码0延迟“技术

在图像传输过程中,他们用了一种压缩率很高的 H.264 算法对图像进行压缩终端设备需要先解码才能显示画媔。

为了降低延迟他们放弃了速度较慢的“软件解码”方案,联系终端部门的同事拿到调用华为和荣耀手机 GPU芯片的权限借助本地硬件嘚能力实现”硬件解码“。

这么做就为了把原本需要10~20毫秒的解码时间缩短至1~2毫秒,节省那十几毫秒的时延

为了降低带宽,他们需要自動识别每一帧图像中未变化的部分只传输有变化的部分。

“如果画面里只有一个鼠标在动来动去其他像素都没变,就完全没必要传输整个画面只需要传输鼠标移动的那部分,这样可以极大节省带宽” 

华哥称之为“增量数据传输”

“云电脑”会自动识别画面里的不哃元素和场景比如文字、Windows 图框、线条、视频、图片等等,对不同图像采用不同的压缩算法、不同的压缩率确保使用顺畅。

为了应对一蔀分“云电脑”游戏玩家他们甚至推出了一个”游戏套餐“,直接把一批云端的普通服务器换成了GPU服务器以强化“云电脑”的图形计算能力。这么做的直接代价就是华为云那边的服务器成本成倍增加……

类似的技术细节还有很多,这里就不一一赘述

“经过这一系列努力,我们终于算是达成了目标 —— 在家用20兆带宽的网络环境下‘云电脑’平均延迟控制在30毫秒左右,即便是玩最刺激的枪战游戏也不昰问题”

“云电脑”的技术核心在于“端-网-云”三种能力的整合。放眼望去少有同时在终端设备、网络技术和云计算三个方面同时雄踞行业前列的公司,“云电脑”这件事仿佛注定要华为来做

唯一令他们头疼的是近端侧的网络问题,也就是用户所在的小区到路由器这段网络以及家里的 WiFi 网络环境。

”其他问题都能够解决这部分网络问题我们帮不上忙。“

华哥说”所以,我很期待明年的5G那也是华為的主战场。“

5G网络普及以后”云电脑“会发生什么变化?

首先所有网络问题一下子被解决,”云电脑“的延迟将由如今的几十毫秒降低至几毫秒远远低于人类的反应速度,用户将丝毫察觉不出“云电脑”和物理机的差别

同时,”云电脑“对网络的依赖也将不再是問题

很多人曾预言过,在5G时代”上网”的概念甚至都可能消失因为”在线“将变成一种常态,人们会像忽略空气一样忘记”上网“这件事

如果用现实世界的生物演变来理解互联网世界,网络是整个互联网的环境基础每一次网络设施升级对于互联网产业的影响都像环境气候对生物演化的影响那样,悄然无声又猛烈深远。

比方说视频传输、直播技术其实早就有了,这几年大家才纷纷拿起手机刷起了各种视频直播整个视频内容消费产业一下子爆发,其实也是得益于网络条件的提升

5G之后,“云电脑”会彻底爆发吗手机会淘汰掉现茬的电脑吗?一切未可知但我倾向于相信这一切会发生,或者某种程度上会就像以前手机替代固定电话、MP3,现在手机替代钱包、钥匙、录音笔、公交卡那样

旧的互联网生物淘汰,新的互联网生物诞生

据说,第一条爬上陆地的鱼其实在上岸之前早已基因突变长出了鈈太完整的肺和腿,这使得它在潮水褪去后能迅速适应如果科技世界的真像生物演化那样,”云电脑“可能就是那条鱼

而你我,是这個演化过程的亲历者

人们总是这样介绍图灵奖:这是計算机科学界的诺贝尔奖不难看出,诺奖已经彻底符号化了这个名词本身,就代表着知识界的顶峰相比之下,其内容 已是次要用咜来形容图灵奖,就暗藏了一个可怕的隐喻图灵奖也将被符号化,人们只关注它的象征意义而不是它背后的那些天才成果。所以我不囍欢这个比 喻却更想这样解释图灵奖:它代表着计算机科学历史上,那些最耀眼的杰作 

不知道有多少有心人留心过图灵奖的奖杯,那昰一个银碗外形朴实得很,但色泽却光彩夺目 

这种亮得晃眼的碗,中国古代也有一种就是定窑的白瓷碗。现在几乎公认宋瓷是中國瓷器艺术的巅峰之作,定窑作为宋朝的五大名窑之一在艺术上的 造谐是极为杰出的。可是当朝皇帝却不喜欢定窑的碗,“本朝以定州白瓷有芒不堪用”就因为它太亮,没法用 

图灵碗也是“有芒不堪用”,它们太亮太耀眼几乎没有哪项图灵奖的成果,能够直接应鼡于日常生活但是,正如这并不妨碍定州白瓷成为艺术极品图 灵奖的作品,也同样值得我们拿着放大镜细细品味感叹它们的美。计算机科学不是关于计算机的它也不只是一门科学,的确它是一门艺术。 

掐算下来从1966年到2009年,图灵奖已经走过了近半个世纪这也是計算机科学走过的半个世纪,获奖成果串连起来就是一部计算机科学史。 这条旅途跌宕起伏光影变幻,人类历史上从没有过哪个学科在破壳而出后的短短半个世纪里推进如此之远(如果不把量子物理看成独立学科的话)。 

接下来我们大家就结伴同行,去近看这55个图靈碗它们中的每一个,都是铭文清晰包浆温润,我索性客串一名掮做为大家逐一解说这些令人享受 的巧夺天工之作。那些捧得图灵碗的大师每一位都是成就等身,篇幅所限我们不能历数,只介绍他们直接赢得图灵奖表彰的工作在这些前贤面前,我是走狗一 只初出茅庐,还不知两分天下所以文中错误难免,还请读者海涵 

好了,来让我们开始吧,先屏住呼吸将时间拨回1946年……好好好,我知道计算机科学人士看到这个年份就不耐烦了那我们就再将“年针”拨一 圈,来到1958年对1946年之后几年的计算机发展史不熟悉的读者也别著急,需要提到的知识我们都不会漏掉的。好了睁开眼睛,旅途从这里开始了

我们的旅程从世界花园瑞士开始,1958年5月27日苏黎世过唍了六鸣节,到处春暖花开就在4年前的这个季节,图灵离开了人间 

这一天,一场8个人的讨论会将在苏黎世召开没有花,没有酒连個专门的会议名称都没有。会议桌的一边是美国计算机学会(ACM)的4名代表, 另一边是德国应用数学和力学学会(GAMM)的4名代表索性把地點和双方名称连起来,就叫苏黎世ACM-GAMM会议后来的历史将会证明,这场毫不隆 重、甚至不太圆满的会议改变了此后的计算机科学,特别是對于1922年成立的GAMM来说这场会议几乎成了它唯一的光辉事迹。8名代表陆续抵达了苏黎 世他们将要在此讨论,规划一种新型的编程语言叫莋国际代数语言(IAL)。 

在电子计算机刚刚出现时想让它干活十分不容易,关键的问题就在于计算机听不懂人类语言。既然没法让计算機说人话人们只好使用机器语言跟它们 沟通。 

左手是电线右手是开关,这就是最早的机器语言(图为1946年的ENIAC计算机)程序员先在纸上紦程序设计好,然后进行持续数周的扳开关和 接电线的工作读者如果做过数字电路的课程实验,就能体会到那是怎样的麻烦万一哪根兒线断了,排查起来那就是恶梦的样板后来,程序员们有了新方法把 程序设计成打孔卡片(有孔没孔就是二进制),于是编程的主要笁作变成了打孔大家要是有兴趣,把自己身份证号码转成二进制打在纸条上,看看是什么滋味 打一个数尚属不易,打一个程序就不難想象了再后来,冯诺伊曼提出的存储程序实现了人们把程序像数据一样保存在机器里,随时调用编程从这时起才正式变 成脑力劳動。但别高兴得太早虽然不用接电线和打孔,但编程还是要用就像《麦兜的故事》里面麦太太说的,鸡包纸包纸包鸡包鸡包纸包 再包雞鸡鸡这种程序,编的时候只有作者和上帝能看懂过一阵子之后,恐怕只有上帝能看懂了随后,人们把一些常用的指令用一些“助記符”来代替有了 ADD、MOV这样的写法,形成了汇编语言但本质上跟鸡包纸包鸡还是同一码事。 

1953年IBM公司的巴科斯(John Backus)再也忍不下去了,这哪里是编程这不跟受刑一样么。他揭竿而起上书董事长要为IBM704系列计算机开发一种新型编程语言。号称计算机之 父的冯诺伊曼当时是IBM的顧问他坚决认为这个提议十分不靠谱,但也许是应了有心人天不负董事长Hurd同意了这个计划。 

巴科斯1924年出生在美国费城他的父亲是一镓火药公司的员工。巴科斯小时候不爱读书勉勉强强混了个中学毕业,进入弗吉尼亚大学学习化学成 绩依然很不好。二战爆发后巴科斯参加了美国陆军,在Haverford学院(这可不是哈佛)接受医疗训练准备治病救人,结果别人没救成倒是发现自己 长了一个脑瘤,于是接受叻手术后来,巴科斯打算当一名无线电技术员在训练过程中,突然对数学产生了极大的兴趣于是进入哥伦比亚大学学习数学,于 1949年獲得硕士学位进入了IBM公司工作。 

巴科斯开发新语言的提议得到了批准后立即组建了一个开发小组,并担任组长主持开发工作。1957年苐一套Fortran语言诞生了,尽管呱 呱坠地时哭声不响第一次演示就出了编译错误,但还是坚强地活了下来本文不是编程教材,对于Fortran的具体细節就不过多叙述了,但是我们要记住 这个名字因为它是非常耀眼的。Fortran是世界上第一个被正式应用的高级语言所谓高级语言,是说它嘚语法更接近人类语言而不是鸡包纸包鸡。从此 以后程序员不必再背那些枯燥的机器码,只需用“IF (x > 0) THEN x = 0”这样的简单易懂的方式编程可想而之它的推出让人多么兴奋。在电影《硅谷海盗》中微软CEO鲍尔默讽刺说,要想激起比尔盖茨的性欲必须这样叫 床:Oh!Fortran~Oh~For~~Tran~。直到如今經过多年改进的Fortran仍然在计算机界占有一席之地,不知道知天命之年的 Fortran是否会记恨当年冯诺伊曼差点把它掐死在摇篮里,戏剧的是就在苐一套Fortran诞生之前两个月,冯诺伊曼因癌症去世了关于 Fortran就先说到这里,尽管它光辉夺目但对于本文来说,它只是配角在上世纪 50年代末,编程语言的矛盾已经白热化并非Fortran一己能够力挽狂澜。况且Fortran本身还有一个严重缺陷它为IBM704而生,依赖特定 的机器型号很难移植到别的機器上。革命尚未成功同志仍需努力,在这个时候ACM和GAMM都对编程语言有一些想法,于是他们决定坐在一起讨论讨论 规划一种更好的语訁。苏黎世讨论会就是在这样的背景下召开的 

Fortran语言之父巴科斯这回又没闲着,作为ACM的代表之一他也来到了苏黎世,想再次参与锻造新刀这次制定语言,主要有两个原则第一 点毫无疑问,要使它更容易被人类理解这是一直以来的革命方针;第二点,是要弥补Fortran的一些鈈足主要是要具有通用性,兼容不同型号的机器 

讨论会开始了。由于只有8人不必拘泥形式,再加上诸位代表都是理工背景说起话來锱铢必较,这场讨论注定激烈无比。 

为了描述即将诞生的国际代数语言巴科斯用他带着重重鼻音的费城口音,首先提出了一套用来描述语言的语言称为巴科斯范式。我们知道学英语的时 候,有一些“主+系+表”之类的句套子对学习英语有很大帮助。对于计算机语訁也需要这样的句套子来描述它,巴科斯范式就是为了描述IAL而提出的当 然这个范式并非这么简单,它也能描述其它编程语言甚至一蔀分自然语言,是一套非常了不起的设计 

有了巴科斯范式,8名代表你一言我一语将自己在设计语言方面的经验倾囊而出,开始制定国際代数语言的标准正所谓众口难调,每个人都对自己心中 的新语言有着自己的观点大家很快就陷入了争执,谁也不让谁抢着用飞快嘚语速反驳对方,屋里的空气陷入了紧张一个接一个的“IAL”、“IAL”、 “IAL”飘在空中,不停地游荡这时,ACM小组的主席艾伦佩利(Alan Perlis)突然瞪着圆圆的眼睛大声说:停!你们难道没发现“IAL”这个词很绕嘴吗 

佩利比巴科斯大两岁,1922年出生于美国匹兹堡与巴科斯的家乡费城同茬宾夕法尼亚州,俩人也算是半个老乡佩利虽然出生在愚人节,但他一点儿 也不笨比起巴科斯,佩利可算是年轻有为无巧不成书,佩利初入大学时也是化学专业他在21岁时,获得了卡内基理工学院的化学学士学位这个学院就是现 在美国计算机专业排名第一的著名学府,卡内基梅隆大学与巴科斯巧合的是,刚刚走出大学校园的佩利看到满街都是征兵海报,看到山姆大叔紧盯着他说“I want you”看到珍珠港事件后神经绷紧的美国,也选择了参军更加惊人的巧合是,佩利也是在服役期间突然对数学产生了强烈兴趣并转而攻读之。1950年 他茬麻省理工学院获得了博士学位。两年后他来到普渡大学出任普渡大学计算中心首任主任,在普渡安装了IBM CPC计算机并为其设计了一个叫莋IT(Internal Translator)的编程语言。过了四年这个毕业才6年的34岁年轻人,又一跃当上了卡内基理工学院第一任计算机科学系主任为卡耐基配置了IBM 650,顺便把IT語言移植到650上这些工作使佩利在程序语言的设计方面,有了许多经验和体会所以在ACM成立这个程序设计语言委员会时,佩里坐上 了主席嘚位置诸位读者,假如这个惊人的成长步伐让您吃惊那您可要好好地适应一下了,在我们这个系列的文章中比比皆是这样的天才人粅,会让您脊背发 凉 

言归正传,我们刚才说到佩利在讨论时,认为“IAL”这个词很绕嘴假如他懂一点中文,没准还会发现这个词一旦读快起来,很像汉语中的“哎 哟”佩利扶了一下眼镜,继续说道:我想不明白为什么要起这么个名字不但很绕嘴,而且狂妄自大鈈就是个语言么,何必扯虎皮做大旗叫什么“国际语 言”?佩利此言并无它意然而他一心只顾着说,没有注意到身边的巴科斯此时已昰脸红耳热巴科斯所在的公司,早在1924年还在卖人口统计卡片的时候就 “狂妄自大”地改名叫作国际商用机器公司。 

尽管佩利认为IAL这个洺字既绕嘴又狂妄但其他代表却觉得这个名字好听又大气,再说这又不是什么要紧的事何必在这上面浪费口舌。这件事情仿佛 成了插曲直到五天后会议结束时,新语言的名字仍然是IAL并写进了会议总结。也许这些代表怎么也没预料到佩利在一年之后,还是执意改掉叻这个名字 他们更没预料到在多年之后,新的名称将以烫金大字铭刻在计算机科学的历史上而IAL却鲜为人知。 

取代“IAL”的新名字叫作ALGOL。这是ALGOrithmic Language的缩写即算法语言。后来Bauer强调说ALGOL这个名字,是Bottenbruch最先提出的这两位都是苏黎世讨论会的德国代 表。 

除了名字没有达成共识之外最终大家对新语言的句法也没能统一意见,苏黎世ACM-GAMM会议带着许多未尽的争议在1958年5月1日草草落 下了帷幕。然而对于这些科学家来说,倳实胜于一切雄辩绝不能陷入驴子的困境。会议结束后他们立即投入到实现新语言的工作中——既然分歧不能解决,那 就干脆两种都莋出来再说他们成立了一个ZMMD小组,旨在开发一种ALGOL语言的编译器ZMMD这个名称的由来,是其几位组员以及他们使用的一台 Z22计算机分别所在的㈣个城市的开头字母 

请计算机专业的读者们在此稍息片刻,容我给其它专业的读者稍微解释一下什么是编译器前面我们说过,因为计算机没法理解人类语言我们需要用机器 指令来编写程序,我们现在有了高级编程语言不必使用麻烦的机器指令,这并不是因为计算机學会了人类语言而是因为我们请了一位翻译。简单地说它能够把 高级语言翻译成机器指令,既使我们不用再做那些机械劳动也能满足机器们的冰冷胃口,这个翻译就是编译器它本身也是一套程序。好了大家回回神,继续我 们的故事 

就在不久之后的1958年年底,欧洲嘚冬天到来了世界各地的游客纷纷来到壮丽的阿尔卑斯山,体验激动人心的滑雪运动就在这个冬天,在ZMMD 小组的努力下第一套ALGOL语言及其编译器成功地开发出来了,按照年份命名为ALGOL58。好玩的是ALGOL58有三种不同版本的语法,在实 际编程和书面表达时写法是不同的有点像汉語分白话文和文言文,其差异之大连小数点的写法都不一样。由于巴科斯的参与ALGOL58既继承了 Fortran的许多优点,又弥补了Fortran的许多不足一度使Fortran嘚地位面临着严竣的挑战。这里我们不详细介绍ALGOL58的样子 它的生命实在太短暂,很快就退出了历史舞台因为,就在一年多以后ALGOL58的创造鍺,包括巴科斯和佩利等对这种新语言有了许多新的体会和感受。 1960年1 月他们召集了其他几位参与ALGOL工作的计算机科学家,来到了浪漫之嘟巴黎再次召开了一场关于ALGOL语言的研讨会。

一. 从苏黎世到巴黎 (下)

1960年新年刚过浪漫之都巴黎正是白雪皑皑的冬天。游客们缓缓登上埃菲爾铁塔鸟瞰美丽的花都,弥满着 四处纷飞的雪花陷于一片朦胧。

这时候ALGOL58已经诞生一年多了(58年末至60年初),佩利、巴科斯等主要参與者们都在实践 当中对新语言有了新的体会。革命的脚步不会停下很快,他们集合了紧密团结在ALGOL58周围的13名计算机科学家来到巴黎,洅次对语言设计进行讨 论尽管苏黎世会议的大部分老朋友都又来到了巴黎,然而这次研究会的主角儿对我们而言却是一个新面孔,他昰丹麦计算机科学家诺尔(Peter

诺尔1928年出生在丹麦29岁获得了天文学博士学位,后来在哥本哈根天文台工作时为了计算天文数字,他设计了丼麦第一 台电子计算机DASK诺尔是一位兼具才华与情趣的科学家,读着不妨检索一下他发表的学术论文涵盖了天文学,计算机科学古典喑乐,心理学等诸多领域 是学术界当之无愧的一名男子全能选手。就在巴黎会议召开不久前诺尔进入了丹麦计算研究院工作,并为玻爾研究所授课同时还被选为了欧洲语言设计小组成 员。尽管如此这时诺尔的主要兴趣仍是天文学,计算机对它来说不过是研究天文嘚工具。

主 角儿到了那就让会议开始吧。还记得苏黎世会议上提出的巴科斯范式吧巴黎会议的首要任务,就是继续完善这个范式诺爾在第一局就立了大功。为了更清晰地 描述下一代ALGOL语言诺尔对巴科斯范式进行了大幅度的简化,缩减了它的符号集如今使用的巴科斯范式,均是经过诺尔改进后的后来高德纳 (Donald Knuth)指出,应该将巴科斯范式改称为巴科斯-诺尔范式以肯定诺尔为其做出的贡献,然而谦虚嘚诺尔却并不乐意这样在《人类行为——计算》一书中 (这本书记载了诺尔为计算机科学所做的大量贡献),诺尔曾说我没有打算要紦我的名字加进去,其实我觉得它叫“巴科斯范式”挺好的。

范 式并非难题随着诺尔的工作,很快就通过了13位代表开始讨论新一代ALGOL夲身的设计。这次会议大家吸取了上次苏黎世的教训,要求坚决不能再留下 争议对每一个细节都不能含糊。于是每名代表都铆足了勁儿,进行了旷日持久的讨论整个会议竟然持续了半个多月才闭幕。后来佩利回忆这次巴黎会议他说 最大的感觉就是累,实在太累感觉简直就是没完没了。而且像上次一样这些人论战起来丝毫不留情面,很多人的想法刚说出来就被彻底否定一点翻身机会都不 给。佩利说这13名代表的精神头儿实在令人感叹,在那半个多月里他们每天一见面,个个都像打了鸡血

13个人马不停蹄地论战半个月, 平均丅来每个人要叭啦叭啦说上一整天还多。然而他们的努力却没有白费,这次会议终于终一了意见完整地规划出了新一代ALGOL语言,按照姩份命名 为ALGOL60。在会议的最后由诺尔对此进行总结,整理会议讨论出的ALGOL60的所有特性形成了后来名扬江湖的《算法语言ALGOL60报 告》。这个总結工作充分体现了诺尔的才华和巴科斯范式的力量在这之前的编程语言,是由编译器代码来描述的既冗长又混乱,学习起来很有难度而且非常难 以在人类之间进行交流。这就好比你买了一部手机发现附带的说明书很有特色,是这个手机的全部电路图请你根据这些圖来学习使用手机。当时学习编程就是 这么尴尬,但诺尔改变了这些他首开先例,使用巴科斯范式对语言进行定义用人类语言精心措词,短短17页报告简洁优雅至极。这份报告成为了计算机科学 史上的名作它完整地描述了ALGOL60语言的所有特性,却不依赖任何机器细节便于在人类之间交流——编程语言第一次拥有了“使用说明”而不是“电路 全图”。诺尔的这项工作改变了此后描述编程语言的方式,矗到现在仍在使用

巴黎会议,诺尔一鸣惊人这个来自童话王国,热爱古典音乐的 天文学家站在这里告诉世界,计算机科学也可以很媄的

各位读者,我们已经从苏黎世的春天一路走到了巴黎的冬天,ALGOL语言的正式 版本终于被确定下来了接下来要做的,就是把它付诸實践冬去春来,万物复苏1960年夏天,荷兰计算机科学家狄克斯特拉(Edsger Dijkstra)开发出了ALGOL60的编译器ALGOL正式登上了计算机科学的舞台。随后佩利將它引入了大学的课堂,在那个计算机科学的初始混 沌期此举一下子让无数的人们看到计算机科学到底应该是什么样子(“哇塞,原来鈈是电路全图耶~”)狄克斯特拉说,这是一个伟大的标志这标志着计算机 科学真正地诞生了,ALGOL60是个绝对的奇迹在接下来的30年里,ALGOL┅直是教课书和学术界用来描述算法的不二之选

说到这 里,按照学习编程的惯例认识一种语言,要先看它的“Hello,world”样例下面就是ALGOL60的例孓,我们共同一睹这个“绝对的奇迹”芳容 如何没有学习过编程的读者不必担心,这段程序的功能就是在屏幕上显示一行“Hello,world!”,要是您实在看得一头雾水那就直接跳过这些蝌 蚪文,我保证不会影响您享受接下来的旅途当然,我相信以ALGOL语言的优美一头雾水的可能性並不大的。


值得注意的是这个写法并不唯一,因为ALGOL60仍然保持了ALGOL58的那个奇怪特性:分成文言文 和白话文事实上,ALGOL60主要是在ALGOL58的基础上改进嘚来的所以它在许多地方都继承了ALGOL58的特性。如今很难再找到编译器来 让这段程序跑起来了,因为半个世纪荏苒而逝时代的浪潮不饶囚,想让ALGOL复活已经不太可能了。然而ALGOL的灵魂却从未离开,它简洁而优雅的 定义(这主要归功于诺尔)影响了后面一系列编程语言的設计。ALGOL提出的许多概念都被后来的编程语言沿用例如“代码块结构”这些我们习以为常的编 程方式,都是由ALGOL率先使用的包括C和C++在内的夶部分五星级上将语言,都因为师出 ALGOL而被称为“类ALGOL语言”可以说,ALGOL直接影响了整个计算机科学界和工业界的发展影响之程度深入骨髓,而且至今经久不衰

好 了,我们旅途的第一站已经游览完了不知这一路上大家感觉如何,是否感受到了瑞士的美丽和法国的浪漫是否感受到了巴科斯揭竿而起改造编程语言的决心,是 否感受到了佩利在语言设计和教育方面的高瞻远瞩是否感受到了诺尔才华横溢的优雅气质,是否感受到了舌战群儒半个多月的激烈气氛是否感受到了两次会议每 名代表的聪明才智,是否感受到了ALGOL是一个“绝对的奇迹”现在,女士们先生们让我们屏住呼吸,颁奖的时刻到了

那位认为 “IAL”绕嘴又狂妄的艾伦佩利,因为在卡内基和普渡创建了计算机专業并在ALGOL早期发展中带队做了大量工作,于1962年当选为美国计算机学会 (ACM)主席四年后,也许是近水楼台先得月佩利成为历史上首位ACM图靈奖得主,捧走了历史上的第一个图灵碗ACM对他的颁奖词是:

    授予艾伦佩利图灵奖,以表彰其在高级编程技术及其编译器构造领域的影响  

五年后,佩利再次跳槽 来到了耶鲁大学,连任多届计算机科学系主任期间还一度执教于加州理工大学。1982年退休后的佩利返老还童,写下了一系统关于编程的幽默发表于 ACM的SIGPLAN期刊上。其中他写道如果你给别人讲解程序时,看到对方在点头那就拍他一下吧,他一定昰睡着了 1990年2月7日,佩利因心脏病在纽哈芬去世享年68岁。

还记得这场“绝对的奇迹”的导火索、不爱学习、后来在IBM揭竿而起的巴科 斯吗在佩利获得图灵奖11年后,1977年10月17日巴科斯也凭着ALGOL的设计工作,在西雅图ACM年会上获得了图灵奖捧走了第14个图灵 碗。ACM对他的颁奖词是:

   授於约翰巴科斯图灵奖以表彰其在高级编程系统,程序设计语言规范的形式化定义方面所做的贡献 

巴科斯随后发表了获奖 演讲,不知是鈈是因为他最初提议设计新语言时曾经遭到冯诺伊曼的反对,从而对冯诺伊曼记恨在心(哈哈开个玩笑)他演讲的题目是《程序设计能从冯诺伊曼 形式中解脱出来吗?》2007年3月17日,巴科斯在美国俄勒冈州的家中去世享年82岁。

已经两个了可是还没有结束,我们一定没囿 忘记后来出场的那位才华横溢的科学家诺尔他的图灵奖比前面两位来得似乎晚了一些。2005年已经77 岁高龄的诺尔,在ALGOL60报告发布的45年后終于等到了迟来的图灵奖,捧走了第50个ACM图灵碗ACM给诺尔的颁奖词是:

虽然他的图灵碗 迟到了40年,但是以诺尔的淡泊和平和我们不难想见,他不会太介意的

计算机科学早期的程序语言设计,是一项很艰难的工作在这十多位 科学家的努力下,创造了ALGOL这个绝对的奇迹其中,上面这三位直接因为 ALGOL捧得了图灵碗事实上参加巴黎会议的13名科学家中,还包括麦卡锡(John McCarthy)他后来因为在人工智能领域的杰出贡献获嘚了图灵奖,我们将在后面单独欣赏他的工作为ALGOL60开发编译器的狄克斯特拉,也紧跟 着麦卡锡作为一位编程艺术大师而获得了次年的图靈奖。ALGOL它就像一个阿拉丁神灯,亲手触摸过它的寥寥十几位科学家中先后5位捧得了图灵碗,戴 上了计算机科学界的最高桂冠从这个意义上来说,它真的是一个“绝对的奇迹”

密尔沃基市,是美国威斯康辛州最大的城市1938年1月10日,圣诞刚过不久密尔沃基市民像往常┅样平静地生活着。咖啡店里有人在议论着罗斯福总统 的救市新政策,有人在议论着到底该不该限制公民持枪而更多的人呢,则一边品尝着密尔沃基闻名全国的啤酒一边听着广播里面的实时战况:侵华日军登陆青岛 了。谁也没有想到这个平静的日子将载入这座城市嘚史册。这天密尔沃基路德教会高中的一名印刷管理员,高兴地迎来了一个健康的儿子他为儿子取了一个响 亮的名字,这个名字在不玖的将来成为了计算机编程艺术的旗帜:Donald Ervin Knuth。

为了方便讲述请各位读者允许我 先剧透一件39年后的事儿。在1977年Knuth造访中国前夕姚期智的夫囚为他取了一个中文名字:高德纳。在下面的故事里我们就使用这个名字来称呼 他。

高 德纳天资聪颖他的超凡智力在8岁时就显示出来叻。当时一家糖果商在孩子们当中举办了一项有趣的比赛,要求用“Ziegler’s Giant Bar”里面的字母写出尽可能多的单词。裁判事先准备了一份2500个单詞的列表可他却远远低估了小选手的能力,高德纳令人惊讶写出了4500多个单 词毫无疑问地获得了冠军。他为学校赢得了一台电视机还為每个同学赢得了一只棒棒糖,他的赛后感言是我还能写出更多。

高德纳的高中就 读于他父亲所在的路德教会高中在这期间,他发表叻此生第一篇学术文章尽管如此,但这个充满了才华和个性的年轻小伙并没有把心思放在科学上,他的主业 是音乐和作曲他的老师,甚至包括他自己十分怀疑他将来进入大学后,是否能够顺利学习数学这种想法给高德纳造成了不小的自卑,尽管他的平均分是学校曆 史上最高的不过有句话说,真正的天才是1%的灵感加上99%的汗水这话用在高德纳身上毫不夸张,18岁的他在进入大学之后,丝毫没有向數学屈服而 是花费无数的课余时间,大量练习数学难题这种努力的劲头再加上他的天份,使他很快就在数学方面超过了其他同学其實我们与其关注一些科学家们不可模仿的 机会和天赋,莫不如更关注他们如何面对困难和挫折高德纳告诉我们,没有什么过不去的坎儿方法就是抓紧时间干活。

高德纳就读的大学是凯 斯理工学院在这里他接触了IBM650计算机,这导致高德纳的音乐家梦想一去不复返科学天賦终于重新占领了他的心扉。 1956年在他第一次使用IBM650之后,他就躇踌满志地相信说明书上介绍的程序,一定比不上他自己编写的于是高德纳开始学习编程,他的第一个程 序是因数分解不久之后,高德纳就对编程有了许多体会当时高德纳还兼职管理学校的篮球队,于是怹编写了一个程序能够自动评估每名球员的价值,令球队的 教练非常欣赏这件事还吸引了CBS电视台的报道,后来高德纳、球队教练和IBM650的┅张合影还被印到了IBM650的宣传册上。1960年高德 纳以公认出色的成就,打破了学校的惯例同时获得了学士和硕士两个学位,大家来做个减法吧算算高德纳此时年岁几何。

随后高德纳从五大 湖区,来到了美国西南岸进入伯克利攻读数学博士学位。在此期间他的编程生涯也正式开始了,他对外提供软件服务为各种不同机器设计各种稀奇古怪的编译 器,曾经一个程序卖到5000美元最值得一提的,就是他对ALGOL60編译器提出的测试方法不知道大家是否还记得 ALGOL,这盏批量生产图灵奖的阿拉丁神灯当时我们介绍过,ALGOL60的设计目标要求支持递归而在設计编译器时,对递归的处理是很复杂的所以 经常会因为编译器不成熟而出故障。高德纳编写了一段非常简单的测试程序江湖人称“Man or boy test”,俗名“是男人就得-67”高德纳说,只要用ALGOL60编译器来编译我的这段程序如果运行结果等于-67,就说明这个编译器是纯爷们 儿否则就只能算小男孩。

1963年25岁的高德纳顺利拿到了博士学位,并留在伯克利任教在毕业前一年,虽然还是研究生但高德纳已 经因为设计编译器洏响誉计算机行业。于是著名的Addison-Wesley出版社与他约稿请他写一本关于编译器和程序设计方面的书。这本来是很平常的 一件事但您看看高德納是何许人也,不久之后他简直把这件事做成了一件计算机科学史上的奇观。1962年约的稿高德纳一直写到1966年还没交,在此 期间他又是毕業又是教书,终于人家出版社急了编辑找到高德纳,说这都四年了你写了多少啊高德纳说,才写3000页手稿编辑大囧,忙问都3000页 了你怎么还不交高德纳答曰,急啥我还没写到正题呢。编辑彻底雷住了说那你出个多卷本吧……

《计算机程序设计艺术》,就这么诞生叻

把 一件平常的事做到人间极致,这就是高德纳他不是故弄玄虚,他的心里攒着一股劲儿要写出一部与牛顿的《自然哲学的数学原悝》相媲美的传世巨著。他一开始 计划了六卷后来觉得这个数字不怎么好,又改成了七卷1968年,《计算机程序设计艺术》(The Art Of Computer Programming江湖人称TAOCP)的第一卷正式出版了。这一卷的标题叫《基本算法》但难度却并不低。比尔盖茨曾经花了几个月的时间读完这一 卷并且做了大量的練习,然后他说如果你想成为一个优秀的程序员,那就去读这个《基本算法》吧确保自己能够解决里面的每一个问题。然而高德纳夲人的 说法却比盖茨犀利多了:要是看不懂,就别当程序员

就在这同一年,高德纳跳槽到斯坦福大学并当上了教授,一边带博士一邊继续写书。一 年后TAOCP第二卷《半数值算法》正式出版,又过了三年也就是1973年,第三卷《排序与查找》也相继付梓这三卷书立即被计算机界惊为神作,在那 几年之内就卖出去了100多万套至今仍然是编程书籍中的最高经典。有一些对我们来说巧妙得不能再巧妙的算法在這三卷书中顺手掂来,比比皆是这个我们 等会再说,现在有件要紧的事儿按照高德纳的计划,这套书一共是七卷但是现在刚刚写完彡卷,就已是震古烁今震到什么程度呢,连图灵奖颁奖委员都坐不住 了他们做了一件前所未有的事。按照惯例图灵奖的获奖者都是荿就等身,要经过时代的检验然而高德纳却是例外,在他的七卷本刚刚写完三卷时ACM便决 定立即为其颁发图灵奖:

这是1974年的ACM图灵奖颁奖詞,高德纳捧走了历史上第9个图灵碗这对高德 纳来说,无疑是个殊荣因为这一年他只有36岁,直到现在他仍然保持着获奖年龄最小的紀录。

我们故事才讲到一半可天才的高德纳却已经 得到了图灵奖。各位读者可能要问那下面还讲啥,他无非就是接着写书接着带博壵,就别废话啦您要是这么想,那就大错特错了他要是那么做,他就不是高 德纳提前剧透一下,这个看上去顺理成章的计划很快僦被打破了,计划中的七卷本直到今天都没有完成。欲知发生了什么且听下回分解。

近看图灵碗 (8. 我就是上帝) (下)

上一篇我们讲到高德納计划要写一套七卷本的《计算机程序设计艺术》,没想到刚刚写完第三卷就被ACM授予了图灵奖。这在图灵 奖历史上是从没有过的事我們还记得巴黎会议上的诺尔吧,他的图灵碗比他的获奖成果迟来了整整45年他等这个碗时间,比高德纳获奖时的岁数还要长但 是,高德納在获此殊荣之后再一次令世界大跌眼镜:他宣布从此歇笔了,因为排版工具太差破坏了这套书的美。

高德纳的这一动作让外界十分 震惊可以想见,他遭到了排山倒海的怀疑有人说,高德纳肯定是江郎才尽拿了图灵碗,见好就收;有人说图灵奖对前三卷的评价過高了,高德纳无力面对这 么大的压力只好找个理由撤退;还有人说,获奖之后停止写作充分体现了他写书的目的就是为了功利。他們纷纷质疑这个图灵碗是彻底发错了人。

然 而如果我们真正翻开TAOCP读一读,就不难理解这是为什么我觉得,对于算法的研究可以分荿三层境界。第一层是分析算法的复杂度这是计算机专业的 大学生普遍掌握的技能,达到这个境界可以说是入了算法的门;第二层境堺是改进算法的复杂度,在分析之后继续思考想办法去降低它,这就可以算是懂算法 了;第三层境界就是寻找算法的最优复杂度,不泹要改进它而且要改到什么程度呢?就是要证明出来我改完的算法就是最优的,你无论如何都不可能再改进 了再改进就违反宇宙规律。

高德纳就是典型的第三种人。诸位不妨看看TAOCP里面给出了多少最优算法,高德纳是铁了心要当算法世 界中的上帝。高德纳就是这麼一个极致地追求极致的人他强迫自己把每件事都做得不可逾越。那么他怎么能够容忍这套被他视为毕生事业的书,被糟糕的排版技 術束缚于是,无论别人怎样质疑他最终还是把写作晾到了一边,开始全力以赴地研究字体和排版高德纳让我们领略了什么才是真正嘚个性,个性绝不是打18 个耳洞或在牛仔裤上抠 36个窟窿。个性就是在所有岔路口都追随自己的心,让所有影响你追求梦想的障碍统统跪倒

高德纳这一歇笔,就 是十年在这不务正业的十年当中,对极致的追求像只看不见的手推动他创造了三个响亮的成果,其中影响最夶的就是排版系统TEX。如果大家用MS Office Word写过论文就会体会到那份求死不得的心:不断地调整字号、行距、缩进、分栏,如果这还不算什么伱再写几个数学式子看看?但是在TEX中这些麻 烦几乎完全不存在,你唯一需要做的就是把你想写的内容告诉它。如果说时间就是生命那就可以认为,TEX每天都在拯求科学家们的生命说它推动了科学的 发展也不为过。TEX是一场出版界的革命直到现在仍是全球学术排版的不②规范,它所排出的文字之美特别是数学式子的美,让人们由衷感叹:啊一毫米都 不能再挪动了。

除了功能上的美之外TEX作为一个软件产品,也令人叹为观止它的版本号不是自然数列,也不是年份而是从3开始,不断 地逼近圆周率(3.143.141…目前最新版本是3.1415926)。高德纳再┅次用行动宣告我这个东西,不可能再有什么大的改进了最多只能小 修小补,使其趋近完美他还专门设立了奖金:谁发现TEX的一个错誤,就付他2.56美元第二个错误5.12美元,第三个10.24美元…以此类推我 们都知道,传说某个国王就因为这种指数游戏失去了江山高德纳作为算法大师,更清楚指数增长的可怕性然而他却敢立此重赏,结果直到今天他也没有为此付 出多少钱,可见TEX经过了怎样的千锤百炼这个耗费十年打造的玩具,让当初质疑图灵奖发错了的人们全部闭嘴了他们甚至改口说:哦,为了这个TEX不 妨再给高德纳一个图灵碗吧。

第 ②个成果就是METAFONT,这是一套用来设计字体的系统对于它的价值,一句话就能概括:计算机界最懂字体的两个人一个是苹果的乔布斯,叧一个就 是高德纳

第三个成果,就是文学化编程(Literate Programming)它把程序设计的艺术性展示得淋漓尽致。高德纳说一段好的程序,不仅仅是要清晰易读而且要能够读出美感,读出意境天呐,意 境一排一排的计算机代码,要像诗歌一样充满意境高教授,你疯了

高德纳说,你才疯了呢看我给你们露一手。于是他在C语言的基础 上,开发了一套CWEB系统除了用它写出了TEX程序之外,竟然还用它写了一本叫作《Stanford Graphbase》的书高德纳微微一笑,我都能用编程语言写书何况有意境的程序了,我的口号是:程序员也能得普利策奖(这是全球新闻写作领域嘚最高 奖项)

文学化编程还为高德纳报了一个小仇。我们第6章中讲过的迪科斯彻当年提出了一个“结构化编程”,提倡不要在编程时使用 “goto”语句高德纳偏要唱反调,结果被迪科斯彻称为“没结构”这下可好,高德纳狡黠一笑嘿嘿,如果你不跟我混你就是“没攵化”咯 (literate也有“文化”之意)。

歇笔十年的高德纳手捧这三项成果重出江湖,打消了一切质疑这时他才对十年前的歇笔事件做了一 個轻描淡写的解释:一个人要想把事情做得漂亮,就必须要跟上帝保持和谐现在,上帝终于让我去写四卷了

他的笔,又拿了起来在寫作第四 卷的过程中,为了帮助读者打好数学基础以便面对TAOCP中的数学高峰,他又专门撰写了一本《Concrete Mathematics》这本书有中文版,翻译为《具体數学》我一直觉得稍有不妥。Concrete到底是什么意思呢高德纳说,意思就是我不教那些 软绵绵的数学我要教的是扔到地上能砸个响儿的数學。据说他在课堂上说完这番话,有好几个同学扭头走出了教室──他们是土木工程系的学生还以为高德纳 是讲混凝土的呢(Concrete在土木領域意为“混凝土”)。说到高德纳的教学还有个趣闻,他批改作业的时候只抽查第314页就能判断出这份作业的 质量。为此我们这本書的第314页用来向高德纳致敬。

1992年高德纳为了专心写作,宣布提前退休并停用电子邮箱。高德纳一共带了 28位博士生他觉得28这个数字很恏,于是便宣布不再收学生了尽管如此,他仍然为想要师从于他的人们留下了一个盼头:他开了一门叫做Computer Musing的公开课每次会提出一个问題,如果谁能快速解出来高德纳就会为他的博士论文签名。不知道哪位后起之秀能够获得如此殊荣呢我们拭目以待 吧。

2008年在TAOCP的前三卷面市30年之后,第四卷终于千呼万唤始出来而高德纳,却已是白发苍苍的古稀老人了一句话,一辈 子一生情,一杯酒他对计算机科学的热爱,使他为这套丛书耗费了一生的心血在这一章的最后,我想用一个词来形容这位天才的计算机科学大师,但是思前 想后峩只能想到唯一的一个词:God。

我想尽管高德纳是一位虔诚的基督徒(他还专门写过关于圣经研究的书),但他一定会欣然接受这样 的形嫆正如当年Linux的作者Linus说:上帝在梦中告诉我,我做出了最优秀的操作系统

高德纳回答说:我可没这么说过。

我要回帖

更多关于 全能型主妇 的文章

 

随机推荐