Anders Hejlsberg(安德斯-海森博格) 坐在自己的辦公室,雙眼直直的盯著前方。他要做一個決定,決定自己未來的命運和理想。這是1996年一個普通的下午,幾個小時前,他剛與比爾-蓋茨結(jié)束了一次愉快的午餐,同為軟件界的精英,他們相談甚歡,蓋茨給他開出三百萬以上的年薪和數(shù)萬股的微軟股票。這是一個誘人的條件,但更重要的是,蓋茨許諾他可以有充分的時間和資源投身自己感興趣的技術(shù)方向。
Anders在猶豫,他是否真的要離開已經(jīng)工作了十三年的Borland。從Turbo Pascal、SideKick再到Delphi,Borland是Anders輝煌的起點,他在這里成為人們敬仰的軟件大師,并一手鑄就了Borland傳奇;在Borland,Anders有太多美好的回憶和未完成的理想。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Anders Hejlsberg
然而,隨著1994年P(guān)hilippe Kahn(Borland公司創(chuàng)始人)的離去,Anders漸漸失去了最強(qiáng)有力的支援;Borland的新任CEO Delbert Yocam希望加強(qiáng)Delphi在IDE市場的王者地位,因為Delphi才是Borland最主要的財務(wù)來源;但Anders已經(jīng)看到Java和虛擬機(jī)語言的潛力,與其在已有的產(chǎn)品上徘徊不前,他更想專注于新產(chǎn)品Borland Java(后來的JBuilder)的研發(fā);Borland的管理層的技術(shù)短視和Anders的技術(shù)追求顯得如此格格不入;Anders回憶那段經(jīng)歷時曾說“那時,我感覺自己并不是不可缺少的人”。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?風(fēng)靡一時的Turbo Pascal
Borland的內(nèi)部矛盾很快引起了微軟的注意,Anders在開發(fā)界的名頭和對技術(shù)的理解使微軟急不可耐,甚至對Borland使用了最直接的攻擊。微軟人力部門派遣加長型的大轎車到Borland大門口找Anders吃飯,并開出了年薪百萬美元以上的條件;在苦等無應(yīng)、按捺不住之下,很快就再次聯(lián)系A(chǔ)nders,這次給出的條件是兩百萬美元,但依然沒能打動Anders。微軟開始思索金錢以外的東西。第三次,比爾-蓋茨親自出馬,除了開出三百萬的價碼,還給Anders完成技術(shù)理想的許諾。
經(jīng)過短暫的猶豫,Anders完成了自己的決定,這個決定足以像Turbo Pascal和Delphi那樣再次振動整個開發(fā)界;因為這個決定,促成了VJ++、C#和微軟.NET戰(zhàn)略的誕生。
Visual J++
1996年,Anders正式加盟微軟,成為Visual J++和WFC(Windows基礎(chǔ)類庫)的架構(gòu)師。他的第一個項目與其在Borland的技術(shù)理想相當(dāng)接近,在微軟知名的Visual Studio平臺上打造一個基于虛擬機(jī)的語言和像Delphi一樣徹底解放程序員生產(chǎn)力的IDE。這就是J++語言和VJ++開發(fā)工具。我們知道,編程語言和IDE的開發(fā)相當(dāng)考驗一個架構(gòu)師的功力,作為用匯編打造Turbo Pascal和親手開發(fā)Delphi的軟件大師(自Anders離開Borland后,Delphi的底層架構(gòu)在三年內(nèi)一直無人可以修改),Anders不負(fù)眾望,微軟很快在新版Visual Studio 6.0版本中引入了J++;微軟平臺的程序員找到了擊敗Java陣營的工具。
在相當(dāng)一段時間里,J++成為微軟抗衡Java的最有力武器;同時,由于Anders對Java的一些想法,改進(jìn)后的J++甚至吸引了一大批Java程序員。后來由于微軟在Java開發(fā)工具授權(quán)問題上和Sun公司的糾紛以及Borland公司對微軟大張旗鼓的挖角的報復(fù),迫使微軟停止了Visual J++的后續(xù)開發(fā)。在Borland對微軟和Anders個人的起訴書上寫有這樣一句話:“Anders正在幫助微軟開發(fā)Delphi for Java”。
作為Anders在微軟的第一個產(chǎn)品,J++曾一度取得成功;但最后的糾紛使Anders意識到,商業(yè)環(huán)境的變化已經(jīng)無法再像當(dāng)年做Pascal那樣隨意,想要完成自己的夢想,必須幫助微軟打造自己的技術(shù)平臺和編程語言,而這門語言不是C++,因為他不想受C++標(biāo)準(zhǔn)委員會的限制;這門語言也不是Java,因為他看到Java不完美的地方和商業(yè)紛爭;Anders要的,是運行在獨立平臺上的一門完美語言 。
.NET與C#
VJ++之后,Anders作為.NET概念的發(fā)起人之一,被任命為微軟.NET的首席架構(gòu)師主持開發(fā)工作。眾所周知,.NET框架最初是個模糊的概念,即使是推出.NET戰(zhàn)略一年之后,開發(fā)者依然無法看清.NET的技術(shù)愿景。其實,Anders也在不斷的思考,從Turbo Pascal到Delphi再到現(xiàn)在的.NET,所有這一切都是致力于對開發(fā)者生產(chǎn)力的解放;但在微軟,他要做的是平衡技術(shù)理想和商業(yè)價值的關(guān)系;還好,比爾蓋茨履行了他當(dāng)年的諾言,Anders可以按照他的想法打造.NET;程序員出身的蓋茨相信,好的技術(shù)必然會帶來好的商業(yè)價值。
在經(jīng)過不斷的反思和討論之后,Anders確定了.NET未來的走向:一個致力于敏捷軟件開發(fā)、快速應(yīng)用開發(fā)、平臺無關(guān)性和網(wǎng)絡(luò)透明化的軟件開發(fā)平臺。.NET將是微軟為下一個十年對服務(wù)器和桌面型軟件工程邁出的第一步。它應(yīng)該包含許多有助于互聯(lián)網(wǎng)和內(nèi)部網(wǎng)應(yīng)用迅捷開發(fā)的技術(shù)。
這就是我們現(xiàn)在所看到的.NET,更重要的是,為了實現(xiàn)這一平臺,Anders需要一門新的編程語言,它既要像Java一樣通過虛擬機(jī)實現(xiàn)平臺的跨越,還要避免一些開發(fā)者普遍抱怨的Java語言存在的缺點;同時,這門語言的革新將使得程序員可以同時進(jìn)行Windows應(yīng)用軟件和網(wǎng)絡(luò)應(yīng)用軟件以及組件和服務(wù)的開發(fā)。這門語言就是C#。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.NET已成為微軟的基礎(chǔ)技術(shù)架構(gòu)
Anders曾笑稱自己“把上世紀(jì)末和本世紀(jì)初的全部獻(xiàn)給了C#”。作為C#的架構(gòu)師,Anders對其傾注了自己的全部精力。2003年,在Channle 9的一次訪談中,《Java編程思想》的作者Bruce Eckel向Anders證實一段傳聞:“我聽說C#是一個工程師小組在一個屋子里設(shè)計出來的? ”,Anders苦笑作答:“是的。4年來,我們一直呆在這個屋子里。現(xiàn)在,每周一、三、五,我們?nèi)匀辉谶@里會面。”
我們可以想象Anders為使C#只允許單一繼承,同時保證一個類可以實現(xiàn)多個接口功能的苦苦思索;也可以想象他為C#支持完整反射的反復(fù)論證;這一切都是為了他的技術(shù)理想,而這個理想自大學(xué)時代開發(fā)Turbo Pascal時就未曾變過。
現(xiàn)在,我們已經(jīng)看到了.NET和C#的成功,這不僅體現(xiàn)在每期的編程語言排行榜上,在Windows平臺和眾多.NET開發(fā)的網(wǎng)站上,.NET和C#現(xiàn)在已經(jīng)無處不在。在Delphi的輝煌過后,Anders正在用自己的理想續(xù)寫新的技術(shù)傳奇。