科學人/開創程式語言的新天地…Pascal語言之父「沃斯」

圖/Wikimedia Commons

我教導學生撰寫計算機程式時,總是耳提面命、再三強調,程式等於資料結構加上演算法。其實這個想法源自於1984年圖靈獎得主沃斯(Niklaus Emil Wirth, 1934~)。他發明兩種計算機語言,在計算機科學領域嶄露頭角;其一是基於他博士論文開發出來的歐拉(Euler),其二是IBM System/360系列計算機的系統程式語言PL360。這項早期成果在語法和語意的形式分離、新穎的實施(implementation)技術以及細緻的語言設計方面開闢了新的天地,因此可進行高效率的語法解析。

這兩種語言都深受ALGOL的影響,沃斯是ALGOL專案小組成員。ALGOL之前的第一批高階語言廣受歡迎,例如Fortran,因爲把編寫並維護應用程式變得更容易。但是由於硬體能力非常有限,編譯器技術尚在起步,語言本身也很笨拙或過於複雜,計算機制造商很難實施程式語言。ALGOL 60是ALGOL系列最重要的發明,引入了遞迴函數、結構化程式區塊和局部變數,並且開創了程式語言語法的正式描述。

ALGOL專案爲新興的計算機科學奠定了重要基礎。1966年沃斯提議,以他發明的語言Euler來擴展並改進ALGOL-60。ALGOL小組投票反對沃斯的提案,選擇了非常複雜的設計,亦即後來的ALGOL-68。ALGOL-68的提案充滿了新穎但難以實現的功能,複雜設計的主要原因之一是軟體設計者採用了使用者想要的所有功能,卻沒有加以審視。他於1968年與霍爾(C.A.R. Hoare)合作,把被拒絕的提案開發成非官方的ALGOL版本,稱爲ALGOL-W。

沃斯認爲高品質的軟體是有必要的。因此他以ALGOL-W爲基礎,依循個人的審美觀,開發出非常有影響力的計算機語言Pascal。Pascal簡單、靈活,能夠快速編譯成高效率目的碼。它簡化了ALGOL的複雜性,但保留其程式結構、邏輯完整性和遞迴功能,並新增了支援使用者定義數據的類型。沃斯後來寫道:「最重要的指導方針包括那些已清楚理解的功能,特別是實作者理解的功能,而忽略尚未嘗試和未實施的功能。」

爲了幫助在各種計算機上實施Pascal,沃斯設計了一種爲虛擬機編寫的新穎編譯器,並生成了在虛擬機上運行的程式碼。在新計算機上模擬此虛擬機,致使編譯器的安裝變得容易。隨着個人電腦的普及,Pascal變成1980年代的主流計算機語言,因爲它的的簡單性和效率使其非常適合運作於個人電腦有限的記憶體和磁碟空間。

本專欄感謝中華民國資訊軟體協會、臺灣電腦資訊發展館支持

延伸閱讀

(本文出自2024.05.01《科學人》網站,未經同意禁止轉載。)

延伸閱讀