Pascal之父Niklaus Wirth:結構化的程序設計
原創【51CTO獨家特稿】對程序員而言,Pascal是大學時代的入門語言,也是造就一代Borland傳奇Delphi的經典。但你是否知道Pascal這個名字的由來?
1967年,當Pascal之父Niklaus Wirth(尼古拉斯·沃斯)編寫***一條Pascal編譯器的代碼后,他按照慣例為自己的這門語言取了一個數學家的名字,Pascal。這是為了紀念法國著名數學家和物理學家Blaise Pascal(布萊茲·帕斯卡)。
數學家和物理學家Blaise Pascal和他發明的計算機
為什么要紀念Blaise Pascal?因為他是世界上***臺計算機的創造者,你沒聽錯,早在1641年Blaise Pascal就為做稅務官的父親制造了一臺計算機,這是世界上***臺手搖計算機,可以計算六位數的加減法。其后十年里他對此繼續進行改進,共造出50多臺,現在還存有8臺。當然,Blaise Pascal最為人所熟知的貢獻還是國際壓強單位的帕斯卡(Pa)和概率論。
Niklaus Wirth 1934年生于瑞士Winterthur(溫特圖爾),這是瑞士北部的一個小鎮,群山環繞,風景優美;少年時代的Niklaus Wirth與數學家Pascal一樣喜歡動手動腦,***的愛好是組裝飛機模型。1958年,Niklaus從蘇黎世工學院取得學士學位后來到加拿大的萊維大學深造,之后進入美國加州大學伯克利分校獲得博士學位。
Euler和PL360
上世紀六十年代初,Wirth出于一些學術考慮設計了自己的***個編程語言Euler。自Euler開始,Wirth養成了一個習慣,將自己的學術成果或編程語言以著名數學家的名字命名,Euler就是為了紀念瑞士著名數學家Euler(歐拉)而命名。 Euler采用一種通用類型概念。在Euler中,數組(array),過程(procedure),以及轉換(switch)這些量并不是通過標識符(identifier)來定義并命名的:與ALGOL相反,這幾個量是和變量處于不同層級的,卻與數字、布爾值常數等是同一層級。因此,在傳統的數值和邏輯常量之外,Euler還添加了如下類型:
◆reference
◆label
◆symbol
◆list (array)
◆procedure
◆undefined
雖然Euler在學術上非常優秀,但在實用性上考慮并不周。無論如何,Wirth憑借Euler在編譯器系統設計方面打造了很好的基礎。
接下來,沃思在斯坦福大學定義了另一種語言來描寫Algol W的編譯器,由此催生了新的語言PL360。PL360是作為輔助工具開發的,卻出人意料地在許多地方獲得應用。Algol W及PL360的成功奠定了Niklaus Wirth作為程序設計語言專家的地位。
Pascal語言
成名后的Wirth拒絕了斯坦福大學的挽留,于1967年回到瑞士,先在蘇黎世大學任職,第二年轉到母校蘇黎世工學院。當時,計算機軟件課程的教學基本通過數學模型、PL360或Basic進行。Wirth認為,這些編程語言無法滿足程序設計思維的傳遞,他計劃再開發一個更加適合教學的編程語言。
Niklaus Wirth很快實踐了這個想法,不考慮商業用戶,單純面向計算機專業的學生。他在CDC6000上成功設計了一門編程教學語言,他用法國數學家Blaise Pascal命名它。Pascal嚴格的結構化形式、豐富完備的數據類型、高運行效率和較強的查錯能力,大受學生歡迎;由于其適合于由微處理器組成的計算機系統,不久就廣泛流傳開來。
Pascal語言可以被方便地用于描述各種算法與數據結構。尤其是對于程序設計的初學者,Pascal語言有益于培養良好的程序設計風格和習慣。IOI(國際奧林匹克信息學競賽)把Pascal語言作為三種程序設計語言之一,在大學中Pascal語言也常常被用作學習數據結構與算法的教學語言。在C語言問世以前,Pascal成為***的編程語言之一。
意外收獲
另外,作為教學語言被設計的Pascal在商業上也取得了輝煌的成績。上世紀80年代,Delphi與C#之父Anders Hejlsberg在Borland公司先后設計推出了Turbo Pascal和Delphi。造就了當年的Borland傳奇。
#T#1971年,Niklaus Wirth基于自己的開發程序設計語言和編程的實踐經驗,Wirth***提出了“結構化程序設計”(Structured Programming)的概念。Wirth提出的這種結構化程序設計方法又稱為“自頂向下”或“逐步求精”法,在程序設計領域引發了一場革命,成為其中的一種標準,尤其在后來發展起來的軟件工程中獲得廣泛應用。
Pascal的成功和結構化程序設計思想帶來的巨大影響,并沒有停止Wirth繼續創造性的研究與開發工作。1970年代中期,為適應并發程序設計的需要,Wirth又成功開發了獲得廣泛應用的Modula語言。后來,參考Alto的經驗,他還設計開發了Lilith個人計算機系統。Wirth的學術著作很多,著名的包括《系統程序設計導論》、《算法+數據結構=程序》。除了程序設計語言之外,Wirth在其他方面也有許多創造,如擴充了著名的巴科斯范式,發明了語法圖等。憑借突出的個人成就,Niklaus Wirth于1984年獲得圖靈獎。