如果你上過編程課,一定被老師提醒過:不要使用goto語句! 因為goto語句不僅讓代碼的可讀性很差,隨意的跳出還會給程序帶來安全隱患。 但是這種幾乎被現(xiàn)代編程明令禁止的語句,在計算機誕生之初卻司空見慣。 早期的程序員用goto來解決代碼無法預(yù)料的后果,遇到什么問題就用一句goto,讓程序跳轉(zhuǎn)到某個指定語句。 直到一位MIT的女教授,才讓我們徹底擺脫了goto語句的支配,她就是Barbara Liskov。 △芭芭拉·利斯科夫(Barbara Liskov),圖源:QuantaMagazine剛滿80歲,榮譽等身,她是全美首批獲得計算機博士學(xué)位的女性之一,集馮諾依曼獎、圖靈獎于一身。 甚至可以說她發(fā)明了構(gòu)成現(xiàn)代程序基礎(chǔ)的體系結(jié)構(gòu)。 但在此之前,她是一位曾經(jīng)因為性別申請普林斯頓數(shù)學(xué)研究生被拒的人。 所以Barbara Liskov究竟是怎樣的傳奇計算機科學(xué)家? 在其80歲壽誕之際,我們一起看看她改變了編程的故事。 好的設(shè)計,才有好的代碼上世紀40年代,美國發(fā)明了第一臺電子計算機ENIAC。雖然早期的計算機體積很大,但提供的功能簡單,那時候的編程也不必考慮太復(fù)雜的結(jié)構(gòu)。 goto語句是最簡單的方法,只需把程序的執(zhí)行引導(dǎo)到對應(yīng)的某一句即可。 廣泛使用的goto語句雖然簡單,但是卻沒有邏輯章法。用這種方式編寫的程序既難以閱讀,又容易造成危險,甚至還鬧出過人命。 曾經(jīng)有一種名為Therac-25的軟件控制的放射治療機,就因為使用了過時程序設(shè)計方法,導(dǎo)致6名患者接受嚴重超劑量的輻射,造成了死亡事故。 如果沒有一個程序設(shè)計的基本架構(gòu),計算機硬件的發(fā)展已經(jīng)超出了程序員能力所能承受之重。 終于在60年代,計算機程序設(shè)計迎來了新的理論,當時B?hm和Jacopini兩位計算機學(xué)家提出,可以用結(jié)構(gòu)化的程序完全代替goto語句,只需使用順序、選擇和循環(huán)三種結(jié)構(gòu)即可。 這種結(jié)構(gòu)一直被使用至今。 1974年,彼時僅35歲的MIT女教授和她的學(xué)生將這種思想付諸實踐,他們發(fā)明了一種新的編程語言CLU。 CLU完全拋棄了goto語句,雖然這種編程語言沒有被廣泛采用,但是它在面向編程語言的發(fā)展過程中起過非常重要的作用。 CLU中的一些概念在許多方面影響了后來的編程語言,對后來出現(xiàn)的一些面向?qū)ο缶幊蹋∣OP)語言做出了許多貢獻。 后來出現(xiàn)的Java、C++、C#、Python都是CLU的后代。 CLU的關(guān)鍵貢獻包括抽象數(shù)據(jù)類型、共享調(diào)用、迭代器、多個返回值、類型安全的參數(shù)化類型和變量類型。 Liskov對程序設(shè)計的貢獻不僅于此,現(xiàn)代面向?qū)ο蟪绦蛟O(shè)計的5大原則“SOLID”中的L就是以她名字命名的里氏替換原則(Liskov Substitution principle)。 1987年,Liskov在一次大會的主題演講中最早提出了這一原則,即繼承必須確保超類所擁有的性質(zhì)在子類中仍然成立。 遵循里氏替換原則編寫的程序,克服了繼承中重寫父類造成的可復(fù)用性變差的缺點。 而且這一原則還保證了程序的正確性,擴展的子類不會給已有的系統(tǒng)引入新的錯誤,降低了代碼出錯的可能性。 直至今日,所有面向?qū)ο缶幊痰某绦騿T還在遵守著Liskov提出的這項原則。 傳奇的女性,Barbara Liskov如今Liskov的學(xué)術(shù)成就已經(jīng)獲得的廣泛的承認。 但在那個年代,作為一個科學(xué)家,還是個女性,真的挺不容易,曾因為性別申請普林斯頓數(shù)學(xué)研究生遭拒。 Liskov在伯克利讀本科期間,100人的班里,只有一兩名女性同學(xué),她就是其中之一。 她修完了所有和數(shù)學(xué)、科學(xué)相關(guān)的課程,而學(xué)校當時卻不鼓勵女性同學(xué)這樣的做法。 也從來沒有人對她說:“嘿,你這樣做很好,不考慮跟我們一起合作嗎?”之類的話。 好在Liskov的母親沒有當面反對過她(雖然只是鼓勵她要在學(xué)校好好表現(xiàn))。 但她對此不以為然,直到在斯坦福讀研畢業(yè)時,才意識到“性別”問題的存在。 因為在她畢業(yè)的時候,沒有任何人找她談工作的事情。 而像她的男性同學(xué)(Raj Reddy)就能被招聘到學(xué)術(shù)方向的崗位。 要知道,在那個年代,就業(yè)有點像“包分配”——顧問會通過與全國各地部門的合作來安排畢業(yè)生的工作。 但對于Liskov,可謂是“無人問津”。 在這之前,Liskov已經(jīng)向MIT求職過,但得到的反饋卻是“不考慮擔任教授”。 發(fā)生這種情況時,你會認為“是我自己還不夠優(yōu)秀”。 “但同時我也認為,計算機科學(xué)是開放的?!?/p> 幸好Liskov在Mitre公司的第一份工作還算不錯,她在這家公司期間,深入的研究了編程方法。 △Barbara Liskov正在設(shè)計抽象數(shù)據(jù)類型(ADT)這項研究讓她獲得了一個一等獎?wù)撐摹?/p> 1971年,她針對這項研究發(fā)表了一次演講,而后便受到了MIT和伯克利的邀請。 事情至此才發(fā)生了改變。 剛剛進入MIT時,大約1000名員工中只有約10名左右的女性教員。但其實,MIT有很多杰出的女性并不在教職人員之列。 在科學(xué)領(lǐng)域,很少有人能夠意識到女性做出的一些基礎(chǔ)性貢獻。 90年代,她回到斯坦福參加了一個部門慶典。一群老教授們談?wù)撝靶@關(guān)系網(wǎng)(old-boy network)”的八卦,他們說:
Liskov覺得這件事情真是愚昧至極。 在Liskov擔任計算機科學(xué)系主任之前的10年里,部門只發(fā)現(xiàn)了一位值得聘用的女性。 2001-2004年,在她擔任部門領(lǐng)導(dǎo)期間,Liskov共聘用了7名女性,她并沒有濫竽充數(shù),其中的3名初級教員都非常優(yōu)秀。 再后來,Liskov獲得了圖靈獎,即便擁有了如此殊榮,還是免不了質(zhì)疑的聲音。 △2008年度美國計算機學(xué)會(ACM)圖靈獎(Turing Award)
“簡直一派胡言”,Liskov說道。 即便到了足夠開放的今天,她也認為現(xiàn)在的情況并不比那時好:
如何看待AI的未來那么,Liskov對人工智能和機器學(xué)習發(fā)展有什么看法呢?
那時候,人們認為,一個明智的做法是讓程序按照人類的意愿來行事,但現(xiàn)在已然不是這樣了。
而對于計算機科學(xué)的發(fā)展,Liskov比較擔心的是互聯(lián)網(wǎng),包括假新聞和安全問題。
One More Thing分享Liskov對女性在事業(yè)發(fā)展過程中的一點建議:
傳送門博客: 維基百科: 個人主頁: — 完 — 量子位 QbitAI · 頭條號簽約 關(guān)注我們,第一時間獲知前沿科技動態(tài) |
|