軟體的鮮為人知的秘密

採訪計算機程式設計界的“印第安納·瓊斯”——格雷迪·布奇


關於支援科學新聞報道

如果您喜歡這篇文章,請考慮透過以下方式支援我們屢獲殊榮的新聞報道: 訂閱。 透過購買訂閱,您將幫助確保有關塑造當今世界的發現和想法的具有影響力的故事的未來。


大多數人上網衝浪、用手機聊天以及在自動取款機 (ATM) 上取款時,幾乎不會想到他們是如何完成這些操作的。 他們只是理所當然地認為這些裝置會在觸控按鈕時就能工作。

溫馨提示:如果沒有軟體指示計算機與網路通訊、手機查詢訊號以及 ATM 確認客戶已獲准接收和存入資金,這些裝置將毫無用處。

換句話說,軟體是當今各種小工具的心臟和靈魂——而且,軟體的編寫方式對其執行至關重要。 然而,問題是,沒有一本手冊規定應該如何編寫軟體。 本質上,程式設計師現在只是將命令串在一起,使裝置執行消費者期望它們執行的操作。 軟體開發人員沒有規則可循,例如指導大多數工程學科的規則,也沒有歷史參考框架供程式碼編寫者研究以確定哪些方法有效,哪些方法無效。

IBM 研究員兼自稱“軟體考古學家”的 格雷迪·布奇 解釋了為什麼需要改變這種情況,以及將軟體編寫帶入 21 世紀需要做些什麼。


您說在編寫軟體方面存在一個“鮮為人知的秘密”。 您願意和我們分享一下嗎?
在其他學科,尤其是工程學中,存在關於架構的論著。 這不是目前軟體的情況,軟體在過去幾十年中才有機地發展起來。 所有軟體密集型系統都有架構,但大多數時候它是偶然的,而不是有意的。 這導致了大多數軟體程式設計知識成為部落知識,更多地存在於程式設計師的頭腦中,而不是在一些參考手冊或公開可用的資源中。
由於沒有成文的軟體編寫方法,我們是在玩火。 這是怎麼回事?
我們的社會現在靠軟體執行。 根據一般經驗法則,在全球範圍內,軟體開發人員每年生成約 330 億行新的或修改後的程式碼,並且隨著對軟體提出新的需求,它很快就會過時。 如果我沒有架構意識,並且不斷堆積程式碼,它就會變成一團糟。 這種停滯對大型企業的危險在於,如果一家規模較小、更靈活的競爭對手以更好的方式做事,那麼大型企業就很難適應,並且很容易失去在特定市場中的領導地位。 那麼軟體架構就有了根本的經濟原因。 這對於完全基於軟體的成長型企業來說尤其困難,例如 eBayGoogle 等公司,它們實際上不生產任何有形的東西,但卻依賴軟體作為其業務的核心。

隨意編寫軟體的問題有多嚴重?
如今,軟體的累積量很大。 鑑於已對現有軟體進行了大量的資本投資,因此很難輕易更改它。微軟一度認為 Word [文字處理軟體] 變得搖搖欲墜,並嘗試從頭開始重寫它 [作為 1991 年 Pyramid 計劃的一部分]。 這種方法的問題在於,他們的新 Word 始終無法與原始軟體相匹配。 他們不得不回去使用他們已經擁有的程式碼。

Web 對軟體架構有什麼影響?
Web 沒有改變軟體架構的基本思想,而是代表了一種特定的軟體架構型別,系統可以基於這種型別構建。 話雖如此,Web 的確存在一些設計“缺陷”; 這些“缺陷”與其說是邪惡,不如說是根本無法先驗地知道。 Web 的表示層和語義層之間存在較差的分離,而這兩層需要被允許獨立更改。 另一個挑戰是 Web 的底層 TCP/IP [傳輸控制協議/網際網路協議] 協議,該協議的設計初衷並非支援 YouTube 等網站上流行的流媒體影片。 當 TCP/IP 接收到請求然後提供響應時,它會中斷資訊流,這在您嘗試播放流媒體影片時是一個問題。

可以做些什麼來改進軟體?
需要有一種一致的軟體編寫方式,這種方式可以在不同的系統和不同的情況下執行,並考慮許多不同的因素:軟體是在具有多個處理器的單臺機器上執行,還是在單處理器機器叢集上執行? 所有軟體原始碼都將放入計算機上的單個檔案中,還是將其分解並作為多個指令碼執行? 軟體將如何定義和使用它遇到的不同資料? 這些是在編寫軟體之前必須回答的問題。 在土木工程中,如果您要求某人建造一棟維多利亞式房屋,則對其外觀有固有的理解。 如果您要求不同的程式設計師為高吞吐量系統 [例如處理金融交易的系統] 設計軟體,則對於應該如何構建該軟體沒有達成共識。
如何才能更好地讓未來的計算機科學家做好準備,以便採用更通用的軟體編寫方法?
由於多年來商業界出於必要性推動了軟體的進步,因此學術界不得不奮起直追,而不是教授和建立軟體架構以供後代遵循。 一種方法是透過諸如“Alice”之類的教程來教導年輕的程式設計師,“Alice”是一種 3-D 軟體編寫程式,旨在輕鬆建立動畫,用於講述故事、玩互動遊戲或製作影片以在 Web 上分享。 Alice 由 蘭迪·波什 [卡內基梅隆大學計算機科學、人機互動和設計教授] 領導的程式設計師團隊建立,是一種免費提供的教學工具,旨在成為學生首次接觸基本程式設計概念的工具。

您被稱為軟體考古學家。 這是否意味著您攜帶牛鞭並像資訊科技印第安納·瓊斯一樣追逐文物?
我找到了 計算機歷史博物館 [位於加利福尼亞州山景城] 的董事會,並告訴他們他們也應該建立一個軟體博物館。 如果我們無法訪問例如 Word 的原始原始碼,這將是一件可悲的事情……[對於]……後代來說。 我找不到 [IBM 大型機作業系統] 的原始原始碼; 甚至 IBM 也沒有。 很難訪問其中一些軟體,因為它具有專有性,並且企業不希望競爭對手看到它。 我們正在對軟體進行考古挖掘,以便後代可以研究它並加以改進。

© .