版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
計算機人物傳記(一)美媒披露世界最早一批女性電腦高手往事她們60年前開始玩電腦,曾為世界上第一臺計算機編程序,也是世界上第一批“黑客”,曾為世界第一臺電子計算機ENIAC編寫過程序。
據(jù)美國媒體5日報道,在電腦時代,許多老年人不甘落后,然而鮮為人知的是,在美國仍然生活著幾名80多歲的“奶奶級”電腦高手:她們曾在二戰(zhàn)中幫助軍方精確地計算出炮彈發(fā)射軌跡,曾為世界上第一臺電子計算機編寫程序,還是世界上第一批“黑客”.半個多世紀來,人們對這批“奶奶級”電腦高手毫無所知,直到日前,她們的故事才首次浮出水面,并正在被拍成一部名叫《隱形電腦:ENIAC程序師的故事》的紀錄片.
紀錄片制片人(左)和4名“奶奶級”電腦高手在一起,她們分別是貝蒂(左二)、馬琳(左三)、凱瑟琳(右一),前排坐著的貝蒂·辛德·霍伯頓目前也已去世.
孫子炫耀牽出傳奇故事
現(xiàn)年83歲的美國新澤西州老太太貝蒂·巴蒂克是5個孫子的祖母,喜歡上網(wǎng)打橋牌.然而鮮為人知的是,她其實是世界上最早的一批女性電腦高手,她曾為世界上第一臺計算機編過程序.
對于這一點,即使十分熟悉貝蒂的朋友也不知道.不過,貝蒂的孫子亞歷克斯卻早就知道奶奶的秘密.一天,他在學(xué)校里向老師炫耀說,自己的奶奶是世界上最早的計算機先驅(qū)和電腦高手.當時,老師以為小孩子是在吹牛,還狠狠批評了他一頓.為了還兒子一個誠實的名聲,亞歷克斯的父母親自到學(xué)校向那名教師解釋了一切.
幫助軍方計算彈道軌跡
貝蒂的傳奇故事隨即引起了歷史學(xué)家的關(guān)注.
據(jù)悉,貝蒂和計算機打上交道可以說是陰差陽錯.1945年,當時20歲的貝蒂還是美國密蘇里州西北教師學(xué)院一名數(shù)學(xué)專業(yè)的女大學(xué)生.隨著二戰(zhàn)接近尾聲,美國陸軍由于缺少男數(shù)學(xué)家計算彈道發(fā)射軌跡,開始在賓夕法尼亞州大學(xué)發(fā)起了一項絕密的“阿伯丁試驗場”行動,招募女性成為計算彈道軌跡的“人體計算機”.
貝蒂成功地被美國陸軍錄用,成了一名“軍中數(shù)學(xué)家”,幫助陸軍精確地計算各種武器的彈道軌線.與貝蒂一同被招募的還有另外5名女學(xué)生.
為首臺計算機編寫程序
二戰(zhàn)結(jié)束后,貝蒂繼續(xù)為軍方從事計算機研究工作.1946年,她和另外5名女伙伴開始為世界上第一臺電子計算機ENIAC編寫程序.1949年,她又幫助美國諾斯羅普航空公司為世界上第一臺商用計算機UNIVACI設(shè)計邏輯程序,這臺計算機在1951年首次被美國人口普查署投入了使用.
據(jù)悉,為世界上第一臺計算機ENIAC編寫程序堪稱是一項考驗身體毅力、創(chuàng)造力和耐力的嚴峻工作,因為這臺機器在當時來說實在太復(fù)雜了,它占地170平方米,重達30噸,包含了大約18000個電子管、70000個電阻器和至少3000多個開關(guān).1946年2月,美國陸軍軍械部和賓夕法尼亞大學(xué)莫爾學(xué)院聯(lián)合向世界宣布ENIAC的誕生,從此揭開了現(xiàn)代電子計算機發(fā)展和應(yīng)用的序幕.
世界上第一批“黑客”
據(jù)悉,貝蒂甚至還是世界上最早的女“電腦黑客”,因為在早期的計算機程序研究中,她和其他5名女同事還曾合法地“黑”過世界上首批計算機中的一臺,并將它轉(zhuǎn)變成了一臺程序儲存器,從而幫助計算機真正地邁入了數(shù)字化時代.
貝蒂婚后生有3名兒女,為了照顧3個孩子,幾年后她被迫離開了計算機研究行業(yè).
被美國計算機史遺忘
據(jù)悉,在6名最早的女性電腦高手中,目前只有3人還活在世上,都已是80多歲高齡.
幾十年來,貝蒂和她的5名女同事一直被美國計算機史所忽略和遺忘.在ENIAC計算機發(fā)明40周年慶祝典禮中,這些最早的先行者甚至沒有獲得邀請,唯一一名被邀請的女性還是作為另一名計算機專家的配偶出現(xiàn)的.
最近,貝蒂的故事正被拍成一部紀錄片.據(jù)紀錄片制片人、計算機歷史學(xué)家凱西·克萊曼說:“這部紀錄片不僅僅是講述她們的傳奇故事,而且對美國目前的計算機業(yè)具有重要意義,因為如今的美國計算機界仍是男性主宰的世界.而這幾位'奶奶級'電腦高手的事跡證明,女性在計算機研究上的能力絲毫不亞于男性.”丹尼斯·利奇·傳奇的締造者——C語言之父訪談DennisMRitchie(丹尼斯·里奇),C語言之父,UNIX之父。C語言是使用最廣泛的語言之一,可以說,C語言的誕生是現(xiàn)代程序語言革命的起點,是程序設(shè)計語言發(fā)展史中的一個里程碑。自C語言出現(xiàn)后,以C語言為根基的C++、Java和C#等面向?qū)ο笳Z言相繼誕生,并在各自領(lǐng)域大獲成功。但今天C語言依舊在系統(tǒng)編程、嵌入式編程等領(lǐng)域占據(jù)著統(tǒng)治地位。C語言,這種最有效、最通用的編程語言,就是他開發(fā)的,而這還是他在做另一個項目時的副產(chǎn)品。DennisRitchie還和KenThompson一起開發(fā)了Unix操作系統(tǒng),因此,他還是名副其實的UNIX之父。現(xiàn)年64歲的40年如一日在貝爾實驗室/朗訊科技公司(原AT&T實驗室)工作,現(xiàn)在是計算科學(xué)研究中心系統(tǒng)軟件研究部主任。從二十世紀七十年代起,他的工作得到了很多計算機組織的公認和表彰,如:美國計算機協(xié)會(ACM)授予的系統(tǒng)及語言杰出論文獎(1974);電氣和電子工程師協(xié)會(IEEE)的EmmanuelPiore獎(1982);貝爾實驗室特別人員獎(1983);美國計算機協(xié)會(ACM)的圖靈獎(1983);NEC公司的C&C基金獎(1989);電氣和電子工程師協(xié)會(IEEE)的優(yōu)秀獎?wù)?HammingMedal)(1990)等等。目前,DennisM.Ritchie正擔任貝爾實驗室/朗訊科技公司(原AT&T實驗室)下屬的計算科學(xué)研究中心系統(tǒng)軟件研究部的主任一職。該中心位于美國新澤西州的MurrayHill。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《C程序設(shè)計語言(TheCProgrammingLanguage)》,現(xiàn)在此書已翻譯成多種語言,成為C語言方面最權(quán)威的教材之一。大師的修煉之道在Ritchie的成長歷程中,有兩個人對他的影響最大,一個是他父親,而另一個是他的摯友,同為UNIX發(fā)明人的KenThompson。尤其是后者,我們可以從后面他對此問題的回答中得到印證。有人問過Dennis,他的偶像是誰,不論在計算機領(lǐng)域還是其他領(lǐng)域?他說:我不是在英雄熏陶下成長起來的。很顯然,對我職業(yè)生涯影響最大的人物是KenThompson。UNIX大部分是他的工作,同樣也是C語言的前輩,同樣Plan9系統(tǒng)的大部分工作也是他做的。并且在這其間Ken做了第一個計算機象棋大師。Ritchie生于1941年9月9日的紐約Bronxville,獲得學(xué)士學(xué)位并且獲得哈佛大學(xué)更高的學(xué)位,在那里以肄業(yè)生資格學(xué)習(xí)物理,以研究生資格學(xué)習(xí)應(yīng)用數(shù)學(xué)。也正是在這時候,一個偶然的機會改變了他一生的選擇。Ritchie這樣描述他的轉(zhuǎn)變,當他聽取一些非課程類的計算機講座后(大約1960年),開始對計算機著迷,并選擇了一學(xué)期正規(guī)(介紹性的)課程。第一部分是模擬計算機,后面是關(guān)于打孔卡片設(shè)備的,然后是關(guān)于真正的數(shù)字式計算機的,并為UnivacI號機準備了一個程序。當時他是一個主修物理學(xué)的學(xué)生,但是更加著迷于計算機處理的理論和實際問題。因此,他的畢業(yè)論文大部分是理論方面的(遞歸函數(shù)的層次),但是也開始投入更大精力到實踐方面。作為助教為同一個介紹性課程的后續(xù)版本工作了三年——不過那時計算機已經(jīng)成了IBM7049。1968年獲得數(shù)學(xué)博士,而論文正是上面的《遞歸函數(shù)的的層次》。1967年加入貝爾實驗室,他的父親AlistairE.Ritchie在那里有長時間的工作經(jīng)歷,他的父親對晶體管電路類的東西很有研究,正是由于父親的影響,也使得他走上了科學(xué)研究之路。不久后,加入了Multics項目,那時由貝爾實驗室、麻省理工學(xué)院和通用電器三家的合作項目。Ritchie負責多道處理機的BCPL語言和GE650的編譯器,它們都是屬于GECOS系統(tǒng)的。同樣的,他也寫了ALTRAN語言的代數(shù)編譯器,那是用于符號計算機的一種語言和系統(tǒng)。圖:Dennis在辦公室里后來,Ritchie先生協(xié)助KenThompson做UNIX操作系統(tǒng)。在UNIX系統(tǒng)基本就緒并且在教育、政府和商業(yè)中得到一定程度的應(yīng)用時,SteveJohnson和他(在Ken幫助下)開始將這個操作系統(tǒng)移植到Interdata8/32上,通過這種方式證明其輕便性,基于UNIX快速的傳播:貝爾實驗室的第7版已經(jīng)成為商業(yè)化UNIX的第五版和BSDUNIX的基礎(chǔ)。在UNIX發(fā)展之前,他向Thompson的B語言中加入數(shù)據(jù)類型和新的句法,就這樣產(chǎn)生了一種新語言——C,這也是他說Thompson是C語言的前輩的原因。C是便攜式UNIX的基礎(chǔ),并且它也在其它領(lǐng)域得到了廣泛應(yīng)用;計算機各方面的應(yīng)用程序和系統(tǒng)發(fā)展,從手持設(shè)備到巨型機,都有對它的應(yīng)用。有美國標準和國際標準的C語言,并且它是后來Stroustrup寫的C++語言的基礎(chǔ)。他從來沒有間斷過在計算機及其操作系統(tǒng)方面的工作。也因此,他所領(lǐng)導(dǎo)的研究小組開發(fā)出了Plan9和Inferno。Ritchie的業(yè)余生活也非常精彩,工作之余,他喜歡干什么呢?他這樣描述自己的生活,干好多糾纏不清的事,大部分是和計算機相關(guān)的。另一方面,也讀讀書看看報。另一項愛好是旅行,他到過很多地方,特別喜歡旅行,但每次時間都不是很長。他是一個戀家的人,因而有時旅行不久后感到相當疲乏,但喜歡回想旅行經(jīng)歷,這時就很希望能擠出時間在一個具有異國情調(diào)的地方待得時間長一點。曾有人問過下面的問題,對于一個人是如何涉足軟件工業(yè)領(lǐng)域的,不同人有不同的回答。是什么使Ritchie選擇了她,又是什么使得他在此領(lǐng)域如此瀟灑呢?他的回答很簡潔:興趣和好奇心!他說:我開始對于物理學(xué)比較感興趣,現(xiàn)在仍然是一個業(yè)余愛好者,試圖跟上物理學(xué)的一些新東西。早先上大學(xué)時包括讀研究生,我在計算機理論方面花了不少時間(如圖靈機、復(fù)雜性理論)。這其間,我對真實的電腦也非常著迷,著迷于所編即所見的經(jīng)歷:當你編出一個程序,便能立即看到你的思想的實現(xiàn)!所有的事情以一種非常有趣的方式聯(lián)系在了一起,也正是這一類的東西促使我進入這一領(lǐng)域。但不知什么原因,我沒有想過我正在這一領(lǐng)域做什么,即使時光倒流到1968年,我想也是如此。DMR先生對問題的描述非常簡潔。問:您的生活是怎樣和計算機聯(lián)系在一起的?DMR:在大學(xué)的時候我開始對它感興趣(大約1960-61年),我參加了一個非學(xué)術(shù)性的講座,關(guān)于大學(xué)里的UnivacI(通用自動計算機I號),然后就選修了一些課程。問:您覺得怎樣才是學(xué)編程的好方法?學(xué)習(xí)語言時一種好的工具是不是必需的?DMR:我想你最有必要做下面的事情——編一些小程序,然后編大一點的。問:怎樣才算是一種好的大學(xué)教育呢?尤其對計算科學(xué)來說。DMR:教育知識面最好要寬一些,不要僅僅局限于編程。即使是編程,最好多學(xué)幾種語言。我在大學(xué)時花了幾年時間學(xué)習(xí)物理和計算理論知識,現(xiàn)在我仍然對當時的選擇比較滿意。貝爾實驗室出大師圖:圖片看貝爾實驗室的發(fā)展C語言或Unix,任一項發(fā)明足以讓Dennis成為一代又一代程序員們的偶像。但當我們接觸這位偉人之后發(fā)現(xiàn),Dennis是一位非常低調(diào)的人,形成對照的是他在軟件業(yè)成就輝煌的40年。今天,當初與他同期加入貝爾實驗室的科學(xué)家中,多數(shù)人都已安享晚年或是自立門戶成為老板,而Dennis還是一如既往地在這里從事自己喜歡的研究工作,著書立說,潛心編程。在完成C語言和Unix兩座高峰后,他還帶領(lǐng)他的研究小組開發(fā)出了新一代操作系統(tǒng)Plan9和Inferno。C語言和UNIX的發(fā)展歷程,還讓我們從側(cè)面見證了業(yè)界流流傳很久的話題:貝爾實驗室出大師!而在談到貝爾實驗室成功的原因時,Dennis的評價只有四個字:管理得到!貝爾實驗室是全球馳名的研發(fā)機構(gòu),遍布全球16個國家,自1937年以來已經(jīng)產(chǎn)生出11位諾貝爾獎獲得者。貝爾實驗室的科學(xué)家和研究人員自1925年以來已經(jīng)獲得了40000多項發(fā)明,30000多項專利,平均每個工作日超過4項,是全球最多產(chǎn)的發(fā)明源泉之一。貝爾實驗室原名“貝爾實驗室”,1996年10月正式改稱“貝爾實驗室”(BellLabs),先后為AT&T和朗訊科技公司的研發(fā)機構(gòu),也是后者得以成立的支柱。它主要從事通信科技的基礎(chǔ)研究和技術(shù)發(fā)展工作,目前還從事通信系統(tǒng)和設(shè)備的研制工作。自1925年成立之時起,它一直是世界上規(guī)模最大、通信科技和控制等方面最先進、優(yōu)秀人才最集中和科技成果最突出的工業(yè)研究實驗室或研發(fā)機構(gòu)。它的工作人員從成立時的3600人和年經(jīng)費1200萬美元發(fā)展到1991年的29000人和37億美元。在1999年,雇員人數(shù)仍為25000人,年經(jīng)費36.78億美元,依然雄居世界研發(fā)機構(gòu)的榜首,被稱為“世界首要的研發(fā)機構(gòu)”和研發(fā)的“象牙之塔”。圖:KenThompson(左)和DennisRitchie從克林頓手中接地過國家技術(shù)獎?wù)聠枺涸贏T&T和Bell實驗室有這樣多的IT發(fā)明和著名人物,您覺得有什么秘決嗎?DMR:我覺得這得益于我們的管理,使得有足夠資金資助研究,更重要的是給予充足的時間和允許某些思想發(fā)展的時間。很幸運的另一點是,這里有一批天才人物的加入。還有一定程度的幸運在里面:1970年代,在計算機硬件條件(如小型機)發(fā)生了巨大的變化,這樣使得許多機構(gòu)可以順利地開展實驗,而這之前是很困難的。C語言是Dennis的得意這筆,對于這一筆,他看得非常平靜,當問到他對C語言的將來做一下預(yù)測時,他的回答十分簡潔:C語言正在被C++,也可能是Java所替代,也可能是更高級的腳本語言。當然,它在關(guān)于系統(tǒng)一類設(shè)計中還是相當強的工具。問:您能對IT的將來做一下預(yù)測嗎?將來我們最有可能用什么語言?DMR:我對預(yù)測不在行,但是很明顯,人們正在從象C語言之類的直接編譯型語言,轉(zhuǎn)換到注重解釋性的語言,象某些腳本語言。問:您對面向?qū)ο笫窃鯓永斫獾??它是不是一種好的可接受的編程思考方式?有沒有學(xué)習(xí)OO必須的有用的工具?DMR:我看過OO的東西但我現(xiàn)在還不是OO迷。這種思想是非常好的,也即是通過隱藏任務(wù)的執(zhí)行來定義界面,但是它可能做得有點過火;它以很難發(fā)現(xiàn)工作本質(zhì)的程序終結(jié);它的所有的東西就是界面。問:數(shù)學(xué)和計算機科學(xué)有什么關(guān)系嗎?DMR:我覺得計算機科學(xué)就是:包括工程學(xué)在內(nèi)的對數(shù)學(xué)的應(yīng)用。問:現(xiàn)在的大學(xué)有部分學(xué)生中途退學(xué),您怎樣看待這現(xiàn)象呢?DMR:在泡沫時期,我曾經(jīng)為此非常擔心,現(xiàn)在,至少現(xiàn)在在我們國家,好象不很普遍了。可能原因在于,人們已經(jīng)不再把計算機科學(xué)看作可以立即賺到大把美金的東東了,因此,現(xiàn)在其他的人對這門學(xué)科本身更感興趣一點。問:您對中國和中國的程序員有什么認識?您想對他們說點什么嗎?DMR:我訪問中國好多次,但每次都很短暫,以至于很難形成一個一般的看法。上一次我還記得,在大學(xué)的見面會上,我講了一些當時正在從事的工作的情況和歷史,學(xué)生們的態(tài)度非常熱情,他們提問所表達出的知識面也很寬博。問:您怎樣教育自己的孩子和學(xué)生?DMR:兩者我都不可能有!我沒結(jié)婚,并且我是在工業(yè)系統(tǒng)而不是學(xué)術(shù)機構(gòu)中。C語言、UNIX雙雙飛C語言是一門偉大的語言,一門偉大的承前啟后的語言。C語言是借助Unix操作系統(tǒng)的翅膀而起飛的,Unix操作系統(tǒng)也由于C而得已快速移植落地生根,兩者相輔相承,成就了軟件史上最精彩的一幕。而對于C的誕生,大師對他的描述是那樣地不經(jīng)意。C語言的發(fā)展頗為有趣。它的原型ALGOL60語言。1963年,劍橋大學(xué)將ALGOL60語言發(fā)展成為CPL(CombinedProgrammingLanguage)語言。1967年,劍橋大學(xué)的MatinRichards對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。1970年,KenThompson將BCPL進行了修改,并為它起了一個有趣的名字“B語言”。意思是將CPL語言煮干,提煉出它的精華。而在1973年,B語言也給人“煮”了一下,在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。為了使UNIX操作系統(tǒng)推廣,1977年DennisM.Ritchie發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《C程序設(shè)計語言(TheCProgrammingLanguage)》,從而使C語言成為目前世界上流行最廣泛的高級程序設(shè)計語言。1988年,隨著微型計算機的日益普及出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況美國國家標準研究所(ANSI)為C語言制定了一套ANSI標準,成為現(xiàn)行的C語言標準。C語言發(fā)展迅速,而且成為最受歡迎的語言之一,主要因為它具有強大的功能。許多著名的系統(tǒng)軟件,如DbaseⅢPLUS、DbaseⅣ都是由C語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優(yōu)勢了。C++、Java等語言受C語言影響深刻。在技術(shù)方面,曾有人問Dennis,C語言設(shè)計目標有沒有隨著時間推移而改變?如果沒變,為什么?他說:我個人的目標這些年來一直未變,并且,我不是1989和1999年標準的主要推動者。無論1989年ANSI標準還是ISO標準都使事情制度化了,這些條文比我最初寫的文檔要好;最需要加以說明的是我早先關(guān)于函數(shù)原型做的工作,對C++語言的影響是非常重要的一個影響。而在關(guān)于眾多計算機語言的激烈辯論中,始終處在中心位置的C語言作者Dennis卻顯得很平靜。西班牙的一位大學(xué)生曾經(jīng)問過他類似的問題:如果UNIX被選為過去和當前的操作系統(tǒng),盡管過去幾年出現(xiàn)了一些面向?qū)ο蟮恼Z言,毫無疑問C也將被認為是“唯一的語言”。你怎么看待C++和Java,以及C和C++程序員之間在UseNet上經(jīng)常發(fā)生的激烈爭論呢?他說:C++的很大一部分得宜于C。因為C早在C++出現(xiàn)之前就已經(jīng)具有了非常好的兼容性,所以C++才可以采用C作為建構(gòu)自身的基礎(chǔ)并使用它來開發(fā)自己的編譯器。C被設(shè)計成為一種便攜式匯編語言,對于這一特性人們褒貶不一,C++則試圖把編程方法提高到面向?qū)ο筮@種更抽象的層次上來。從最近形成的標準來看,二者共同的缺點是:帶有過多的裝飾和附屬物。同樣的,它們都采用了相同的編程思想,都試圖按照真正的需求來編寫代碼。Java顯然是C++的改進版本。它砍掉了C中的指針操作部分,引入了生成獨立于機器的目標文件這種編程思想(雖然這個思想并不是很新的,但是也許直到現(xiàn)在它才真正可行了)。既然Sun和Microsoft公司(它的產(chǎn)品同樣的有過多的裝飾附件)已經(jīng)把Java作為它們之間競爭的工具,誰也難以預(yù)料事態(tài)將向何處發(fā)展。圖:KenThompson和DennisRitchie在PDP111971問:您是怎樣發(fā)明C語言的?發(fā)明的過程是什么樣子的。它對您的生活和研究有什么影響嗎?DMR:公正地說,發(fā)明C語言的目的是:為了寫編譯器和語言設(shè)計,為了更易于編寫UNIX操作系統(tǒng)程序,我們做的一個可以在小型計算機上使用的工具。Unix做的比較好,并且PC開始相當普遍,由于C語言在Unix上的很好地應(yīng)用,使得用它來寫應(yīng)用程序和操作系統(tǒng)迅速增長起來。因此,對我來說,C語言的確非常重要。問:您覺得C語言和C++有什么不同嗎?DMR:多年以來,C和C++,已經(jīng)是兩種不同的語言了;Stroustrup先生汲取了C語言語法和潛在的語義學(xué)中的許多東西,形成了C++語言。在一些交叉領(lǐng)域,標準委員會盡量使兩種語言兼容。問:您覺得計算機語言和我們?nèi)祟惖恼Z言有什么不同呢?DMR:計算機語言更加正式和明確,有統(tǒng)一的規(guī)則,當然,它們都是經(jīng)過設(shè)計的。人類語言有語法,但相對來說不很正式,有些規(guī)則可以打破,當然,它們有不同的目的——為了同人交流而不是同機器交流。人物印象DMR先生的專業(yè)精神令人感動,近40年如一日,在他所從事的領(lǐng)域辛勤耕耘,而他的多項發(fā)明,包括C語言,Unix,也包括現(xiàn)在正在進行的Plan9,無論哪一項,在軟件發(fā)展史上都有著舉足輕重的地位,和他的偉大成就形成對照的是他的行事,態(tài)度低調(diào),他的表達,象他的軟件一樣,簡潔生動而準確。C++的成功,很大一部分也來自于C,是C語言的普及和深入,才有了后面的鳳凰涅盤,從另一個角度,在同另一語言大師Pascal之父NiklausWirth交流時,C++的名字也是源自C語言的利器,Wirth先生不無惋惜地表示,后來他開發(fā)的語言可惜沒叫Pascal2。安德斯·海爾斯伯格AndersHejlsberg中文譯名:安德斯·海爾斯伯格,丹麥人,\o"TurboPascal"TurboPascal編譯器的主要作者。進入微軟公司后,先后主持了\o"VisualJ++"VisualJ++和\o".Net".Net。目錄?主要歷程?Delphi和.NET之父:安德斯·海爾斯伯格?AndersHejlsberg的故事?Borland創(chuàng)業(yè)故事[顯示全部]主要歷程編輯本段回目錄1加入Borland公司之前AndersHejlsberg安德斯·海爾斯伯格曾在丹麥技術(shù)大學(xué)學(xué)習(xí)工程,當時他在丹麥擁有個叫PolyData的公司,他編寫了CompassPascal編譯器核心,后來叫PolyPascal。2在Borland公司安德斯·海爾斯伯格把CompassPascal編譯器核心授權(quán)給了美國\o"Borland"Borland公司,并作為雇員加入Borland公司,并且是后來所有\(zhòng)o"TurboPascal"TurboPascal版本與\o"Delphi"Delphi前3個版本的架構(gòu)師。\o"PhilippeKahn"PhilippeKahn為第一個版本的TurboPascal添加了用戶界面與編輯器。3加入微軟公司
據(jù)說,\o"比爾·蓋茨"比爾·蓋茨親自參與了這次挖角行動,并許諾安德斯·海爾斯伯格在微軟將得到技術(shù)上的足夠自由和資源支持。據(jù)說該事件也是微軟公司和Borland公司后續(xù)官司的導(dǎo)火索。4在微軟公司進入微軟公司后,首先主持了VisualJ++的開發(fā)工作,后來由于在Java開發(fā)工具授權(quán)問題上和Sun公司的糾紛,微軟停止了VisualJ++的后續(xù)開發(fā)。這之后,作為.Net概念的發(fā)起人之一,安德斯·海爾斯伯格被任命為微軟.Net的首席架構(gòu)師,主持.Net的開發(fā)工作。Delphi和.NET之父:安德斯·海爾斯伯格編輯本段回目錄安德斯·海爾斯伯格(AndersHejlsberg,1960.11~),丹麥人,TurboPascal編譯器的主要作者,Delphi和.NET之父
安德斯·海爾斯伯格曾在丹麥技術(shù)大學(xué)學(xué)習(xí)工程,當時他在丹麥擁有個叫PolyData的公司,他編寫了Pascal編譯器核心,最初叫作CompassPascal,后來叫PolyPascal。Anders把該編譯器核心授權(quán)給了美國Borland公司。安德斯·海爾斯伯格作為雇員加入Borland公司,并且是后來所有Pascal版本與Delphi前3個版本的架構(gòu)師。PhilippeKahn為Pascal添加了用戶界面與編輯器。AndersHejlsberg
AndersHejlsberg曾在丹麥科技大學(xué)學(xué)習(xí)工程學(xué)。AndersHejlsberg第一次登上軟件界歷史舞臺是在80年代早期,因為他為MS-DOS和CP/M設(shè)計了一個Pascal編譯器。當時,還是一個小公司的Borland很快雇用了他,并買下了他的編譯器,改稱TurboPascal。在Borland,Hejlsberg繼續(xù)開發(fā)TurboPascal,并最終帶領(lǐng)他的小組設(shè)計了TurboPascal的替代品、開發(fā)工具史上的奇跡:Delphi語言。
1996年,AndersHejlsberg在Delphi3發(fā)布前離開Borland去了MS。
在此之前,MS曾多次企圖挖走Anders,但都沒有成功。據(jù)信anders去MS(主要)不是錢的問題,雖然MS的開價也相當有吸引力:130萬美元年薪外加股票期權(quán)和分紅,總計超過300萬美元。更主要的原因是Anders和Delphi開發(fā)組的其他成員在修改編譯器的問題上發(fā)生了爭執(zhí);還有,據(jù)Borland內(nèi)部人講,Anders認為自己不再是“不可缺少的人”。
Anders在Delphi3中幾乎沒有做什么工作,ChuckJazdzewski扮演了一個更重要的角色。(--AndersOhlsson)Anders在Borland時把所有精力都放在了Pascal產(chǎn)品上,也需要新的挑戰(zhàn),這時BillGates的親自邀請,許諾給與挑戰(zhàn)的機會,Anders加入了Microsoft就勢在必行。
Microsoft用豐厚的薪水、股票認購權(quán)和巨額的加盟獎金雇請了Hejlsberg之后,Borland曾提出通過不正當手段吸收新成員的控告。Borland還曾聲稱—提供了很少的細節(jié)來支持指控—Hejlsberg正在開發(fā)“DelphiforJava”。這場訴訟雖然最終以Borland的勝利而收場;但Anders已經(jīng)在為Microsoft工作了。
1996年Anders來到微軟后,直接主抓VisualJ++的研發(fā)工作,并在1999年被授予“distinguishedengineer”(卓越工程師),在微軟僅有16人獲得這樣的榮譽。
后來微軟希望通過開發(fā)最新的軟件開發(fā)語言來贏得軟件開發(fā)者的擁戴,在微軟公司把視窗操作系統(tǒng)和軟件向網(wǎng)絡(luò)遷移的新市場戰(zhàn)略中,C#語言是最重要的環(huán)節(jié)。微軟動用了最好的資源。Anders擔任了C#語言的首席設(shè)計師,同時也是微軟.NET戰(zhàn)略構(gòu)架的重要參與決策者。考慮一下Anders的經(jīng)歷,就不會奇怪微軟將此重任交給他了。畢竟C#也不是他對軟件開發(fā)方式重大變革的首次?,F(xiàn)在經(jīng)過幾年時間的埋頭苦干,C#已成為微軟反擊Java語言的最有力武器。
鑒于他為軟件開發(fā)做出的巨大貢獻,Anders在《Dr.Dobb's》雜志的2001年西部會議上被授予“PrestigiousExcellenceinProgrammingAward”,《Dr.Dobb's》雜志的主編JonathanErickson說:“這一榮譽,我們每年只頒給那些在軟件開發(fā)領(lǐng)域做出非凡貢獻的人員,Anders開發(fā)的C#和他整個職業(yè)生涯中為軟件開發(fā)所做出的巨大貢獻有目共睹,他無愧于這一榮譽!”
比爾蓋茨也高度評價說:“我們?yōu)锳nders獲得這一榮譽感到無比自豪,Anders在C#創(chuàng)建中所做的努力將會改變現(xiàn)在的軟件開發(fā)方式,并將在以后的十年繼續(xù)產(chǎn)生影響。”
“程序員是最好的職業(yè)”,Anders說:“每兩年,CPU的速度要加倍,內(nèi)存容量是原來的四倍,但是我們的大腦還是原來的大小,很顯然,將需要更多的程序原來補充這些?!?/p>
______
注:海爾斯伯格曾在微軟博物館視頻上表明他是1960年生的,但很多其它資料顯示,他是1961年生的。2006年,在巴塞羅那微軟技術(shù)教育大會(TechED)上,安德斯再次確認他生于1960年。AndersHejlsberg的故事編輯本段回目錄在我的世界里,AndersHejlsberg是如同神一般存在的人物.AndersHejlsbergDelphi和C#的締造者,Borland的創(chuàng)始人之一,現(xiàn)在Microsoft的核心人物之一,在一定程度上影響著這個世界的發(fā)展.溫文爾雅,為人低調(diào).不管在Internet中還是在現(xiàn)實生活中,都找不到太多關(guān)于他的信息.進入Microsoft已有九年,只是到了近幾年隨著dotNet的問世才開始在公眾面前出現(xiàn).像他這樣的人,擁有別人艷羨的財富,名譽和地位,卻甘心默默無聞的工作.我想,當年他接受Microsoft邀請的唯一緣由,就是Microsoft能提供讓他的才華充分發(fā)揮的環(huán)境,而在Borland,他已被限制的太多.一個曾與他共同工作過的同事在BLOG寫道,AndersHejlsberg擁有不可思議的個人魅力和語言表達能力,得到了所有人的尊敬,并令人敬畏.程序員是個特殊的行業(yè),這里中的每個人都智力出眾,驕傲無比,并以此自負.有句經(jīng)典的話:管理程序員,就像放牧一群驕傲的貓.我不知道,只能去想象,在這個行業(yè)中,一個溫文爾雅卻能讓同行競爭對手感到"敬畏"的人,到底是個什么樣的人.也許,因為在他身上體現(xiàn)出的,正是程序員們追求的終極之道:以精神魅力征服世界,而不是物質(zhì)魅力.
AndersHejlsberg曾在丹麥科技大學(xué)學(xué)習(xí)工程學(xué),他編寫的Pascal編譯器的核心,1981年將Pascal編譯器賣給了Borland,并加入Borland公司,那時的Borland公司還是一個名不見經(jīng)傳的小公司。AndersHejlsberg在Borland主持開發(fā)了TurboPascal,TurboPascal獲得一直好評,AndersHejlsberg并未止步不前,他將TurboPascal編程一種面向?qū)ο蟮?、擁有可視化環(huán)境和卓越的數(shù)據(jù)庫訪問特性的應(yīng)用程序開發(fā)語言-Delphi。Java出現(xiàn)了。AndersHejlsberg在Borland一直郁郁不得志,據(jù)Borland內(nèi)部人士講AndersHejlsberg認為自己不再是不可或缺的人。比爾蓋茨慧眼識才,三故茅廬,把AndersHejlsberg請到了微軟。最開始微軟許以重金,但AndersHejlsberg不為所動,當清楚AndersHejlsberg的想法后,比爾蓋茨答應(yīng)給他一個寬松的環(huán)境,既領(lǐng)導(dǎo)VisualJ++小組,并提供薪水和紅利獎金300萬美元。這樣Borland這個大牛孵化器為微軟輸送了一位超級大牛。好景不長,SUN公司認為微軟破壞了java的跨平臺性,很快微軟就會利用它的VJ++將java開發(fā)人員拉攏到它的周圍,而它的VJ++以及WFC的很多特性明顯是為了Windows平臺設(shè)計。SUN中止了對微軟的java授權(quán)。此后微軟便選擇AndersHejlsberg擔任C#的首席設(shè)計師。Borland創(chuàng)業(yè)故事編輯本段回目錄記得大學(xué)時,第一個在PC上使用的軟件就是SideKick。這個至今讓我仍然無法忘記的軟件,也曾讓許多人津津樂道,而Borland當時也就是以SideKick成為全球知名的軟件公司。不過Borland第一個奠立創(chuàng)業(yè)基礎(chǔ)的軟件,卻是我大二用來交作業(yè)的TurboPascal,而TurboPascal也是我聽到的第一個關(guān)于Borland的有趣的故事。AndersHejlsberg當年\o"PhilippeKahn"PhilippeKahn(Borland的創(chuàng)始人)和AndersHejlsberg到美國創(chuàng)業(yè)時,便由Anders以匯編語言撰寫了TurboPascal的編譯器,而Philippe則包辦了TurboPascal其他的部分。在這兩位仁兄開發(fā)完TurboPascal之后,窮得快連登廣告的錢都沒有了。Philippe為了在Byte雜志(還記得這個著名的雜志嗎?)刊登TurboPascal的廣告,和Anders商量了一個方法,那就是直接約Byte雜志的人到當時Borland的辦公室討論刊登廣告的事情。當Byte的人到了Borland之后,Philippe、Anders和公司的助理小姐故意忙著接,接受TurboPascal的訂單,并且告訴Byte雜志的人等一下。過了一陣之后Philippe才進入房間向Byte的人道歉,說他們的TurboPascal受到市場的熱烈歡迎,訂單源源不斷地到來,因此可能不需要在Byte雜志刊登廣告了,接著Philippe向Byte的人展示TurboPascal這個產(chǎn)品。由于在當時的機器中TurboPascal能夠在極少的RAM中常駐執(zhí)行,又提供閃電般的編譯速度,這立刻讓Byte雜志的人當場震驚。憑著專業(yè)知識和豐富的經(jīng)驗,Byte的人立刻知道這將是一個革命性的軟件,因此馬上希望Philippe能夠在Byte雜志刊登TurboPascal的廣告,并且愿意以半價刊登。當然,Philippe也立刻爽快地答應(yīng)了,于是一個革命性的軟件TurboPascal終于在Byte雜志刊登出來了。當時售價49.99美元的TurboPascal立刻為Borland帶來了大量的財富,TurboPascal也馬上成為PC上除了基本的Basic之外最暢銷的開發(fā)工具,由此正式揭開了Borland影響PC開發(fā)工具近20年的歷史的序幕。TurboPascal是由AndersHejlsberg親自開發(fā)的,并且和PhilippeKahn談好的條件是Borland每賣出一套TurboPascal,Anders便從中抽取一份版權(quán)費。由于當時軟件的價格不算便宜,能夠?qū)懢幾g器的人更是少之又少,所以編譯器工程師通常都能夠獲得優(yōu)厚的報酬。因此當時AndersHejlsberg在完成了TurboPascal、并且和PhilippeKahn談好了合作條件之后,Anders理所當然地認為一套TurboPascal會定價數(shù)百元美金,因為這不但是當時一般編譯器的價格,而且TurboPascal還內(nèi)含了一個開發(fā)環(huán)境和編輯器(Editor),這是當時許多工具沒有提供的。沒有想到極具商業(yè)頭腦的PhilippeKahn了解到:如果把TurboPascal定價在數(shù)百美金,那么TurboPascal可能只會賣出數(shù)百到數(shù)千套,無法沖出大量的銷售額。因此,PhilippeKahn以極大的勇氣,瞞著AndersHejlsberg只把TurboPascal定價為49.95美金。這種價格在當時對于編譯器和開發(fā)工具來說簡直是不可思議的低價。當AndersHejlsberg知道了PhilippeKahn的定價后,簡直快氣昏了。因為在這么低的價格下Anders的版稅金一定少得可憐,因此當時Anders說他把最好的Pascal開發(fā)工具拿去讓一個白癡銷售。沒有想到的是,PhilippeKahn的定價策略獲得了極大的成功。TurboPascal以極佳的品質(zhì)和令人不可思議的低價格成為當時最具吸引力的Pascal開發(fā)工具。當然,在TurboPascal賣出了讓人難以置信的成績之后,Anders便再也不提他把專業(yè)Pascal編譯器讓白癡去賣這件事了。PhilippeKahn關(guān)鍵產(chǎn)品--SideKick雖然TurboPascal快速地讓Borland在當時全世界的程序員中成為最響亮的軟件新星,但是真正讓Borland打人一般計算機使用人群、快速成長為軟件巨人的大功臣的,卻是Borland早期最重要的產(chǎn)品--SideKick。在TurboPascal之后,Borland接著推出了SideKick這套軟件。SideKick可以說是隨后著名的內(nèi)存常駐軟件(TerminateandStayResident-TSR)的始祖,也是Borland跨出開發(fā)工具領(lǐng)域、讓幾乎所有PC使用者認識Borland的關(guān)鍵軟件。SideKick在當時以許多豐富的小工具和記事功能讓它成為每一個程序員愛不釋手的工具。還記得當時我每天都會使用SideKick的ASCII對照表和計算器的功能,因為在匯編語言(Assembly)盛行的時期,查閱ASCII對照表和在2進制、10進制以及16進制之間進行轉(zhuǎn)換是每日必要的工作。當然SideKick也很快成為了暢銷軟件,在全球狂賣數(shù)10萬套,繼續(xù)把Borland往頂尖的軟件公司推進。所謂的TSE代表TerminateandStayResident。這個意思是說,這類軟件在執(zhí)行后會隱藏在內(nèi)存的某個位置中,但是并沒有出現(xiàn)在屏幕上。不過使用者通過一個快捷鍵就可以立刻調(diào)出這類軟件讓使用者使用,在使用完畢之后又可以按一個快捷鍵再度隱藏它。這樣的軟件運行方式在當時是一項全新的創(chuàng)舉。以我的眼光來看,SideKick這個軟件對于Borland來說是非常關(guān)鍵的作品,因為我將SideKick歸類成"消費型軟件"產(chǎn)品。所謂消費型軟件,是指可以被所有計算機使用者使用的軟件,而不是只給程序員或是開發(fā)者使用的軟件。凡是現(xiàn)今比較會賺錢或是規(guī)模比較大的軟件公司大都屬于開發(fā)"消費型軟件"的公司。例如Microsoft除了有和Borland競爭得你死我活的開發(fā)工具之外,最重要的是Microsoft擁有兩大"消費型軟件":Windows操作系統(tǒng)和Office。這兩類軟件才是Microsoft最賺錢的產(chǎn)品。Oracle是另外一個很好的例子,數(shù)據(jù)庫幾乎是現(xiàn)在任何應(yīng)用都需要使用的軟件。同樣,SideKick就屬于這一類型的軟件,因為SideKick可以被所有的開發(fā)者使用來增加生產(chǎn)力,而不管開發(fā)者使用的是什么語言。因此當Borland推出SideKick之后,立刻在全世界狂賣,也成為繼TurboPascal之后Borland最賺錢的產(chǎn)品。我認為在后來的數(shù)年之中Borland走得比較辛苦,便是因為Borland再也沒有推出像SideKick一樣屬于"消費型軟件"的重量級產(chǎn)品,而只有屬于程序員和開發(fā)者小眾市場的產(chǎn)品,這是非??上У氖虑?。而"消費型軟件"也是到現(xiàn)在我仍然認為Borland應(yīng)該推出的產(chǎn)品。AndersHejlsberg近照由于SideKick的TSR技術(shù)是當時獨一無二的,而且是如此的好用,這引起了當時許多人的好奇,并且成了所有軟件廠商模仿的對象,我還記得稍后許多的計算機信息書籍都以如何學(xué)習(xí)TSR技術(shù)作為賣點。也是因為SideKick和TSR太成功了,因此Borland立刻進行了兩個工作。第一當然是馬上開發(fā)下一版的SideKick,讓SideKick繼續(xù)執(zhí)類似軟件的牛耳,以防止其他軟件公司推出類似的軟件來分食SideKick打下的天下。很快地,Borland便推出了SideKick的后續(xù)版本,不但功能更多,而且SideKick從原本完全以開發(fā)者為中心的軟件轉(zhuǎn)變?yōu)檫m合所有計算機使用者使用的消費型軟件。看看左圖,從產(chǎn)品封面以"DesktopOrganizer"為主題便可以了解到SideKick在當時的定位。果然,后續(xù)的SideKick又持續(xù)地大賣,這讓PhilippeKahn非常振奮,也讓他雄心大盛,開始想要通過SideKick的成功主導(dǎo)PC軟件的標準,這當然就是SideKick一舉成名的TSR技術(shù)。在Borland通過TurboPascal和SideKick大獲成功之后,也因TSR技術(shù)成為大多數(shù)開發(fā)者津津樂道的軟件公司,許多軟件公司都開始模仿Borland的TSR技術(shù)開發(fā)大量的TSR軟件。不過當TSR技術(shù)大量被運作之后。最后卻造成眾多的TSR軟件彼此沖突,無法正確地相互共存,這主要是因為許多TSR軟件都使用了相同的快捷鍵來調(diào)出/關(guān)閉軟件,或是隱藏在相同的內(nèi)存位置。我還記得,當時同時使用幾個TSR軟件時,必須遵照一定的運行次序才可以正常使用。為了解決這個擾人的問題,Borland開始廣邀軟件公司,想要以Borland為首制定TSR的標準。如此一來,只要所有的軟件廠商遵照Borland制定的標準,那么所有的TSR軟件就可以彼此正確地運行在PC之中。當Borland公布了這個想法并且發(fā)表了初步的TSR標準規(guī)格之后,卻立刻引起了Microsoft的緊張。因為當時TSR是如此的流行,Microsoft害怕TSR技術(shù)由Borland主導(dǎo)之后會讓Borland成為PC軟件的霸主,進而嚴重影響Microsof想主宰PC的計劃。因此在Borland開始正式制定TSR標準之際,Microsoft便站出來反對Borland定義的TSR標準,并且聲明Microsoft將在未來的DOS操作系統(tǒng)中加入對于TSR的支持,因此沒有必要再額外制定TSR標準。當時的軟件公司,包括Borland在內(nèi),都無法和Microsoft對抗。在操作系統(tǒng)廠商表明了反對立場之后,Borland的這個構(gòu)想很快便迫于形勢而放棄了。關(guān)于TSR的爭議應(yīng)該算是Borland和Microsoft之間的第一場戰(zhàn)爭。雖然在沒有引起太大的烽火之前便很快收場,不過也算是Borland和M1crosoft第一次真正的交手。也正是由于這次的相爭,讓Microsoft驚訝于Borland快速的興起,并開始正視Borland這家在當時還算小的軟件公司?!禕orland傳奇》雖然在有關(guān)TSR的技術(shù)之爭中Microsoft贏得了勝利,不過很奇怪的是,此后TSR軟件反而開始慢慢地退燒。除了一些少數(shù)的公用程序軟件仍然使用TSR之外,之后便沒有什么重量級的軟件是使用TSR技術(shù)開發(fā)的,這算不算是另一樁Microsoft介入之后搞砸的技術(shù)呢?最后再敘述一個從Borland老員工處聽來的有趣故事。許多人一直想要知道:Borland的總部在哪里?或是想要知道:為什么Borland會選擇ScottValley作為總部?事情的經(jīng)過是這樣的:當年P(guān)hilippeKahn和AndersHejlsberg到美國準備開始創(chuàng)業(yè)時,由于沒有資金,PhilippeKahn就在西餐廳打工,負責端盤子的工作,而AndersHejlsberg則努力的在開發(fā)TurboPascal。當PhilippeKahn存了一筆小錢之后,兩個人便開始了創(chuàng)業(yè)大計。首先他們必須找到一個公司的總部,可是要在哪里實現(xiàn)PhilippeKahn和AndersHejlsberg心中的理想呢?雖然當時他們住在L.A.附近,但是光憑PhilippeKahn存的一點小錢是絕不夠在L.A.大展鴻圖的,因此PhilippeKahn和AndersHejlsberg決定到比較偏遠的地方試試。于是這兩位仁兄便開著PhilippeKahn的破車往南出發(fā)了。聽說當PhilippeKahn把車開到ScottValley附近時剛好沒有汽油了,眼看四周的環(huán)境覺得還不錯,就決定在這個地方展開PhilippeKahn和AndersHejlsberg的創(chuàng)業(yè)之夢。就是這個決定讓原本默默無聞的ScottValley在數(shù)年之后竟成為一個家喻戶曉的高科技盛地。C#首席設(shè)計師AndersHejlsberg專訪編輯本段回目錄C#首席設(shè)計師AndersHejlsberg專訪JohnOsbornAndersHejlsberg譯者:榮耀[譯序:精彩技術(shù),不容錯過!限于時間和能力,譯文倘有訛誤,當以英文原版為準。]2007年7月,O’Reilly編輯JohnOsborn參加了微軟職業(yè)開發(fā)者會議。在此,他對著名的工程師、微軟.Net框架設(shè)計師、C#程序語言首席設(shè)計師AndersHejlsberg進行了采訪。AndersHejlsberg因設(shè)計PC上最早的語言之一—TurboPascal而出名。他把TurboPascal授權(quán)給Borland公司,后又率隊開發(fā)了Delphi—一個極為成功的可視化的客戶/服務(wù)應(yīng)用設(shè)計工具[譯注:此處不必拿MIDAS之類較真J]。訪問時在座的還有微軟C#產(chǎn)品經(jīng)理TonyGoodhew和O'Reilly的Windows編輯RonPetrusha。Osborn:
我已經(jīng)看到一些關(guān)于C#[發(fā)音為"Seesharp"]的新聞故事,我注意到有很多似乎傾向于這樣的觀點—或理論上說—C#不是Java的克隆就是Java的微軟替代物。如果你來寫這個標題,你希望人們怎么評論這門語言?Hejlsberg:
首先,C#不是Java的克隆。在設(shè)計C#期間,我們考察了很多種語言,如C++、Java、Modula2、C、Smalltalk等。很多語言都有我們感興趣的相同的核心思想,比如深度面向?qū)ο?、簡化對象等等?/p>
C#和這些別的語言尤其是Java的關(guān)鍵不同點是它非常接近C++。在我們的設(shè)計中努力使然。C#從C++直接借用了大多數(shù)的操作符、關(guān)鍵字和聲明。我們還保留了許多被Java拋棄的語言特性。為什么Java中沒有枚舉,道理何在?我的意思是,拋棄它們是基于何種理論基礎(chǔ)?在C++中,枚舉顯然是一個很有意義的概念。在C#中,我們保留了枚舉并同樣使其類型安全。并且,枚舉不只是整型,它們實際上是從.NET基類庫里的System.Enum派生下來的強類型的值類型。如果沒有造型轉(zhuǎn)換,枚舉類型“foo”和枚舉類型“bar”不可互換。我認為這是個重要的差異。我們還保留了操作符重載和類型轉(zhuǎn)換。C#名字空間的整體結(jié)構(gòu)也非常接近C++。
但是,超越這些傳統(tǒng)的語言論題,我們設(shè)計語言的一個關(guān)鍵的目標是使C#面向組件。我們向語言自身加入了你在編寫組件時所需要的所有概念。例如屬性[譯注:即property,翻譯為“屬性”,由來已久。我懷疑如果先有attribute的話,property會不會被翻譯為“性質(zhì)”、“特性”,而attribute才是“屬性”:JL]、方法、事件、特性[譯注:即attribute,截至目前,此名詞譯法仍較混亂。有的翻譯和property不區(qū)分,也譯為“屬性”;有的譯為“特性”;有的譯為“屬性信息”。在該名詞譯法尚未統(tǒng)一之前,本著精簡原則,筆者先把它翻譯成“特性”。但注意,XML中的attribute的譯法一般比較統(tǒng)一,即為“屬性”(因為XML中沒有一個類似于property的東西會與之混淆)。因此,本文最后交叉描述C#和XML的部分,請留心“特性”、“屬性”各有所指。]和文檔等,它們都是一流的語言結(jié)構(gòu)。我們對特性所做的工作是全新的和創(chuàng)新的。利用特性可為任何對象加入有類型的、可擴展的元數(shù)據(jù)。這在目前任何其它程序語言里都看不到的。C#也是第一個合并XML注釋標記的語言,編譯器可以用其直接從源碼中生成可讀的文檔。
另外一個重要的概念是我所說的“一站購物式軟件”[one-stop-shoppingsoftware]。一旦你用C#寫代碼,你就在這一個地方寫了一切。不再需要頭文件、IDL(接口定義語言)文件、GUID和復(fù)雜的接口。因為它是自包容的單元。一旦用這種方式寫自描述的代碼,你就可以把你的軟件嵌入到ASP頁面或植入各種不同的環(huán)境,這在以前是不可能的。
但是讓我們再回到組件這個重要的概念。語言是否應(yīng)該支持屬性或事件,業(yè)界有很多爭論。沒錯,我們是可以用方法表達這種概念。我們可以用諸如“get”或“set”之類的程序塊的命名模式模擬屬性的行為。我們可以用接口和實現(xiàn)接口的適配器并轉(zhuǎn)發(fā)到對象。這都是可能實現(xiàn)的,就象可能在C語言里進行面向?qū)ο缶幊桃粯?。只是它太困難了,需要太多的手工勞動,為了表達你真正的思想,你最終不得不去做所有的工作。我們認為是時候了,應(yīng)該有個語言使得創(chuàng)建組件變得容易些。今天程序員在創(chuàng)建軟件組件。他們并不是創(chuàng)建整個應(yīng)用或整個類庫。每個人都是在創(chuàng)建從宿主環(huán)境提供的基組件繼承下來的組件。這些組件重載一些方法和屬性,它們處理一些事件,并把組件安裝回系統(tǒng)。樹立這些概念是關(guān)鍵的第一課。Osborn:
你最近在介紹C#時,第一張幻燈片上面寫著:“C/C++家族里第一個面向組件的語言”。Hejlsberg:
是的。這是我的首要目標之一。我們談?wù)撘磺腥绾味际菍ο?,這也非常關(guān)鍵。以前象Smalltalk和Lisp語言都可以這么做,但代價昂貴。我認為C#包含一些優(yōu)美有趣的創(chuàng)新使得組件開發(fā)容易些。例如裝箱和拆箱的概念。裝箱可以使一個值類型的值轉(zhuǎn)換為一個對象,拆箱可以使一個對象轉(zhuǎn)換為一個簡單類型的值。這在以前或許也有,但我們把它應(yīng)用于語言的方式是一種優(yōu)美的創(chuàng)新。
我們努力避免用“象牙塔“的方式設(shè)計C#和.Net框架。我們承受不起重寫我們所有的軟件的負擔。業(yè)界也負擔不起,特別是今天我們正轉(zhuǎn)移到Internet時代。你要善于利用你已經(jīng)擁有的。所以,我認為互操作性也是關(guān)鍵的。我們致力于為程序員提供所有符合Internet標準的可互操作的正確的解決方案,例如、HTML、XML以及微軟已經(jīng)存在的技術(shù)。所以你不會有如墜深淵的那一刻—發(fā)現(xiàn)新的.NET框架下沒有提供你用的一些東西,或者你意識到你想利用一些已經(jīng)存在的API或組件的時候。你已經(jīng)看到我們已把所有COM的互操作能力內(nèi)建入語言和公共運行時;你已經(jīng)看到可以使用DllImport特性導(dǎo)入已存在的DLL[動態(tài)連接庫];你已經(jīng)看到即使那些都不能遂你愿,我們也有不安全代碼的概念。不安全代碼允許你寫使用指針的內(nèi)聯(lián)C代碼,可以做不安全的造型轉(zhuǎn)換,可以抑制內(nèi)存從而使其不會被意外地垃圾收集[譯注:此處用作動詞J]。
關(guān)于不安去代碼有很多爭論,人們似乎認為我們在吸毒或是在干什么別的壞事。我認為這是個誤會。代碼不會僅僅因為標記了“不安全”就表示它不受管制。當然,我們不會扔出不安全的指針使人們?nèi)菀资艿綇腎nternet下載的不安全代碼的攻擊。不安全代碼被深深地約束在安全的環(huán)境里。我們提供這樣的彈性:1.呆在受管制的代碼箱里完成工作而不會墜入深淵;2.轉(zhuǎn)入一個不同的語言使用一個不同的編程模型寫本地代碼。如果你停留在這個箱子里,我們會使代碼更加安全,因為系統(tǒng)知道它要干什么。事實上,即使你寫不安全代碼也不意味著你離開了受管制的空間。你的不安全代碼會變得更有效率。
Osborn:
請給我多講一些在受管制的環(huán)境里處理不安全代碼的機制。Hejlsberg:
好的。描述受管制的執(zhí)行環(huán)境比如Smalltalk、Java和.NET公共語言運行時一個重要特征是它們提供垃圾收集機制。為了提供垃圾收集機制,至少要提供一個現(xiàn)代的垃圾收集器,一個“標記和清掃”垃圾收集器。比起傳統(tǒng)不受管制代碼來說,你必須更多地了解正在執(zhí)行的代碼。為了找出要排除的死對象,你必須能遍歷堆棧,找到所有活動的根,并指出哪些對象是活動的哪些是不再被訪問的。然而,為了能夠達到這個目標,你必須和你執(zhí)行的代碼緊密協(xié)作。代碼必須具有更好的描述性。它要告訴你它是怎么分布在堆棧里的,它的局部變量存放在何處等等。
當我們在C#中編寫不安全代碼時,你可以做不是類型安全的事,比如指針操作。標記為不安全的代碼并非絕對執(zhí)行在不可信任的環(huán)境里。為了使之執(zhí)行,你必須授予信任,否則,代碼將不會執(zhí)行。從這一點來看,和其它本地代碼并無區(qū)別—真正的區(qū)別是它們?nèi)匀贿\行在受管制的空間里。你寫的方法有一個描述表,它告訴你哪些對象是活動的,因此,不管什么時候你進入這些代碼,你都不必穿越列集邊界。否則,當你進入非描述性的、不受管制的代碼(比如通過Java本地接口),你不得不在堆棧上設(shè)置一個水印或設(shè)置一個屏障。你必須重新列集所有箱子外的參數(shù)。一旦開始使用對象,你必須對你觸及的東西小心翼翼,因為GC[垃圾收集器]仍然在另一個不同線程里運行。如果你不使用一些隱晦的方法鎖定對象從而正確地抑制垃圾收集器,它可能會移去對象。如果你忘記那么做,那你將會不走運。
我們采用了一個不同的方式。我們說過,“讓我們集成這個到語言中去。讓我們提供聲明,例如fixed聲明,它可以讓你抑制對象以和GC協(xié)作并集成之?!庇眠@種方法,我們提供最佳方式,帶領(lǐng)所有已經(jīng)存在的代碼一起向前,而不是僅僅將它們拋棄。這是一個不一樣的設(shè)計方式。Osborn:
因此,你們對不安全代碼的處理方式是—不安全代碼的內(nèi)存實際上是在垃圾收集器的監(jiān)視之下?Hejlsberg:
是的。但是,就象所謂的“購者自慎,不包退換”一樣,它并不安全。你可以獲取指針并做錯事—當然,你在本地代碼里也能干同樣的錯事。Osborn:
我認為另一個易混淆的地方,是理解C#在哪兒停止和公共運行時從哪兒開始。與它從公共運行時庫得到的相比,C#語言自身的創(chuàng)新是什么?Hejlsberg:
好的,我想這個混淆來源于這樣一個事實—當人們談?wù)揓ava時,他們并不真的知道哪個是語言哪個是運行時。當人們談?wù)揓ava時,混淆就發(fā)生了。哪個語言哪個是運行時?當他們談?wù)揓ava時,他們到底指的是什么?Java,語言?Java,語法?還是Java,平臺?人們把這些不同的方面混成一團。我們的方式表明我們想成為一個跨語言的平臺。我們將創(chuàng)建一個平臺,它允許你進行多語言編程,并且共享一套公共的API(應(yīng)用編程接口)。讓我們承認這一點,一些人喜歡用COBOL編程,一些人喜歡用Basic編程,一些人喜歡用C++,還有一些人將會喜歡用C#—我希望。但是,我們不會試圖告訴你,忘記你曾經(jīng)做過的所有的事情吧,我們不會說,“現(xiàn)在只有一種語言,在這個競爭中不會再有創(chuàng)新了”。我們說業(yè)界因為彈性而友好。Java是怎么來的?它的出現(xiàn)是因為在它前已經(jīng)存在一些編程語言,而在它后也還將會出現(xiàn)一些編程語言。我們想打造一個平臺,在此你可以偏愛某種語言但不會否定整個價值取向;我們想打造一個平臺,它將是創(chuàng)新的。今天誰在幫助COBOL程序員?誰把他們帶入WEB?只有在.NET平臺上你才可以把富士通COBOL嵌入ASP頁面。我的意思是,它真正是革命性的!Osborn:
假定.NET平臺上支持多語言,那為什么選擇C#而不是VisualBasic、C++甚至COBOL?是什么使C#如此引人注目?Hejlsberg:
首先,C#可以使我們從一張白紙開始。也就是說,我們沒有任何向后兼容性的負擔。這顯然會使事情簡化,無論從是從實現(xiàn)的立場還是從使用的立場都是這樣。例如,在C#中,我們只有一類類型,并且總是被垃圾收集。而另一方面,受管制的C++有兩套。因為它要保留非垃圾收集風(fēng)格的編程。因此,在C#中,只需要你理解一些簡單的概念。語言是一個有趣的東西,它是一種口味;語言又是一件嚴肅的事情,它是程序員選擇的一種生活方式。我是指,我們意識到我們不能走出來說,“這兒有個平臺,你只可以使用一個基礎(chǔ)語言。”即使在那個平臺上用一種語言可以做所有的事情,人們還是可能不喜歡它的語法。他們可能喜歡大括號或者一些其它的程序塊分界符。那是他們熟悉的。那是使他們感覺舒服并且富有生產(chǎn)力和能力的。我們對待C#的方式僅僅是為認為語言太復(fù)雜的C++程序員和認為丟失了一些C和C++語言特性的Java程序員提供一個可選物。我們尋求一個簡化C++的方式并投入到一個多語言的平臺中,它提供更大的互操作性,并且它提供完備的組件概念等等?!峁┙o開發(fā)者一個語言實現(xiàn)選擇。我想我們做了件漂亮的工作。你基本上可以在VisualBasic、.NET和C#中做同樣的事情。VisualBasic對大多數(shù)程序員來說仍然是易接受的。C#則具有更多的活動空間并且比VB更富威力。AndersHejlsbergOsborn:
這意味著在C#中可用更少的聲明實現(xiàn)更多?Hejlsberg:
是的。意味著通過不安全代碼,你可以得到更多的能力。
Osborn:
也就是說,不能在VB中寫不安全代碼?Hejlsberg:
是的。不可以。Goodhew:
但是,基本上,兩種語言都可以做同樣的事。和VisualStudio6相比,這是一個根本性的改變。在Visualstudio6.0中,如果你想創(chuàng)建多線程的MTS對象,并且你是一個VB程序員,你就沒招。你不得不用C++?,F(xiàn)在,有了.NET框架,你可以使用任何一種你喜歡的語言。Hejlsberg:
這就是我在一般會議談話里說過的,.NET框架提供一致的編程模型。在語言和框架的進化過程中,我們一貫似乎都是把一種程序語言綁死在特定的API和特定的編程方式上。VB是快速應(yīng)用開發(fā)工具;MFC(微軟基礎(chǔ)類)是子類化的方式;ASP則是把東西塞到Web頁面中。在每一種情況下,你對編程模型的選擇決定了你對程序語言和可使用的API的選擇。每次當你變換框架時,它都增加了你學(xué)習(xí)新語言和API負擔的工作量。我們真正努力統(tǒng)一這一切,我們提供一套API,一套支持可視化設(shè)計的工具,我們還提供一個可以任選一種適合你的語言的彈性。Osborn:
我不知道這對那些使用象VBScript和Jscript腳本語言的有什么作用?Hejlsberg:
.NET框架下奇妙的事情之一是使腳本語言能夠編譯??纯碅SP+,現(xiàn)在,實際上,在你的頁面里運行的是真正編譯的代碼。它不是后綁定的、調(diào)度查找的—如果用戶沒有點擊頁面,你不會看到運行時錯誤。ASP+開發(fā)者可以使用VisualBasi.NET完整的威力而不是VBScript。并且第一次,他們可以使用Perl、Python和其它流行語言,如果他們這么選擇的話。Petrusha:
服務(wù)端的JavaScript現(xiàn)在也能被編譯?Hejlsberg:
沒錯。Goodhew:.NET框架使得使用腳本語言就象用具有完全特性的語言一樣,因為它們現(xiàn)在訪問的是一個真正的編程框架并且訪問的是同一基類API。你應(yīng)該看看搞Jscript實現(xiàn)的伙計們都已經(jīng)實現(xiàn)了什么。[編注:Jscript是微軟對ECMA262語言規(guī)范(ECMAScript版本3)的實現(xiàn),只有一些很小的例外(為了保持向后的兼容性),Jscript是對ECMA標準的完整實現(xiàn)]。所以.NET平臺提供了一個公共語言框架,對腳本寫作者來說,具有極大的好處。Osborn:
我們已經(jīng)討論關(guān)于Java、C++和腳本。在PDC[譯注:(微軟)職業(yè)開發(fā)者會議],我聽很多人爭論.NETIL(IL是微軟中間語言,所有編譯器都必須產(chǎn)生它以運行在.NET框架上)和運行于Java虛擬機中的Java字節(jié)碼并沒有什么不同。從你的談話中,顯然你并不同意這一點。你介意進一步評論它們之間的區(qū)別嗎?Hejlsberg:
好的。首先,IL的思想是一個很老的思想了。你可以追溯這個概念到UCSDPascalp-machine(一個早期的個人計算機Pascal實現(xiàn))或者Smalltalk。P-code曾被Basic和VisualBasic使用,Word的一個組成部件,內(nèi)部使用p-code引擎,因為它更精簡。所以,p-code并不是什么新東西。參考文獻編輯本段回目錄
湯姆·庫爾茲目錄?基本信息?托瑪斯·庫爾澤——BASIC語言的發(fā)明人之一?《IT史記》相關(guān)章節(jié):BASIC:平裝本《圣經(jīng)》?約翰·凱默尼——BASIC語言的發(fā)明人之一[顯示全部]基本信息編輯本段HYPERLINK"://techcn/index.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上??茖W(xué)技術(shù)職業(yè)學(xué)院《計算機輔助設(shè)計產(chǎn)品設(shè)計與表達》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海健康醫(yī)學(xué)院《第四紀地質(zhì)學(xué)與地貌學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海建橋?qū)W院《小學(xué)信息技術(shù)課程與教學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海行健職業(yè)學(xué)院《基本有機化學(xué)工藝學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海海關(guān)學(xué)院《ERP系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年中國木螺釘沖頭市場調(diào)查研究報告
- 企業(yè)員工管理制度展示匯編
- 2024年中國彈性防水密封膠市場調(diào)查研究報告
- 上海工商外國語職業(yè)學(xué)院《化學(xué)電源測試原理與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 建筑架子工(普通腳手架)試題(附參考答案)
- 韋尼克腦病病因介紹
- 2024-2030年中國三氧化二砷行業(yè)運行狀況及發(fā)展可行性分析報告
- 2024年制造業(yè)代工生產(chǎn)保密協(xié)議樣本版
- 醫(yī)院維修維保工程合同范文
- 2024年度學(xué)校工作總結(jié)校長匯報:六大支柱筑夢教育新征程
- 《奇效的敷臍療法》課件
- 國開(天津)2024年秋《傳感器技術(shù)》終結(jié)性考核答案
- GB/T 19413-2024數(shù)據(jù)中心和通信機房用空氣調(diào)節(jié)機組
- 公路冬季施工安全培訓(xùn)
- 中華人民共和國文物保護法
- DB13T 5936-2024 高粱-大豆帶狀復(fù)合種植技術(shù)規(guī)程
評論
0/150
提交評論