《觀止--微軟建立NT和未來的奪命狂奔》第1章程式碼勇士(3)

hzbook2008發表於2009-07-16

到二十世紀五十年代時,嚴重依賴計算機的各種機構開始意識到了軟體是令人頭痛的事,而且是代價很高的,其中最主要的機構就是美國軍方的三大分支。站在計算機領域前沿的程式設計師們開始尋找方法,以便可以更簡單的編寫出高效的程式。在1951年,格蕾絲·莫里·赫伯(Grace Murray Hopper),美國海軍軍械儲備局的一名數學家,構思出了一種稱為編譯器的程式,它可以把程式設計師的指令翻譯成二進位制串,也就是最終控制計算機的機器語言。理論上來說,編譯器正是可以把程式設計師從硬體的虐待和使大腦麻木的二進位制程式碼中解放出來的東西。

赫伯的成果催生了無數人的努力,來簡化編寫程式碼的難度。或許,最重要的當屬IBM開發的成為公式翻譯器(Formula Translation)的編譯器,也就是Fortan。它包含了三十二條指令,諸如PUNCH(打孔)、READ DRUM(讀取磁鼓)和IF(如果) DVIDE(除法) CHECK(檢查),它們來源於計算機硬體需要的實際二進位制術語。截止到二十世紀五十年代後期,Fortran產生了巨大的影響。“現在,任何人只要具有好的邏輯思維和願望就可以學習計算機程式設計,”一個計算機歷史學家曾經這樣寫道:“你不再必須是熟悉計算機內部原理和組合語言的專家。使用Fortran的簡單命令,你可以讓計算機聽從你的吩咐,而且編譯器會自動的把你的指令翻譯為高效的機器程式碼。”

儘管Fortran可以讓程式設計師可以使用同一套指令來為任意數量的計算機程式設計,但是要在不同的機器上執行Fortran程式時,經常還需要修改。而且,Fortran是針對科學計算和工程問題的。於是針對其它目標的其他語言出現了,比如面向商業的通用語言(Common Business-Oriented Language)(簡稱Cobol)。沒過多久,便有很多種語言可供程式設計師選擇了,而且,很多時候他們的職業路線就是由他們所選擇的和學習的最好的程式語言所決定的。

赫伯深信克服因為計算機語言激增而導致的困難將成為未來最大的技術挑戰之一。“對我來說,程式設計不僅是一種重要的實踐技術,”她在1961發表的一次講演中說:“它還需要在基礎知識方面做巨大的投入。”有些出乎意料的是,她擔心最大的前進障礙會來自程式設計師他們自己。就像轉變到一種新的宗教信仰一樣,他們經常表現出思想保守,包圍了他們的狂熱。“程式設計師是非常古怪的一個群體,”她觀察發現。

他們成長的非常快速,很短時間內就變得很專業,而且很快就感染上了一定程度的抵制改變的毛病。有一個程式設計師,我聽說他差點和客戶吵起來,因為他不想修改它的系統,他幾次走進我的辦公室說:“我們一直是使用這種方法來做事的。”這是因為這個原因,現在我在我的辦公室裡掛了一個逆時針方向走動的鐘。

在二十世紀六十年代初期,IBM嘗試在軟體領域掀起一場革命,能讓同一個程式在任意數量的計算機上執行。IBM計劃開發一系列機器,這些機器覆蓋了大多數市場,它們是由一個作業系統控制的。這個耗資五百萬美元開發的System/360產品線取得了巨大的成功。但是它的產生過程是很痛苦的,主要是因為建立軟體的難度和成本被大大低估了。第一臺360硬體是在1964年問世的,直到五年後它的所有軟體才能很好的執行。到那時,IBM在編寫軟體方面所花的錢差不多已經與設計硬體一樣多。這使IBM公司的經理們非常吃驚,也非常生動的顯示出了“影響計算機科技進步的最大障礙”和管理大型軟體專案的問題。

 

在杜邦公司,戴夫·卡特勒發現自己陷入了馴化計算機這項大任務的第一線。作業系統的不斷標準化大大提高了計算機的實用性。但是編寫應用軟體的主要壓力還是落在了計算機購買者他們自己身上。這產生了一種沒有想到的效應,那就是使很多大公司成為孕育程式設計師的基地。杜邦讓卡特勒創造一個程式來分析實驗室裡的實驗資料。這個工作很需要技巧,因為需要兩臺計算機一前一後一起工作。一臺接收資料,將資料放入到一個檔案然後傳送到第二臺機器,第二臺機器分析資料並把結果傳送給研究人員。

人們希望這個程式是所謂的“實時”系統,它能使計算機接收到資訊後立即做出回應,而不是幾個小時或者幾天後才給出結果。第一個實時系統是在風輪計算機上建立出來的,供空軍和海軍跟蹤敵人的飛行器,並指導美國的攻擊機命中目標。

