第181章 他的思維遠遠領先於常人
第181章 他的思維遠遠領先於常人
陳杰森的接待工作,在科大和外事處的協調下很快敲定了下來。
五月中旬,陳杰森在計算所完成了第一階段的學術交流,便乘火車南下,直奔皖省省城。
火車到站那天,皖省外事辦派了車,科大校辦也去了人。
下午在涉外賓館安頓好之後,第二天一早,陳杰森乘車直奔科大。
五月的省城,法桐樹上的葉子已經濃得能遮住半邊天了。
陳杰森坐在車裡,透過車窗望著街道兩旁灰撲撲的蘇式建築和偶爾掠過的小汽車,心裡想著昨晚父親在越洋電話里說的話。
「合肥?」父親在電話那頭回憶道,「我四十年代去過一次皖省省城,不過那時候皖省省城還是在安慶,合肥還只是個小縣城哩。」
「一晃半個世紀過去了————」父親在電話那頭有些恍惚:「傑森,你替爸爸好好看看。」
本章節來源於ʂƮօ55.ƈօʍ
陳杰森想著,車在校門前停下。
早已等候在此的校辦人員快步迎上來。
「陳博士,歡迎來到科大!」
陳杰森下車,與眾人一一握手。
他用略帶南方口音的中文說道:「謝謝各位。能來到父親的故土,又能見到久仰的陸懷民同學,這一趟對我意義非凡。」
科大接待人員笑著道:「陸懷民同學在實驗室等著呢。精儀系師生幾天為了迎接您,特意把工作做了調整。」
「我很期待。」
「陳博士,這邊請。」校辦的同志側身引路。
一行人穿過校園。
陳杰森一路上左顧右盼,目光卻不自覺地掃過校園裡那些穿著藍布衫、軍便裝的學生們。
他在美國看慣了牛仔褲和T恤,每次在中國見到這些樸素到近乎單調的衣著,心裡總會有些微妙的複雜。
精儀系樓下,幾個人已經提前候著了。
出面的是系副主任錢振華,旁邊站著沈一鳴教授。另一邊則站著陸懷民。
「陳博士,歡迎歡迎!」錢振華大步迎上來,雙手握住陳杰森的手,「我是精儀系副主任錢振華。這位是沈一鳴教授,陸懷民的導師。陸懷民你肯定認識,就不用我介紹了。」
陳杰森與眾人一一握手,輪到陸懷民時,他上下打量了一番,感慨道:「陸先生,比照片上還年輕。您關於開源的構想和實踐,令我和我的導師嘆為觀止。這次來,他特意囑咐我,一定要當面向你轉達致意。」
「陳博士過獎了。」陸懷民與他握了手:「馬丁·哈羅德教授在這個領域是真正的前沿學者。您能來交流,對我們的研究也是很好的促進。」
寒暄過後,錢振華引著陳杰森往樓里走:「陳博士,先看看我們的實驗室吧。條件簡陋,您多擔待。」
陸懷民課題組的實驗室在三樓,是一間朝北的大實驗室。
靠牆立著幾台DJS—130終端,地上拖著粗重的電纜,幾台繪圖儀並排放在長條桌上,旁邊堆著半人高的技術資料和圖紙。
陳杰森走進實驗室,腳步不自覺地放慢了。
他在MIT的實驗室,終端是接在PDP—11上的,有圖形顯示器,有磁碟驅動器,有一整間屋子的空調把溫度控制在二十度。
而眼前這間實驗室,牆上糊著舊報紙,窗戶是那種老式的木框窗,插銷都生了鏽。
唯一的一台空調是國產的窗機,嗡嗡地響著,出風口掛著一根紅布條,已經被吹得有些微微褪了色。
眼前這間實驗室的條件,放在美國的任何一所社區學院都顯得寒磣。
可這卻已經是中國最頂級的高校之一。
而且在這樣的條件下,這幫人做出了銀河。
他心裡這麼想著,目光掃過實驗室里正在埋頭幹活的學生們。
課題組的學生們已經提前得到了通知,知道今天有MIT的學者來參觀,此時都放下手頭的工作,禮貌地站起身來。
陸懷民側身,為陳杰森一一介紹:「這個是我目前在做的一個課題的實驗室,他們都是課題組的成員。」
「這位是彭遠征,我們計算機系的研究生,研究方向是編譯技術。鄭國光,也是計算機系的研究生,研究方向是數值計算。李雪梅和周偉,精密機械系的研究生,研究方向是精密加工工藝。還有陳青穗,目前還是本科一年級,是少年班的學生,今年才十五歲————」
陳杰森一一和他們握手,他注意到,這些人的年齡跨度似乎很大。
彭遠征看著有三十出頭了,而那個叫陳青穗的小姑娘,才十五歲。
陸懷民正打算介紹一下課題組的情況,陳杰森左右看了看,目光落在了彭遠征面前的那台終端上。
屏幕上,一屏密密麻麻的代碼正停在那裡。
「這是————」陳杰森上前一步,盯著那屏幕看了幾秒,忽然有些感興趣地轉過頭,「這是後處理編譯器的語法分析模塊?」
彭遠征點了點頭:「是的。正在寫遞歸下降的解析器,目前還在做表達式處理的部分。」
陳杰森又看了一會兒那代碼,忽然問道:「為什麼不直接用YACC這類自動生成工具?手寫遞歸下降雖然靈活,但效率上一—」
他話沒說完,彭遠征的表情卻有些茫然。
「YACC?」彭遠征下意識地重複了一遍這個詞,然後坦誠地搖了搖頭:「陳博士,這個我沒接觸過。」
氣氛一下子有些微妙起來。
陳杰森有些意外。
YACC是AT&T貝爾實驗室在七十年代中期開發的工具,在北美學術界和工業界已經很普及了。
他沒想到在國內,連彭遠征這樣頂尖高校的研究生都完全沒有聽說過。
這樣一來,他很快意識到自己剛才的話有些不妥,正要開口解釋,旁邊的陸懷民卻先接了話。
「陳博士,YACC的原理我們倒是不陌生,不過我們權衡之後,還是選擇了手寫遞歸下降。」陸懷民笑著說道:「YACC本質上是LALR(1)文法解析器生成器。它的優勢很明顯,快速、自動化,把語法規則寫進去就能自動生成代碼,省時省力。在通用場景下,它確實是個好工具。」
此言一出,大伙兒都有些驚訝地看向陸懷民。
特別是彭遠征和鄭國光,震驚之色更是溢於言表,他們完全沒有聽說過的工具,陸懷民居然了如指掌?
陸懷民繼續解釋道:「不過YACC的局限也很明確。」
他說著,走到實驗室的小黑板前,拿起一支粉筆。
「一是生成的代碼可讀性差,調試困難。自動生成的解析器,狀態機展開之後動輒幾千行,出了問題很難找到根源。二是靈活性不足,YACC適合處理標準的上下文無關文法,但對於我們這種工程應用,有很多非標準的需求。」
他在黑板上畫了一個簡單的框圖,一邊畫一邊說。
「就拿我們的後處理編譯器來說。數控工具機的G代碼,看起來像標準指令,實際上每家廠商都有自己的一套方言。西門子的SINUMERIK系列用一種格式,法那科的用另一種格式————有些指令甚至不是嚴格意義上的程式語言。」
「如果用YACC,每適配一套數控系統的G代碼方言,就要重新寫一套文法規則,重新生成一遍代碼。而且一旦遇到那些非標準的指令,YACC的LALR框架就力不從心了。」
「你說得沒錯。」陳杰森忽然由衷地笑了:「YACC確實有這些局限。我們用YACC,很多時候也要花額外的時間來繞過它的框架限制。但很少有人能在項目初期就想得這麼清楚,多數人都是用上了才發現不對,然後再回頭打補丁,最後代碼堆得就很亂。」
他看著陸懷民,心中也不由得感嘆,對方確實不是浪的虛名之輩。
「陸先生,」陳杰森繼續感興趣地問道,「你們這個後處理編譯器,目標是要適配多少種數控系統?」
「目前國內常見的,大概有七八種。西門子的SINUMERIK系列、法那科的FANUC系列、東德和蘇聯的幾套老系統,再加上國內幾家工具機廠自己搞的簡易數控。每一種的G代碼方言都不一樣,有的甚至連語法結構都完全不同。」
他頓了頓,走到彭遠征的終端前,指著屏幕上那幾行代碼說:「但我們不打算為每一種方言單獨寫一套編譯器。那樣做,十種方言就要維護十套代碼,任何一個底層算法改了,十套代碼全得跟著動。這樣的工程對任何開發者來說都是是噩夢。」
陳杰森微微皺起眉頭:「那你們打算怎麼做?」
「分層編譯。」陸懷民拿起粉筆,在黑板上又畫了兩層框圖:「前端統一解析,生成一種中間表示;後端根據目標工具機的G代碼方言,把中間表示展開成具體的指令。前端不變,後端可插拔。加一種新方言,只需要寫一個新的後端適配器。」
這個思路說出來,陳杰森下意識地點了點頭。
分層編譯這個概念,在國外學術界也是七十年代中後期才逐漸成熟起來的。
UNIX系統里的可移植C編譯器(PCC)是最早實踐這一思路的項目之一,但在嵌入式編譯器、尤其是工業控制領域,分層編譯的應用還遠未普及。
而眼前這個陸懷民,不僅把這個思路想透了,而且已經開始在工程實踐中落地了。
他在思維上確實遠遠超過了常人,甚至遠遠超過了他在BJ見到的「銀河」的另一個開發者趙遠航。
難怪他能提出「開源社區」的框架並將之付諸實踐。
「中間表示層————」陳杰森繼續追問:「你們準備怎麼定義?是用三地址碼,還是用抽象語法樹?」
「抽象語法樹。」陸懷民又在黑板上畫了一個樹狀結構:「三地址碼適合通用計算,但對於數控加工這種場景,很多語義信息是嵌套的。比如一個循環指令————」
陸懷民舉了一個具體的例子,順手在黑板上寫了幾行偽代碼,解釋循環體內刀位軌跡如何打包成子樹,又如何在後端展開。
彭遠征在旁邊聽著,不由得張了張嘴。
那天面試的時候,陸懷民跟他提過「分層編譯」和「中間表示」,但當時只是引了個話頭,沒來得及展開。
現在聽陸懷民把這一整套思路完整地講出來,他才真正意識到,陸懷民肚子裡的貨,遠比他想像的多。
而自己那天自以為「編譯領域不輸任何人」的想法,此刻想來,多少有些可笑。
陳杰森聽得也是連連點頭。
他不是沒見過聰明的學生。
MIT的本科生里,十九歲修完所有計算機核心課程、二十歲發頂會論文的天才,他也見過好幾個。
但陸懷民是見過的天才中尤為特殊也尤為出色的一個。
他是在一片近乎荒蕪的土地上,自己定義問題,自己搭建框架,自己帶著一幫人幹活。
而且他做出的判斷,放在MIT的實驗室里,也是經得起推敲的。
不過經過剛剛簡單的交流,在陳杰森的判斷中,陸懷民最恐怖的,還是他思維的領先程度,在這方面,他遠遠超越了常人。
「陸先生,」陳杰森感慨道:「你知道嗎,在來中國之前,我確實有一個疑問。我一直在想,你們是怎麼在這樣艱苦的條件下做出銀河」系統的。今天看了你們的實驗室,聽了你們的技術方案,我算明白了。」
他頓了頓,忽然笑了:「陸先生,你們是在追趕。但同時也是在選擇一條更適合自己的路。這比盲目照搬要高明得多。」
「陳博士過譽了。我們只是被實際問題逼到了牆角,逼出了這些笨辦法。MIT
在CAD/CAM領域的積累,才是真正值得我們學習的前沿。」
「不,這可不是笨辦法。」陳杰森搖搖頭,忽然像想起了什麼似的,看了一眼手錶,又看向陸懷民,「陸先生,其實我這次來,除了參觀交流之外,還有一些想法想和你單獨聊聊。」
「關於開源社區的運作機制,關於你們那套技術標準委員會的治理架構,馬丁教授和我討論過很多次。」
「教授說,你們在開源模式和工程實踐上的探索,給了他很大的啟發。他也一直在思考,MIT在這些領域積累的東西,能不能用一種更有意義的方式發揮作用。他希望,我這次來,能代表他和你們取得聯繫並建立一些合作。」
他頓了頓:「具體的事情有些複雜,一兩句話說不清楚。如果方便的話,下午或者晚上,我們找個安靜的地方單獨聊聊。我相信,這個合作一旦達成,對你們接下來的研究一定會有實實在在的幫助。」
陸懷民微微一怔,隨即點了點頭:「當然。我也很期待和陳博士深入交流。」
錢振華在旁邊一直沒怎麼說話,此時見時機正好,連忙笑著接口:「那就這麼安排。下午我們在系裡騰一間小會議室,你們二位好好聊聊。」
>