《圖靈的祕密》作者Charles Petzold:我眼中的圖靈機和Windows(圖靈訪談)

速凍沙漠發表於2012-12-09

圖靈訪談之三十九:對話《圖靈的祕密》作者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:阿蘭·圖靈是一個典型內向的人,而約翰·馮·諾依曼則是一個典型外向的人。我覺得他們對於電腦科學的貢獻與他們的個性有著驚人的相似。圖靈可以專注於非常困難的問題,並且他有很強的原創性和巧妙的思維,但是我並不認為他是一個很好的組織者。相比之下,馮·諾依曼具有強烈的個性。他可以綜合來源不同的各種想法,並且合理地組織在一起。對我來說很顯然的是,正是圖靈在可計算性上的論文幫助馮·諾依曼理清自然計算機本質的想法,但是馮·諾依曼才是那個把想法有效地實現在現實世界中的人。

個人而言,我不認為我很喜歡馮·諾依曼。但是對於阿蘭·圖靈,在研究他的作品和遺物上花費了如此長的時間之後,我是真的非常之崇拜他。我很遺憾,圖靈受到了人們不公正地對待。


更多精彩,加入圖靈訪談微信!

相關文章