實時程式是非常有價值的一種創新。對於像杜邦這樣努力尋找新材料和材料用途的公司來說,快速響應的幫助比延遲相應要大很多很多。杜邦想讓卡特勒的程式執行在從數字儀器公司(DEC)購買的小型計算機上。DEC是十年前由風輪計算機的一個工程師創立的,DEC是小型計算機領域升起的一顆新星,它大膽打破傳統。在過去,計算機設計者們提倡可以讓許多工共享運算能力的大型主機。小型計算機的價格經常低於十萬美元,這第一次讓人們可能分配一臺計算機專門做單一的任務,比如跟蹤零件的軌跡,實驗資料或者機器工具的操作。

儘管有用,但是像DECPDP這樣的小型機通常只配備很少的軟體。購買者不得不自己設計他們需要的軟體。在接下來的幾年中,卡特勒編寫出了實時程式和其它一些PDP軟體,成為為DEC計算機設計程式碼的一位專家。

但是,卡特勒開始厭倦杜邦了。他想要到一家計算機公司工作,於是他選擇了DEC。因為鑽到了IBM產品線的一個空子,DEC不僅成長的非常迅速,而且摒棄了傳統的商業模式。它沒有徵購土地建設辦公場地,而是把波斯頓郊外的一個廢棄工廠改造為員工的辦公室,這家工廠位於馬薩諸塞州的梅那特。DEC也沒有堅持IBM青睞的從上到下的管理方式,相反,DEC允許工程師實踐他們自己的想法,即使冒著重複別人的風險。

卡特勒很渴望為DEC的計算機編寫軟體——他如此渴望,以至於和DEC銷售人員的一次偶遇便引發了他到這家公司去參加工作面試。隨著硬體的不斷髮展,DEC很需要編寫程式碼的強人。卡特勒剛好滿足了這一需要。於是在1971年,卡特勒接受了DEC的工作,搬到了馬薩諸塞州,這一年他二十九歲。

 

卡特勒很快就博得了DEC的青睞。沒過多久,他就成為這家公司的一位軟體之星,並讓他帶領了一個開發程式碼的團隊。他完完全全被他的工作所吸引了。在那時,他的第一次婚姻已經破裂了,第二次正朝著淺灘行駛。正像他自己所承認的,他根本不是會照顧家的男人。當他終於和第二個妻子散夥後,他發誓再也不會結婚。“婚姻是一種錯誤,你只能犯兩次,”他說。

卡特勒是一流的程式設計師。他全身心的投入,沉迷其間,爭強好鬥。他有非常堅強的意志和信心。他投入非常大的精力來注意細節。而且,他在設計和編寫程式碼時不停地追求更好。“大多數人學會如何把一件事做得很漂亮後,以後一生便一直做這個,”一個同事觀察發現:“但他不是卡特勒。卡特勒會從自己的成功中學習。下一次,他會做的更好。所以每次,他都上升到一個新的高度。”這一點是很令人吃驚的,因為在科技方面取得成功的很多人也沒有這樣的特質。而且,他非常的投入——除了分配到他手中的軟體任務外,他對其它任何腦力活動都沒有熱情——這是很有好處的:“對可能干擾他的任何人和任何事,他不僅置之不理,而且還會對其進行攻擊和詆譭。”

卡特勒罵人的功夫也爐火純青。反覆無常而且脾氣倔犟,他可能根本不顧及臉面,大喊大叫,根本不顧及喪失最起碼的禮貌。他發脾氣時,嘴裡動不動就冒出一連串汙言穢語。每次新的爆發都把他的形象又磨礪一番。陌生人是最受不了的。有一次,一位女工程師在放滿印表機的房間裡第一次遇到卡特勒,卡特勒正在那裡把卡在印表機裡的碎紙往外摳。這位女工程師以期待的眼神看了卡特勒一眼,這時正好卡特勒也抬眼看見了她。於是,卡特勒咆哮起來了:“你就是那個把印表機搞垮的混蛋麼?”

儘管他的態度沒有給任何人留下好印象,卡特勒還是贏得了稱讚,因為他在為DECDPD-11計算機構建實時作業系統的工作中起到了關鍵作用。他出色的完成了一項非常講究技巧的任務,可以把程式縮減的更小。這是至關緊要的,因為程式越小,它便執行的更快,消耗的記憶體也越少。卡特勒用了一種很簡單的方式來表達他希望程式碼更緊湊的願望,他在他的辦公桌上放了一個橡皮戳,上面刻著:大小就是目標(Size Is The Goal)。當他覺得程式設計師要增加的功能會大大增加記憶體需求時,他就會使用這個戳蓋在駁回備忘錄上。這個戳讓程式設計師們對增加程式碼更加謹慎,同時也提供了一個笑料。很快,很多男員工的房間裡都出現了一句刺眼的短語:“大腿就是目標(Thighs Is The Goal)”。


《觀止--微軟建立NT和未來的奪命狂奔》第1章程式碼勇士(3)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16502878/viewspace-609334/,如需轉載,請註明出處,否則將追究法律責任。

相關文章