图灵访谈之三十九:对话《图灵的秘密》作者Charles Petzold

《图灵的秘密》的作者Charles Petzold,他在2000年出版了《编码》一书。作为微软的MVP,他还是十余本windows程序设计书的作者,其中包括《Windows程序设计》和《Windows Phone 7程序设计》。 在《图灵的秘密》中,他深入剖析了图灵这篇描述图灵机和可计算性的原始论文,以及图灵机对于人们理解计算机、人类意识和宇宙所产生的影响。

enter image description hereenter image description here

访谈原文

图灵社区: 是什么促使您写一本关于图灵的书?这之后有什么与其相关的故事么?这本书和您其他的作品有什么联系么?

CP:编写《编码》的时候,我对计算本身和其数学基础的早期历史产生了浓厚兴趣。我试图去阅读阿兰·图灵那些关于可计算性的论文,但是却发现它们对我来说太难了。当时我想:“这些论文如此重要,应该有人为它们写一本书。” 这是一个非常危险的想法!除了我还会有谁来写这本书?

在1999年早些时候我决定要尝试去写一本关于图灵论文的书,但是到2004年之前我都没有任何进展。当时我把论文扫描并且打印下来,把它们剪切成独立的段落和语句,把这些小片段粘贴到一本黄色标准拍纸簿的每一页上。我在这个本子上手写了大量的注释,然后我又花了四年才完成这本书。

图灵社区: 您的技术书籍,还有《编码》以及《图灵的秘密》,它们在读者中都拥有良好的口碑。作为一个热心的读者,我非常好奇,您是怎么能够写出这些成功的书呢?您是如何将海量的信息融入到一本书中呢?您在这其中是否做了许多关键的决定?

CP:我花费大量的时间来考虑整本书的组织和顺序。什么需要放在最开头?接下来又应该是什么?从来没有显而易见的答案。有些时候,当我正在写某一章,突然发现我需要在前面的章节来给这章做一些铺垫。这就会引起在已有章节间的混乱。

我不可能直接就从第一章开始,然后是第二章,接着又是第三章,用这样的简单手法来写书。除了从开头到结尾一点一点地堆叠之外,我的书通常是有节外生枝的趋势,所以我经常需要往回收一收。我也需要时时刻刻地思考整本书。所以我不可能一天只在这本书上工作几个小时,然后其他的时间去做些别的事情。实际上,我需要和我的书共同呼吸。

图灵社区:在1984年您开始了作为程序员和作家的生涯,并且一年之后您把关注点转向了Windows。在当时,Windows并不是一个非常火热的话题,我们非常好奇您当时的职业选择,为什么会关注Windows呢?

CP:当我在1985年第一次看到Windows的预发布版,我就非常好奇那些应用是怎么工作的。很明显,一个最简单的Windows程序都知道它们在屏幕上占了多大面积,因为它们可以根据自己的窗口大小来调整外观。这到底是怎么办到的?它到底是用了什么机制?好奇心是我早期对Windows兴趣的主要来源。但是我同时也有过为DOS写程序的经验,这些程序可以在其他程序运行的时候仍然保留在内存中。这些被称为内存驻留(TSR)的程序,非常难以使用而且引起了大量的问题。我知道这些TSR并不是在PC上实现多任务的长久之计。而且我也知道不单单是独立的应用,操作系统也需要管理多任务。我更知道操作系统需要管理视频输出,使它可以被多个应用所分享。

当时Windows似乎是这些问题的一个很好的解决方案。

图灵社区:在您即将发售的《Windows编程(第六版)》中,我们发现您使用了C#和XAML。您为什么不像第五版一样使用C了呢?另外,您未来是否有计划写一本关于.NET的书?

CP: Windows 8为Windows Store应用引入了一套新的接口,所以你无法真正地使用C。你可以使用C++,不过我想如果用C#来写这本书会让C#和C++的程序员都更容易理解。然而我现在正在把我所有的代码样例从C#转换到C++。我其实已经为.NET写过一些关于Windows窗体、Windows PPT基础、Windows PWPF 3D以及Windows Phone的书。我非常喜欢.NET,并且我也很喜欢C#和XAML,所以我非常高兴地看到这些编程接口和语言在Windows 8中扮演了主要角色。

图灵社区:大数据,云计算以及移动计算是当前最火热的关键词。现在Windows 8已经发布,您认为什么是Windows最大的挑战?并且您如何看待Windows未来的前景?

CP:我并不是一个很好的预言家,不过我们现在已经确实使用许多不同的设备了——手机、平板电脑、笔记本。我们想在这些设备上分享数据,这就意味着这个数据或许应该放在云上。但是我们也想让自己大部分的数据是私有的,这就意味着每个设备都需要知道我们是谁。

最终,当我们坐在任何一部设备前,打开它,我们需要能够获取到自己的私有数据。这就是一个非常大的挑战。

但是我们每一个人都有不同的身份。我们在工作的时候有一个身份,在家庭里有另一个身份,在朋友间有一个身份,或许在多人游戏里面还有一个身份。我们必须要能够区别这些身份。比如当我们在工作的时候写一封邮件,我们不想看到一个满是Facebook朋友的地址簿。如果我们离开了工作去吃午餐,那么我们或许就想要和这些朋友互动而不是我们的老板。这种对我们自己身份的区分同样是一个很大的挑战。

图灵社区:Windows的应用开发技术完全基于.NET,其基本原理是将软件通过网页传送到远程服务器上,然后进行实现。当Web变得越来越受欢迎时,是不是说所有的东西都应该放在云上?这和.NET的初衷相悖么?是不是按照这样的方法进行软件开发早已过时?还有,您如何看待未来的软件开发语言?

