一般人若懷有太空夢,通常不容易實現,除非很有錢。二月初曾經來臺推廣開放源碼的Ubuntu創辦人馬克(Mark Shuttleworth)已經飛上太空,而根據四月初的新聞,微軟研究院前首席架構師西蒙伊(Charles Simonyi),也與俄羅斯聯邦太空總署預約了參訪俄羅斯國際太空站七天的機票及門票,這趟太空之旅花費兩千萬美元,預計明天三月升空。
西蒙伊對電腦軟體的貢獻良多,包括Bravo、「匈牙利命名法」(Hungarian Notation)、Word及Excel等等。祖國是匈牙利的西蒙伊,跟電腦的淵源根本就像電影裡的情節:他在高中時兼了一份夜間守衛的工作,負責看管電腦實驗室,也因而讓他有機會拜實驗室的工程師為師;更厲害的是當他高中畢業之時,已經能寫出編譯器,而且還賣給了政府部門。
西蒙伊1968年移民美國之後,分別取得加州大學柏克萊分校的學士學位(主修工程數學),和史丹福大學電腦科學博士學位(並於2001年獲頒匈牙利佩啟市大學的榮譽博士學位),並且於1972年進入知名的全錄帕洛奧圖研究中心(Palo Alto Research Center,PARC)擔任研究工作。西蒙伊堪稱是電腦軟體界的傳奇,但當時的PARC匯集了更多電腦科學的傑出人物,這些人日後也都成為傳奇。西蒙伊在PARC與同事藍普生(Butler Lampson),共同創造了第一個所見即所得的文書編輯程式Bravo(藍普生也是軟體界的傑出傳奇人物,80年代離開PARC進入迪吉多,後來進入微軟研究院工作)。
你可能聽過或用過(或正在使用)「匈牙利命名法」,這是一種用在程式設計的變數命名原則;簡單來說,就是先以一到三個表示變數「類型」(kind)的小寫字母作為變數字首,再接上首字母大寫的變數名稱,目的是看到變數的同時,也能知道變數的種類。匈牙利命名法源自西蒙伊的論文,因為西蒙伊原籍匈牙利,故而得名(也有一說,是經此法命名的變數,看起來像是匈牙利文)。
就算你沒有用過匈牙利命名法,也不曾用過Bravo,但你八成用過西蒙伊所創造的Word。有了Bravo的開發經驗,西蒙伊自然成為微軟挖角的對象。1981年離開PARC進入微軟,西蒙伊主管Word、Excel以及Excel的前身Multiplan等應用程式的開發團隊,除了建立了微軟的程式開發人員的管理體系,也讓匈牙利命名法成為微軟內部的規範。
根據周思博(Joel Soplsky)的文章(Making Wrong Code Look Wrong),微軟內部將西蒙伊匈牙利命名法的原始概念稱為「匈牙利應用命名法」(Apps Hungarian),因為這用於Word和Excel等應用程式部門,而匈牙利應用命名法也的確非常有用,尤其當時C語言是主流,編譯器也未能提供實用的資料型別。但是,後來有人誤解了匈牙利命名法的原意,認為字首應該是「資料型別」(雖然西蒙伊是用type,但他的意思並非data type),因而造救出實質上截然不同的「匈牙利系統命名法」(Systems Hungarian),並且成為Windows程式設計文件的標準,再加上Windows程式設計聖經的宣導,匈牙利系統命名法普遍流傳。但是,反對匈牙利命名法的大有人在,尤其很多人不是很能理解這種變數命名方式的「哲學」;甚至微軟在.NET 1.0時也不建議使用匈牙利命名法了,尤其.NET已經具備強制型別檢查,而Visual Studio也提供了IntelliSense的功能。
除了匈牙利命名法,西蒙伊在微軟的開發團隊提出了「主程式設計師」(master programmer)的概念,這個方式基本上是讓主程式設計師負責建立整個程式的基本結構,並訂出各個函式的原型,而在主程式設計師底下有一組程式員負責實作。這種方式理論上能解決「人月神話」的問題,但實際上效果並不如預期顯著。主程式設計師也演變成負責蒐集需求、設計產品、撰寫規格、協調行銷、編寫文件、測試程式、處理雜務的「程式經理」(program manager);程式經理底下還是有程式員負責以程式實作出產品。
西蒙伊在微軟的地位很高。1991年他轉入微軟研究院思索intentional programming的概念,2000年獲頒微軟「傑出工程師」(Distinguished Engineers)的榮譽。2002年離開微軟,與另一位夥伴創辦了Intentional軟體公司,這家公司是以推廣intentional programming的概念為目的,西蒙伊認為這種方式就能讓普通人開發軟體。
生於1948年的西蒙伊除了懷抱太空飛行夢想,也頗具善心。他捐助牛津大學成立以自己為名的講座,也捐了五千萬美元成立「查理斯‧西蒙伊藝術與科學基金會」(Charles Simonyi Fund for Arts and Sciences),以及許多西雅圖當地的藝文、科學、教育計畫。
參考資料
2007年8月27日 星期一
西蒙伊實現太空夢
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言