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