CP:我们并不想把所有东西一直放在云上面。比如当我们坐下来写电子表格的时候,我们根本不会去想在我们工作之前,还要把Excel下载下来。或许我们也不会想要把Excel用HTML5和JavaScript实现在网页上。至少,为了快速启动,应用和数据是需要在本地数据进行缓存的。

但是这和应用商店有什么不同呢?应用商店知道我们购买过一个应用,所以我们可以从自己的本地计算机中删除它并且在任何时候重新下载。这个应用是与我们的身份进行绑定而不是具体的设备。但是出于性能的考虑,把应用安装在设备上肯定是有意义的。

我非常喜欢像Java和C#这类的解释语言。解释语言可以帮助我们避免Bug,以加快我们的开发速度。并且解释语言使得我们可以在不同的处理器上运行同一个程序。然而,对于一些应用来说,解释语言会给我们带来严重的性能问题。这告诉我们,现在还不是放弃编译语言的时候,比如C++。

只要性能还存在问题,只要我们还关心性能,我们就不能限制自己仅仅只在云上编写和存储程序。

图灵社区:众所周知,在计算机科学领域,图灵机扮演了一个至关重要的角色,因为它是整个算法分析和编程的基础。某一天,有没有可能,由于其自身的设计哲学,图灵机变成了整个计算机科学发展的瓶颈?这是不是意味着它对于未来人们开发真正的AI是一个否定?

CP:图灵机是作为人类实现算法的一个模型。我们并不清楚是否图灵机同样也是宏观上人类思维的一个模型。在我们眼中,我们大部分的思维似乎和算法不一样,但是这也许只是一种假象。扪心自问,我们的思想可能真的就是图灵机。

如果我们的思想是图灵机,那么理论上我们就可以在数字计算机上实现AI,并且这只是一个软件问题。如果我们的思想不是图灵机,那么我们可能需要另一种计算机来实现AI。图灵机模型仅仅描述了数字计算机的局限性,他并没有限制任何的非数字计算机。真正困难的问题是去思索并设计一种超越图灵机限制的计算机,因为它已经不是数字计算机了。

图灵社区:自然智能和人工智能被认为能够从混沌中产生秩序。从这一点上来看,算法是否给我们的计算机科学家施加了某种限制?有没有可能存在另一种超越图灵机的计算模型,能够更好地实现人工智能?

CP:如果我们有幸遇到了一个通过了图灵测试的计算机,那么我们中的许多人还是会否认这台计算机具有真正的智能。对于计算机科学家和程序员,我们知道无论它多智能,它表现得多像一个人,计算机还是一个不具有意识的简单实体。它无法感知到自己。它可以处理数字,它可以模仿我们的外部行为,但是它无法和我们一样思考。

图灵测试其实是有严格的行为主义意味,它不关心在计算机内部到底发生了什么。这并不能让我们感到满意。更糟糕的是:我们拒绝说计算机和我们具有同样的思维,但是我们自己都不知道自己是怎么思考的!我们无法理解自己的意识。

在我的观念里,关于思维最准确的理论,大概会把意识描述成大脑松耦合的部分与神经系统其他部分的通讯。这确实是一个非常神秘的过程。我们不知道它到底是怎么工作的,所以也不知道需要什么样的硬件或者软件来创造意识。

我们甚至连自己都弄不清楚断定一台计算机具有意识的方法。如果一台计算机告诉我们它能感受到自我并且具有意识,我们该相信它么?

图灵社区:任何关于可计算性的理论都会介绍NP-完全问题,不过似乎计算机科学正是被限制在确定性算法的领域。看起来非确定性算法和算法探索的创新性研究并不受学术界和工业界的青睐,您对此怎么看?

CP:在这个领域我知之甚少,不过现在许多关于非确定性图灵机的研究还是极端的理论化。当然,对于那些无法真正实现在计算机上的研究,我们总有一种强烈的抵触情绪。不过当量子计算机被实现得更好之时,这个领域一定会变得更加重要。

图灵社区:图灵机、λ演算、μ-递归函数和URM(无限寄存器机器模型)是四种等价的计算模型。为什么唯独图灵机在非学术界拥有如此高的知名度?

CP:第一点:图灵机有一个具体的名字,而不是一个奇怪的希腊字母。第二点:图灵机可以被可视化为一个带有一个纸带的现实机器。这就意味着,图灵机有一个名字,而且还有一张脸。

图灵社区:相比于冯·诺依曼,您觉得图灵对于计算机科学的贡献如何?处理过图灵如此多信息之后,您觉得图灵是一个怎样的人?

CP:阿兰·图灵是一个典型内向的人,而约翰·冯·诺依曼则是一个典型外向的人。我觉得他们对于计算机科学的贡献与他们的个性有着惊人的相似。图灵可以专注于非常困难的问题,并且他有很强的原创性和巧妙的思维,但是我并不认为他是一个很好的组织者。相比之下,冯·诺依曼具有强烈的个性。他可以综合来源不同的各种想法,并且合理地组织在一起。对我来说很显然的是,正是图灵在可计算性上的论文帮助冯·诺依曼理清自然计算机本质的想法,但是冯·诺依曼才是那个把想法有效地实现在现实世界中的人。

个人而言,我不认为我很喜欢冯·诺依曼。但是对于阿兰·图灵,在研究他的作品和遗物上花费了如此长的时间之后,我是真的非常之崇拜他。我很遗憾,图灵受到了人们不公正地对待。


更多精彩,加入图灵访谈微信!