第246節 子程序的設想(2/2)
「啊?可以麼?當然!當然!」
福蘭特忙不迭的說道。
艾倫對蘭恩笑道:「看吧,他很樂意的。」
……
重新回到沙發上,艾倫略帶鄭重的對蘭恩說道:
「蘭恩,我之前收到一封信,這裡面的內容,我認為有必要和你說一下。」
「?請講。」
看到艾倫的神情,蘭恩瞬間鎮定下來,專注的準備聽艾倫接下來的話。
「由於研究領域接近的原因,我和倫丁尼市里,聯動凸輪大學的威爾克斯奧術師比較熟悉,經常有書信往來,不知道你是否聽過這個名字。」
蘭恩插話道:「嗯……好像有點印象,他們是最早一批,過來購買埃德瓦克圖紙的人。噢對了,他們的想法是將他們手上的中繼符文計算機,直接更換為埃德瓦克,所以他們之前還購買過銀河實驗室的伊扎德一號。」
「嗯,就是他們。」
艾倫點頭說道:「威爾克斯他們按照埃德瓦克的圖紙,組裝好了一台計算機,然後迫不及待的在上面開展自己的研究,不過他告訴我,他們起初遇到了問題。」
「由於這是存儲程序計算機,所以它的性能極為強大,但是這也造成了一個後果:如果需要完成的任務非常複雜時,就需要拼了老命編寫能夠在它上面運行的程序。」
「很不巧,威爾克斯他們需要計算的,就是這樣的程序。於是,即使有微指令,不用直接操作機器碼,編寫這種程序仍然是一場噩夢。」
「用威爾克斯的原話,就是:『那時候,我正試著讓自己編寫的第一個真正意義上的程序運轉起來。有一天,我像往常一樣從機房出來,準備去操作打孔機,突然站在樓梯轉角處猶豫了,心裡意識到,單是給自己的程序除錯,可能就要花掉我大半輩子的時間。』」
艾倫學著蘭恩未謀面過的威爾克斯,用他的說話口氣描述道。
「於是,威爾克斯和他的同伴戴維·惠勒,一道開始著手解決這個問題,他們想到了一個美妙的方法——編寫子程序。」
「子程序?」
「是的,蘭恩,他們意識到,許多程序在運行的過程中,都需要重複執行某個操作——比如在某個複雜的數字運算中,需要多次進行開平方操作。」
「如果每次開平方都得把平方根代碼寫上,那麼程序當中就會出現許多重複代碼,占用不必要的空間,使程序變得龐大而低效。」
「為了簡化編程過程,威爾克斯的方法是建立子程序庫,也就是將常見的函數單獨列出,集中起來,就像把常見的詞語及其釋義收錄在詞典中一樣。」
「為此他們建立了一套公共的紙帶系統,一旦程序在運行的過程中需要使用到某個常見函數,計算機就會在子程序庫中『查找定義』,執行相應的子程序代碼,根據輸入值進行運算,再將運算結果返回。」
「他認為,這種方式很好,將子程序看做對基本指令集的擴展,後續的計算機中,就沒有必要在為此再嵌入新的指令集,譬如一個特殊的開平方函數。」
「我們商討了這套方案,感覺很合適目前的情況,所以我才告訴你這些。」