獅子,因為獅群中母獅最具殺傷力。一年後她成了我的主管。)我們聽音樂,並且要描述出音樂所激發的情感。我們還模擬在工作中出現的假想的危機來表演小品。其中有一個情節是,我們被告知有一群技術員,有男有女,離開單位去附近一家餐館吃午飯,但沒有主管跟著他們;吃飯時一名男技術員講了一個黃色笑話,一名女技術員覺得受到了侮辱。那麼她是應該(a)保持沉默,(b)向這名男技術員提出抗議,還是(c)返回單位後向主管報告此事?我記不得正確答案了。 你被認為應該在這些工作之外的會議上當著你的同事和主管的面, 把你自己的私人看法暴解出來,然後第二天回到單位再與他們一起工作。這種對個人隱私的侵犯有一個表面的理由,就是你的性格和個人看法可能會影響你的工作質量,因此也就合法地成為公司的關注物件。我厭惡這樣把個人和公司混雜到一起。原因很簡單,我為他們工作並不意味著我必須每年要花一天時間在大庭廣眾下討論我個人的內心焦慮。更而且我也不想聽到別人敘說他們的內心焦慮。20年以後在網路泡沫快結束時,我感到驚訝的是,在很短的時間內竟然連高盛也開始充斥著江湖郎中沿街叫賣一般的諮詢師,成功地兜售那些時髦的、專門針對團隊建設的藥方。 同一時期在5號樓,人們瘋狂地處處表現出雄心勃勃來。有幾位女同事像我們這些人一樣以前也是科學家,著迷地閱讀《從著裝到成功》這樣的書,並且照著書裡所說來做。她們開始穿帶墊局的男式西服,繫上絲綢領帶。有一位女技術員提醒我從那不要再穿棕色西服,她跟我說話時的認真使我以後都不敢再買棕色西服,怕她萬一真的知道一些重要的規矩。然而她有一天失禮地在我的辦公室裡一邊哭泣一邊訴說她的個人問題,似乎沒有人知道是應該表現得公事公辦一些,還是應該表現出同情。我在貝爾待到一半時,因為貝爾系統的解散和貝爾子公司的剝離,貝爾實驗室本身有一部分被分租出去了。我留在AT&T,而我的一些同事則被派到貝爾通訊,這是貝爾電話公司下面新組建的一家電信實驗室。 貝爾的低效率和令人惱火的地方可以寫滿一本書,但是最能體現官僚 89
寬客人生|My Life as A Quant 體系無聊本質的愚蠢之處是在1984年,有一次從上層某處發起,要求我們在每週都要填寫的考勤表上再填上加班時間(在單位或是在家裡的), 然而加班根本就沒有加班費。這只不過是誘導你欺騙領導說我在本職工作之外又額外多做了工作,以此討好領導。這種荒唐真配得上斯科特•亞當斯創作的“呆伯”諷刺漫畫。毫不令人奇怪的是,亞當斯本人就曾在太平洋貝爾公司工作過幾年。 在貝爾的生活也有一些好的地方。中心裡有很多前物理學家和數學家, 其中一些是順應 20世紀70年代後期的“潮流”而從學術界出來到企業工作的。他們中的很多粒子物理學家我以前都認識。我與馬克•哥尼斯伯格逐漸交上朋友,他對任何形式的難題都感興趣。我頭一次去面試那天他沒在, 但我正式上班後不久,對很多相同事物的一種共同的反感把我們聯絡在一起。在我離開貝爾去高盛之後6個月,他也步我後塵離開那裡去了所羅門兄弟公司。馬克和我還與拉里•凱格利斯交上了朋友。凱格利斯是一位與我年齡相仿的物理學家,幾年前當他在賓夕法尼亞大學攻讀廣義相對論博士時我就認識他。史蒂夫•布拉哈是另一位我過去7年在很多會議上都見過的前粒子物理學察,他也放棄了威廉姆斯學院的學術職位來到中心工作。幾年以後他也離開了貝爾,在波士頓地區成為軟體諮詢師兼撰稿人。 馬克、拉里和我走到了一起。我有一次拉著他們去位於紐約的倫理文化協會,聽秋陽•創巴仁波切本人的一場講座。拉里像我一樣受到講座內容不尋常之處的吸引,對菜克分析法產生了興趣。多年以前我曾看過馬卡維耶夫關於菜克的有趣影片—《W.R.:有機體的秘密》,很欣賞影片中斯拉夫式的感受力和在性壓抑與政治壓抑之間的巧妙平衡。現在我正在閱讀菜克學說的追隨者邁倫•沙拉夫所著的講述維爾姆•萊克與眾不同、令人難忘的一生的傳記作品—《憤怒在地球上》。 在貝爾的生活並不緊張,我們常去第22 大道的新澤西小飯館午飯,可以吃很長時間。當我們偶爾帶著來面試的人去吃飯時,一定會去 L’Affaire。這家餐館那不落俗套、複雜難懂的名字就等於告訴你經營這家餐館的是什麼樣的人,賣什麼樣的菜,以及什麼樣的人才會去吃。有一次我們在外面用過漫長的亠餐後,外面下起瓢潑大雨,馬克、拉里和我坐在我的車裡,我們開始琢磨一道著名的兩個避孕套組合問題。這個問題在中心早已傳遍: 90
7!苦刑之地! 兩對(異性戀)情侶決定相互之間用所有可能的男女組合進行一次群體性交。他們只有兩個避孕套,而且每個人都很懼怕得上某種性病。他們怎樣才能用兩個避孕套進行四次性交呢?第一個男人應該先帶上兩個避孕套,一個罩在另一個上面,然後和第一個女人性交。這樣,只有單在外面的避孕套的外表層和罩在裡面的避孕套的內表層,接觸到可能帶有傳染病的部位。之後第一個男人褪掉單在外面的避孕套,與第二個女人性交。第二個男人接著戴上剛才褪下的單在外面的避孕套,這個避孕套的內表面到現在為止還沒有跟任何人的皮膚接觸過,第二個男人戴好後跟第一個女人性交。而第一個女人直到現在還是隻跟同一個避孕套的外表層發生接觸。最後, 第二個男人把第二個避孕套戴在他已經戴上的原先單在外面的那個避孕套上面,與第二個女人性交。而第二個女人也是隻接觸到那個她已經觸碰過的避孕套。 很難抵擋住不把這一問題推廣到 N 對情侶的誘惑。 拉里是一位認真的馬拉松運動員。他和我都是貝爾公司裡一小群熱衷於跑步的人,每週會在一起利用午休時間跑上一段路。我們會下樓到一間小淋浴室,這間淋浴室是歸大樓和運動場管理員使用的。我們在那裡換衣服,然後去草地做熱身運動,跑上30~45 分鐘,調整一下,做一些整理運動,洗個澡換上衣服,接著去餐廳吃午飯。這會花上將近兩個小時,在一天的工作時間裡佔了相當的比重,在你只從上午9點工作到下午5點的情況下尤其如此,但好像沒有人在乎這些。 我還從來沒有、以後也沒有過,像這樣保持身體的健康狀態,或者可以說這樣不守規矩。 我們小組時常會舉行一些教育性質的學習交流會。有一次是在1981 年初,拉里就佈菜克一肖爾斯理論作了一次講座,這一理論我之前從未聽說過。當聽到期權報酬居然同我以前在粒子物理學裡用過的海維賽德(指標)函式中的代數和微積分有關係時,我開始有點感興趣了。後來我讀到一篇伯克利的馬克•加爾曼的早期論文,在這篇論文裡,加爾曼對同樣的這些聯絡進行了分析。但是期權理論在很大程度上同我們在貝爾做的事情沒什麼關係,於是我短暫的興趣很快就淡化了。我根本不知道什麼是對沖或是風險中性,而且我也不關心股票市場。 91
寬客人生| My Life as A Quant 幾年以後,拉里、馬克和我被派去參加一個為期兩週的麻省理工學院管理人員暑期金融培訓班。斯圖爾特•邁爾斯給我們上課,用的是他和布雷利合寫的教材。我們住在大學校園裡的學生宿舍,沉浸在遠離公司生活的自由自在之中。我們傍晚在麻省理工的操場上跑步,晚上去坎布里奇吃晚飯。邁爾斯的課程主要是講資本資產定價模型,我被金融理論與熱動力學之間明顯的相似之處吸引。我看出一種也許是非常膚淺的關於熱能與金錢、溫度與風險、嫡與夏普速率之間的相似之處,但是還沒有領悟如何利用這種相似之處。課程時間很短,非常緊張,我們在學習上面也沒有花足夠多的時間。講課的人裡有一位是泰瑞•馬什,他現在是伯克利的一名教授,也是金融軟體公司 Quantal 的創始合夥人。當時他的事業正處於起步階段。多年以後,我總是很高興在專業金融會議上或在伯克利哈斯商學院做講座時能夠碰到他。 我把AT&T只看成是一份工作,而且還是一份令人失望的工作。但是拉里有著強烈的精神色彩,堅信我們都是在為人類通訊事業的進步獻出一份努力。我當時認為這種想法很可笑,但也許在某種程度上他是對的。盡管如此,他、馬克和我—都憋悶得要死——在5年之內都離開了。 我在貝爾最喜歡的就是設計軟體的美妙。外行人把它稱次“編碼”, 好像它是個機械似的裝置,充其量也就是從一組符號到另一組符號的讓人無法理解的翻譯罷了。而喜歡它的人則不加絲毫掩飾地把自己稱為“程式設計者”。不管你怎麼明它,我發現程式設計是最純粹的活動之一。它是一座真正的語言的建築。然而我科學界和商界的朋友們竟然奇怪地對此一致反對, 他們看不上程式設計—他們認為程式設計還不如摘物理或是去賺錢。但我就是喜歡程式設計。 當你程式設計做得不錯的時候,你就會嘗試著去設計一架機器來完成一項任務。你用一種人類創造出來的程式語言——比如說 FORTRAN、Lisp、 C++或Java 來進行設計。程式設計和指揮一個朋友去為你完成一項任務並沒有多大不同。最大的不同就在於,計算機比任何一位朋友都要摳字眼,因此這項任務的每一個細節都必須明確,就好像這臺計算機對這個世界一無所知一樣。 在1980年到貝爾之前,我從未意識到程式設計能夠如此具有挑戰性和令人滿足。我還從未使用過一臺計算機終端。在我做學生和博士後的那些 92
71 苦刑之地| 年月裡,所有我設計的程式都只是為了一次又一次地獲取複雜數學公式的數字值。我只是把計算機看成一臺值得表揚的加法機器。唯一一次例外是1965年在開普敦大學時,當時我用打孔的辦法往機器裡輸入一個一個詞彙,從而創造出隨機生成的短詩。我以前一直把那次嘗試當成一種兒童遊戲。 但1980年在AT&T,整個公司都在使用C語言,也就是大約10年前丹尼斯•裡奇在默裡山發明的那個兼具優美和實用性的語言。他原來是把 C語言設計成一種高階工具,用來編寫 UNIX 作業系統的可移動式版本的。UNIX 作業系統也是由肯• 湯普森和裡奇在默裡山發明的®。現在, 從電話交換系統到語音處理軟體的所有東西都是用C語言寫出來、並在 UNIX 系統上執行的,有各種不可思議的式樣。到最後,甚至通常只對小數點後有幾位數感興趣的物理學家也開始放棄難看但管用的 FORTRAN 語言,轉為選擇有著詩歌風格的C語言。編稞當時正處於革命的最後階段, 而我才剛剛開始學習。 這場革命的宗旨就是要讓程式成為能夠為人們所理解的關於資訊的文本。而在以前,情況並不一直如此。因為程式必須儲存在昂貴的、容量有限的計算機記憶體裡,所以程式設計者一般只關心要把程式編寫得儘可能簡短精煉。他們常以能編寫“緊湊”的程式碼自詡,而“緊湊”就是指簡明、凝練,但又含義模糊,有時甚至是相互混淆的。然而只要它能執行得夠快, 能把設想進行下去就可以了。樣式幾乎無關緊要,而內容則至關重要。因此,程式既有可能出錯,而且還難以被人們理解和修改——含蓄地說,程序是為計算機而寫的,使得計算機可以執行程式的指令。又因為編寫一個程式非常困難,所以一個程式可能會使用令人吃驚的相當長的時間,在這期間它們還需要接受昂貴的維護、改進和升級。這也就是計算機千禧年問題(Y2K)為什麼令人擔憂的一系列背景。 當你編寫程式時,你是在做些什麼呢?你試圖使用一種語言把想象出 ① 用像C語言這樣的商級語盲來編寫作業系統在當時是一種新的想法。最初,作業系統是用特殊的、低階的、雅以閱讀的、簡單的、由每一臺新的機器生成的“彙編碼”或“機器程式碼” 從零開始、費盡心思編寫出來的。使用標準的C語言,而不是每一臺機器特殊的機器程式碼來編寫作業系統時,你只需要先在機器上執行C語言,然後就可以很快製造出一個 UNIX版本的系統及其所有的工具,來管理任意一臺新生產的計算機。 93
寬客人生|My Life as A Quant 的世界以及它的細節進行詳細的說明,而且要儘可能地準確。你試圖在一臺只能理解和執行簡單指令的機器上創造出這樣的世界。你只能靠編寫精確的、經常長達幾十萬行的指令來做到這一點。而且你的指令必須按照順序來編寫,使得這些指令能夠被計算機這樣一臺沒有理解能力的自動裝置,毫無歧義地予以執行。與此同時,這樣的一些指令還要讓你和其他的程式設計師能夠閱讀、理解、記憶和修改。就如同詩歌力圖解決形式與內容之間的張力一樣,程式設計必須解決內容的可理解性和形式簡潔之間的矛盾關系。為此,你所使用的語言就相當重要了。 在貝爾,人們把編寫程式碼本身看成一項需要工具的任務。他們鼓勵程序員把每一個他們負責處理的具體程式都視為一類更一般的應用程式的一個例項,並由此用計算機來設計出這一類應用程式。也就是說,他們設計程式來編寫部分或是全部的他們的程式。貝爾的UNIX 團隊出於熱愛而非僅僅是完成任務,已經創造出了一套編掛和分析工具,來幫助編寫、檢驗和修改他們的程式。在湯普森和裡奇的UNIX 程式設計環境裡,使用計算機已經不僅僅是使用一個自動裝置來執行程式,而且重要的是,是把計算機當成一種工具來設計出程式。計算機已經不僅是一把錘子,而且成了一座熔爐,用來設計出下一代的錘子。 貝爾的技術員並不只是在大批次地生產製造程式,而是思考很多程式需要完成的子任務(如閱讀輸入指令、計算公式、設計輸出格式等)。然後他們編寫出短小專用的程式語言,這些程式語言能夠用來生成一個包含上面這些組成部分的更大的程式。最後,他們用這些小的語言設計出整個程式本身。他們總是從任務中歸納出工具來。 因為 AT&T是一個受政府管制的公用事業單位,被禁止透過與 IBM 和 Digital這樣的公司競爭來銷售軟體獲取利潤,於是貝爾就免費把這些工具程式分配給大學。這一舉措產生了整整一代的程式設計師,他們不認為編寫程式是一件令人討厭的事,相反是一種以計算機為媒介的文學創作上的努力。你編寫的程式看上去有多清楚、多漂亮,結構有多合理,同它的高效執行同等重要。 柯尼漢和普羅格在70年代寫了一本很有名也很有影響的書,叫做 《程式設計風格基礎》。這本書的名字很像斯特倫克和懷特那本關於寫好文章的經典論著《寫作風格要素》的書名。這正是把編寫程式和編碼開發看 94
71苦刑之地! 成是一門藝術的潮流之中的一部分。 當我進入商業分析系統中心的時候,這種文化已經廣為流傳。所有新僱員都要學習 UNIX作業系統及其 Boure 指令解釋的指令碼語言,也學習C 語言用於程式設計,學習S語言用來做統計,還有線性格式的文字編譯程式 “ed”。我現在還記得在比爾•喬伊的影象文字編譯程式“vi”剛釋出不久,學習使用它時的那種興奮之情。值得稱讚的是,中心還組織了一系列大師級的計算機課程,大多數老師都是來自紐約哥倫比亞大學的教授。我跟約翰•肯德學過軟體設計和編碼演算法,他是一位性格溫和、低調的檢視軟體專象。我們還從戴維•肖那裡學過資料庫理論,他後來建立了投資公司D.E.肖公司和第一個免費電子郵件服務提供商Juno。也就是在D.E.肖這公司,戴維聘請了傑夫•貝索斯,後者後來離開 D.E.肖公司創辦了亞馬遜網站。 戴維當時已是一名行事隨心所欲的企業家。他開辦著一家軟體公司,同時還在斯坦福大學學習計算機。當我遇到他時,他仍流醒出一種不修邊幅的學者風度,跟他那商場上的自信並不完全一致。他是一名現在很常見的、擁有大量財富的知識分子的早期典型。他的後褲袋裡裝著一個小小的、跟他體形很相配的皮質日記本,裡面記載著他的各種約會。這個日記本是賓夕法尼亞州生產的,很有美國中層經理的感覺,帶著用線圈申起來、以月為單位的插頁,上面留有空白可以列出約會和待辦的工作。這個本子看起來完全是一派毫無學者氣息的公事公辦的樣子,彷彿是後來很快就開始流行的歐洲 Filofaxes 牌記事本以及10年以後的美國產商務通的早期版本。 看得出來,戴維是個很有想法的人。當時,他正在設計被他稱 “NonVon”的由很多小型處理器和儲存裝置組成的可並行運算的計算機。 這一設想是對帶有一個大型中央處理器的標準計算機的顛覆,而後者的設計自從約翰•馮•諾伊曼和20世紀40年代的電子數字積分計算機開始就已經被廣為接受了。戴維的自信激起了恐懼和嫉妒。約翰•肯德曾向我半開玩笑地抱怨說,當他本人和其他共同競爭哥大終身教授職位的助理教授們,都在努力爭取最優厚的政府資助來做研究的時候,戴維卻一直在大談規模大得多的雄心勃勃的設想,NonVon這一計劃最終將需要幾十到上百號人馬。約翰認為,同戴維那近乎吹牛般的宏大視野和不可置疑的自信比起來,他和他的同事在贏得終身教職方面已經沒有機會了。 95
寬客人生| My Life as A Quant 約翰對於戴維氣度寬廣的“世界觀”的判斷是正確的,但他給戴維走向輝煌的準確路徑下的結論卻是錯誤的。戴維很快就離開哥大,去了摩根士丹利傳說中的南捷羅•塔泰格利亞團隊工作,從事組合交易(pairs trading)“。當這一嘗試最終結束的時候,他創辦了 D.E.肖投資公司。他的新公司把自己稱為在科技和金融交叉領域的專家,致力於打造作為高精確度的、可用於尋找交易機會的計算機系統秘密發明人的名聲。1996年的 《財富》雜誌把這家公司稱為“當今華爾街最具誘惑力、最神秘的一股力量”。我認識一些華爾街的招聘經理們,從D.E.肖出來的任何人他們都願意給予面試機會,為的就是去發現這家公司不為人所知的運作內幕。但是大多數被面試的D.E.肖的僱員,對公司內部的運作情況也不知道多少。 1997年,我應邀在一次會議上作為午宴發言人介紹戴維,我是這樣說的, “•••你可以把D.E.肖這家公司看成一個蝙蝠的巢穴,把戴維看成蝙蝠人。 他在注視著世界,自己卻隱身在黑幕後面。”但是打造一臺無風險的賺錢機器,特別是一臺體積龐大的機器,並不是那麼容易。世界上並沒有那麼多無風險收益等待著去收割。最終結果就是,在更大的資金規模上為了努力保持收益率不變,就不得不持續採用風險更大的投資策略。在1998年, 據報道,D.E.肖公司與美國銀行合夥因為採用同搞垮長期資本管理和令許多其他對沖基金或投資銀行損失慘重的相同的投資策略,損失了將近10 億美元。 與此同時,在1981年,我參加了貝爾提供的計算機課程,學習了編程的實用技術。我特別著迷於設計語言和編寫編碼,花了好多時間來編寫專用的短小語言,使得使用者可以解決專門的問題。 在像 Java、C語言這樣的高階語言中,甚至是傳統的、被人瞧不起的 FORTRAN 語言裡,你都可以很容易地編寫出簡短複雜的指令來指揮計算機完成繁瑣的操作。你編寫程式的方式非常接近於一個受過教育的人思考 ① 組合交易是指在一組可比的股票中,從統計意義上尋找這些股票股價差價的顯薯的變動規律。如果你認為已經找到了這樣一種規,那麼當(如果〉股價差價變大時,你就可以賣出股價高的股票而買人股價低的股票,而當(如果)差價變小時,你就進行相反的操作。自從塔泰格利亞在摩根斯坦利取得聲名顯赫但是短暫的成功以來,交易所、對沖基金以及他們所聘請的科學家們就開始經常性地、滿懷希望地試圖建立由模型來控制的這一類所謂“統計套利”的賺錢機器。 96
71苦刑之地/ 和講論數學問題的方式。但是計算機的中央處理器,也就是真正執行邏輯和數學運算的初級大腦,是一個“低能的天才”(idiot savant),被設計出來只能“理解”和對簡單的兒童語言做出反應。這就好像你想讓一個只掌握了兒童語言(但是對超長的一串申語言有著非常好的記憶力)的小孩子, 牽著狗去散步。你就不能僅僅只是說“牽狗去散步!”這裡麵包含了太多的生活知識。你就必須把這種高階的、不夠具體的指令翻譯成非常初級的、按照順序排列起來的一系列動作,每一個都要用兒童語言表述出來, 然後列成一張相應的單子。你就必須這樣說: 把狗牽來; 找到拴狗的帶子; 把帶子系在狗的項圈上; 緊緊抓住帶子; 開啟前門; 跟著狗走5分鐘; 如果狗走下了人行道,就用帶子把它往回拉; 從前門返回; 穿過門; 給狗解開帶子。 如果你設計了一種高階語言,能讓它的使用者下達如“遛狗”這樣的複雜指令,你就必須提供一個編譯程式,以便能把這些指令翻譯成如同兒童語言一般的中央處理器能夠理解的機器編碼。很明顯,翻譯過程中的一個錯誤,或者僅僅只是一處地方還不夠明確,那麼這隻狗還有孩子就將一去不復返了! 當20世紀50年代後期,約翰•巴克斯和他在IBM 的團隊發明 FORTRAN 語言(也就是“公式翻譯”語言,“FORmula TRANslation”)時,他們是打算讓程式設計師用這個語言來運算複雜的數學公式的。他們的編譯程式會“自動”把任何一條 FORTRAN 指令翻譯成按順序排列的兒童語言一般的機器編碼,以便讓簡單的計算機邏輯電路能夠理解。這個編譯程式不但能夠把合理的指令翻譯成兒童語言,而且能夠拒絕翻譯不合理的或是意義不明確 97
寬客人生|My Life as A Quant 的指令。如果你讓它去編輯“狗這條!去步散”這樣的指令,編譯程式就會喊“犯規!”總而言之,編譯程式能夠理解語法。 語法就是合法的句子必須滿足的一系列規則。成年人能夠出自本能地、不加思索地辨認出語法,而計算機則必須按照規則來。巴克斯為了描述和分析有助於語言翻譯任務的語法,而發展出了一種數學形式。這種形式在那些簡單的程式設計語法上,也就是在不如那些自然表達的語法複雜和微妙的程式設計語法上很好用。巴克斯的這種形式,被稱為“巴克斯正規化” (BNF),提供了一種可以創造出語法上相一致的計算機語言的方法,這一發現可以與諾阿姆•喬姆斯基發現的“生成語法”相提並論。利用這一範式,我學會了如何設計短小的語法上相一致的計算機語言。 巴克斯正規化可以幫助你定義你的計算機語言的語法。它能讓你設計出一種編譯程式,這種編譯程式能夠分析你的語言中的句子,只接受那些語法上正確的句子。到此為止,任務只完成了一半。另外一半就是編寫出編譯程式的另一部分,從而能夠把每一個語法上正確的句子翻譯成兒童語言。這另一半的任務是令人痛苦地冗長乏味和困難。翻譯中的一個小錯誤對人們賴以進行數學運算和控制宇宙飛船的程式來說都是潛在地致命的。 UNIX 作業系統對程式設計者們來說是一個激動人心的開放環境。它包括了我曾見過的最漂亮的工具程式中的兩個:它們被稱為“lex” 和 “yacc” 這兩個工具程式讓我幾乎可以毫不費力地設計出編譯程式。“lex”是“詞法分析器”(lexical analyzer)的縮寫,而“yacc”則代表了“目前為止又一個編譯程式的編譯程式”(Yet Another Compiler-Compiler)。像對很多 UNIX 工具程式一樣,人們採用了短小可愛的首字母縮寫形式來命名 “yacc”。你可以用lex來設計一個子程式以識別你語言中的所有詞彙。你可以用 yacc 來設計另一個子程式以分析和識別合法的句子,然後執行你認為合適的命令。Lex 和 yacc 都是“非過程性的”程式,也就是說你不用寫出詞法和語法分析的所有細節,你只需要告訴它們你需要識別“什麼樣”的語法,然後它們就可以使用與回溯到計算機先驅艾倫•圖靈和史蒂芬•克林使用過的模式相匹配的演算法規則,編寫出一個程式來完成這項任務。我在lex 和 yacc的幫助下,學會了設計我自己的計算機語言。 費曼圖可以讓平凡的物理學家們不費腦子地詳細計算出量子力學的各種可能性,而在它出現之前只有像施溫格和費曼這樣的天才人物才能進行 98
71苦刑之地| 這樣的計算。這些分析工具程式有點像費曼圖,可以讓普通程式設計師不費氣力地設計出計算機語言,而在以前這樣的工作需要付出極大的努力才能完成。 我以前一直把計算 (computation) 等同於數字求值 (numerical evaluation)。 而現在,當接觸到從語言學角度進行的計算(computing)後,我非常遺憾以前沒有認識到它們。我幻想著能夠逃出商業分析系統中心,去10號區做一名真正的研究型的電腦科學象。我還曾努力嘗試過調職。但是我既沒有這方面的專業資格,也沒有從事過這方面研究的背景,於是調職就肯定是不可能的了。 儘管如此,我在貝爾5年中的大部分時間,一直在從事設計編譯程式的工作。我花了好幾年的時間設計和執行了一種語言,我把它稱為 “HEQS”,就是“分線方程式計算器”(Hierarchical EQuation Solver)的意思。這是一個用來進行方程式計算的語言,專為那些具有足夠知識儲備、 可以詳細列明需要計算的方程式,但是又嵌少數學計算能力或是計算時間的商業人員設計的。這個名字既有 UNIX 作業系統中工具程式所必備的短小可愛,同時它還是“邪咒”(hex)這個詞的音近異意詞,簡明地反映了我暗地裡對在5號樓的那段生活的病態的看法。 HEOS 就像 lex 和yacc一樣,也是一種非過程性計算機語言。使用者可以指定他們想要計算機去做什麼(“計算這些方程式!”),而不用必須明確完成任務的顧序。(與此相反的是,FORTRAN 和C語言都是“過程性”語言,需要程式設計師把怎樣執行一項任務,把煩死人的細節一一詳細列明才成)HEQS最重要的一個特點是,你可以把一堆成千上萬個代數方程式(線性的、非線性的或是兩者都有)交給 HEQS,讓它進行計算或是告訴你為什麼在你輸人方程式時所犯的某個錯誤使得求解進行不下去。 HEQS還為分析這一組方程式提供了工具。使用者可以檢驗輸人值和輸出值之間的關係,可以透過一個變數數值的改變對其他變數值的影響來掌握之間的邏輯鏈條。從本質上說,HEQS 就是要讓 AT&T 的商業使用者們把時間花在闡明他們的業務活動或是會計模型的關係上,而不用擔心怎樣去進行計算。 六七年以後,隨著個人電腦大規模的普及,像 Visicalc 和 Lotus這樣的電子製表軟體為完成相同的工作任務提供了工具。而在那之前,AT&T總 99
寬客人生|My Life as A Quant 部的很多商務人員都是使用 HEQS 來計算模型的,我們中心的程式設計師們在設計很多應用程式時也要把 HEQS當成一個計算方程式的工具。我在一期《AT&T 技術研究》上對HEQS 進行了介紹,很高興藉此涉足到研究領域中①。 我透過深人研究lex 和 yacc 來設計 HEQS 程式語言和它的編澤程式, 獨自一人研發出了整個的HEQS 程式。只要使用者輸人他們需要計算的方程式,我的程式就會把這些方程式按照是否可以同時進行計算,把它們重新分成更小的一組一組的,從而使得一組方程式計算出的結果可以作為進行下一組計算所需要的輸人值。憑藉著在貝爾的計算機培訓班上學過的內容,我意識到我可以把一組方程式裡的每一個變數都用一個定向座標圖裡的點來表示,這樣一來,重排方程式就相當於在座標圖裡把圖形分解成有著緊密關係的分向量。我天真地以為在搞真正的數學,並以此為榮。 不管我走到哪裡,總是有可以藉助的資源。我發現10號區計算機組裡的技術員克里斯•馮維克曾經編寫出一套 UNIX 工具程式來計算聯立方程式。他在斯坦福大學跟隨唐納德•努斯念博士期間就已經開始這一研究了。努斯很有名氣,寫過四卷本的《計算機程式設計藝術》,還發明瞭廣為使用的數學公式排版和詞語處理的計算機語言“TeX” ’,這一語言已經被科學察們奉為標準。我在貝爾的那個前粒子物理學家朋友史蒂夫•布拉哈告訴我說,努斯在大學時曾經跟他住在一個宿舍裡。當我和克里斯在一起工作時,我對他專業的程式設計技術印象深刻。我只是個業餘選手,靠小聰明過日子,而克里斯才真正是個人物,是個在他擅長的領域工作的研究人員。我感到命中註定我只能是個業餘愛好者。 HEOS 是一個很好的想法,於是很快,隨著中心裡的人們開始用它來計算一組一組的方程式時,它就需要一個更精巧和高效的設計了。我那個 HEQS版本只能讓使用者們用數字(數量)和一維向量來表示金融時間序列。於是我的一位同事愛德•夏普德,被派來和我一起工作,我們計劃重新編寫系統來加入多維排列的變數,以便能夠表示更為一般的金融時間序 ① 在這一時期,我也開始參加各種不同的計算機學術研討會和技術會議。在這些會議上, 我總是為計算機研究和物理學研究之間性質上的差異感到展驚。在物理領域,研討會的發言者介紹的是已經完成了的成果。而在計算機領域,大多數的發言是關於計算機系統的研究計劃, 新計算機語言的提綱,以及還沒有執行的設想。發表研究成果的門檻似乎是很低的。 100
71 苦刑之地| 列。然而當我離開中心和家人去火島海濱度假周時,愛德突然就完全投入到重新設計和重寫整個系統的工作中—沒有提前跟我打招呼。我回來以後,面對的就是一個“既成事實”。這是一個全新的、經過改良的而且幾乎認不出來了的有著程式語言 (A Programming Language,APL)風格的版本。愛德的版本現在被廣泛應用到複雜的動力連結資料結構裡。對這一結構的細節,我想我這輩子都掌握不了了。愛德還很聰明地修改了 HEQS, 如果你使用HEQS 既要拓展、還要計算一個金融模型的時候,那麼你就可以用它來生成一個C語言程式,從而可以用快上好幾倍的速度計算你的方程式。 程式設計技術對愛德來說好像是與生俱來的一樣,而我從來就沒有過這樣的感覺。愛德在這方面的熟練程度弄得我很沮喪。1984 年年末的某個時候,他離開貝爾加入 Asymetrix 公司,這是一家保羅•艾倫建立的位於西雅圖的公司。而在貝爾剩下的日子裡,我就成為了我們成功的犧牲品——我經常不得不埋身於他設計的編碼裡,對殘留在那些我從來就沒寫過、也從來沒完全搞懂過的演算法規則裡面的漏洞修修補補,一次就要花上好幾天工夫。 也就是差不多這個時期,當看見愛德編寫和設計編碼時,我意識到有多少物理學冢誤解了學術界以外的工作和事業的性質。物理學家傾向於認為他們是如此聰明,以至於如果屈尊去“外面的世界”工作,他們的天分能讓他們只需朝九晚五工作,也仍然可以超過同事。但是,在任何一份非學術的工作上,總是有這樣的人存在,對於他們來說,一份特定的工作不是一種妥協,而是一份激情,是一種投人,是需要認真對待的。是他們,而不是那些聰明但漫無目的混日子的物理學家,給“優秀”確立了標準。 設計 HEQS 的結果令我很滿意。1984年的時候,克里斯•馮維克和我最終合寫了一篇關於 HEOS的文章,發表在軟體期刊《程式設計:實踐與體驗》 上。我為又一次發表文章而不是毀滅,為正在“摘科學研究”而感到欣喜著狂。直到現在,有時在網頁上看見偶爾有人引用這篇文章,我還能感到一陣興奮,儘管不用多想也可以知道,這些引用中的大部分是因為克里斯一直在從事非過程性語言研究的緣故。最近我很高興地發現朗訊,也就是貝爾實驗室的後繼者,還在他們的網站(https://www.lucentssg.com/hegs.html)上 101
寬客人生| My Life as A Quant 以89美元的價格銷售HEQS。但是,在這個 Mathematica 和 Excel 的時代, 我很難想象還會有誰會去買它。 1980~1985年,我在商業分析系統中心幾乎沒學到什麼關於商業或是金融的東西。相反的是,我在那裡學到的軟體設計技術給我奠定了一個很好的基礎,也為我後來1987年在高盛設計固定收益金融模型中的很多內容做下了鋪墊。 儘管我在那兒接受了良好的培訓,但我在貝爾還是總感到受委屈,有一種屈就的感覺。當我在貝爾工作了僅僅一個月的時候,我帶著約書亞, 他那時還只有3歲,去我們還住著的洛克菲勒大學的草坪上玩。他喜歡把鞋脫掉,光著腳在草地上奔跑。他正玩著的時候,我坐在那裡默默地想我都在做些什麼。突然他跑過來,盯著我問道:“爸爸,你在傷心什麼?”在那時我就知道了,我每天早晚往來於家和貝爾之間只是暫時的。我只不過不知道,我要怎樣來結束這段旅途。 102
中華爾街在超轉寬客人生| My Life as A Quant 怎樣走出貝爾?這是5年來每天都在困擾我的問題。而且,我每天回到家以後就變成怨夫,絮絮叨叨地埋怨我的困境,給任何一個願意聽我的《出埃及記》的人平添苦惱,這些故事都是講我如何離開富饒的學術界的土地,卻來到了法老統治下的商業分析系統中心這塊地方。我詳細描述我所承受的巨大痛苦,謀劃著如何獲得自由。每一天都是《失落的天堂》 和《尋找逝去的歲月》。我知道我把我的妻子折騰得都快瘋掉了。 當我帶著三歲大的約書亞參加中心舉辦的聖誕節聚會時,我擔心他會我的餡——我在家裡有好多個晚上,在他聽力所及範圍內,用輕蔑的口吻描述我對上司和同事的不滿之情,我害怕當我介紹他們時他會聽出某個人的名字,然後重複我說過的話。在開車前往默裡山的那天早上,我提醒約書亞不要重複我說過的關於任何人的任何話。當然,約書亞沒讓我難堪。 在那次聚會上,馬克•哥尼斯伯格跟我談起一次約會,有人帶他去看了場他非常討厭的電影。我們都知道我倆對於電影的口味正好相反,於是他對劇情講述得越多,我就越肯定我會喜歡這部影片。這場聚會一結束, 我就趕緊開車回紐約去看這部電影- —路易•馬勒的《與安德雷吃晚餐》, 裡面有安德雷 •格雷戈裡和華萊士•肖恩。餐桌上那場無拘無束地對於成就感的神秘追求與日常生活中普通的歡樂與失望之間反差的對話,引起了我深深的共鳴。它讓我想起了當年我頭一次想當一名物理學家時曾有過的那種關於對未來的憧憬的感受;它也讓我想起了我在玻爾得的法界學校課堂上打坐時曾感覺到的對幸福的體驗。就在那個12月的下午,《與安德雷吃晚餐》用一種巨大的希望和救贖感浸潤我的全部身心,我感到了一種提升。這部影片令我回味了相當長時間,足有差不多一星期才慢慢淡去。 兩個月後,為了弄清這部影片給我帶來的絕佳感覺是否純屬偶然,我又去看了一遍這部電影,這次感覺更好,儘管只持續了幾天。馬勒、格雷戈裡 104
8|中轉1 和肖恩把那種介乎希望與失望之間的中間感覺刻畫得非常出色。幾年以前,我還看過他們的《泛雅在42街口》,第一次看和第二次觀都同樣令人感動。 我很天真,為“向錢看”感到有損身份,而正是“向錢看”支撐著我們在貝爾從事著被認為應該乾的所有工作。儘管我在物理領域的那段歲月也經歷了榮辱興衰,但我是出於熱愛而工作,而現在我是為了錢工作。儘管貝爾實驗室1985 年位列美國最值得為之工作的100個地方之一,但它在我自己列出的曾工作過的最糟糕單位名單中位居榜首。我認為我的宿命就是,當我在嚴峻的現實中摔打過後,我那關於生活和工作的毫無意義的幻想被痛苦地從身上打磨掉了。直到後來,當這一過程終結,我義能夠在高盛享受生活了。如果我當初研究生畢業後就直接進人高盛工作,那麼我很可能會因為高盛那種對金錢的強烈關注,而像痛恨貝爾一樣痛恨高盛。 與此同時,我還為改變我的生活所困擾。商業分析系統中心有一個軟件研究小組,裡面有一群傑出的程式設計師。戴夫•科恩在我手下做過好幾個職位,當時忙於設計現在很流行的 UNIX 指令處理程式 Korn shell。艾姆登•甘斯納和喬納森•肖皮羅在一般意義上的目標導向型程式設計方法上, 特別是在斯特朗斯特魯普的C++語言環境上,都滿懷熱忱地做出過貢獻。 我試圖調到他們的小組裡,但唐斯堅持認為我的想法太狹隘了,以為好像只有跟他們在一起才能搞感興趣的研究。也許,幸好是這樣吧。儘管我羨慕艾姆登那冷靜而且不受外界影響的工作方式,但卻怎樣也無法效仿。他在除錯程式時從來不向別人尋求幫助,但他會讀遍任何一本有用的使用手冊,然後耐心地深人研究,一直到努力把問題解決掉為止。而我,碰到難題時,一有機會就會跑去尋求幫助。 甚至當我的經理慷慨允許我每週有一天時間可以在家透過遠端終端工作時,我也只能為自己不敢放開手腳而生氣。我對學術生活還心存渴望, 考慮著掉頭往回走,琢磨著怎樣才能再跟著洛克菲勒大學的巴齊•拜格或是哥倫比亞大學的諾曼•克萊斯特,讀一個長期的物理學博士後。 接著在1983年底,華爾街開始向我招手。 對我未來生活的第一個提示是偶爾從紐約市獵頭公司那裡打來的電話。 很快,我們都知道了他們傳說中的名字——史密斯 •漢雷公司的喬裡•馬 105