親手設(shè)計現(xiàn)代算法架構(gòu),女圖靈獎得主Barbara Liskov的坎坷編程路
好的代碼既有內(nèi)容又有風格。它提供了所有必要的信息,沒有額外的細節(jié)。它繞過了低效和bug,準確、簡潔和雄辯,足以被人類閱讀和理解。
但到了20世紀60年代末,計算能力的進步已經(jīng)超過了程序員的能力。許多計算機科學家在沒有考慮設(shè)計的情況下創(chuàng)造了程序。他們編寫了冗長、不連貫、充斥著“goto”聲明的算法——如果滿足某個條件,機器就會跳轉(zhuǎn)到程序的新部分。早期的程序員依賴這些語句來修正他們代碼中不可預見的結(jié)果,但它們使程序難以閱讀、不可預測甚至帶來了危險。糟糕的軟件最終奪去了生命,就像Therac-25電腦控制的輻射機向癌癥患者傳送大量過量的輻射一樣。
1968年,Barbara Liskov在斯坦福大學獲得計算機科學博士學位時,她羨慕電氣工程師,因為他們使用的是通過有線連接的硬件。該體系結(jié)構(gòu)自然允許他們分解問題,并將其劃分為模塊,這種方法使他們能夠獨立地對離散組件進行推理,從而給予更多的控制。
作為一個思考代碼的計算機科學家,Liskov沒有可以使用的物理對象。像小說家或詩人一樣,她盯著一張空白的紙。
Liskov曾在加州大學伯克利分校讀過數(shù)學本科,她想把編程作為一個數(shù)學問題來研究,而不是作為一個技術(shù)問題,一個可以由邏輯原理和美學指導的問題。她想把軟件組織起來,這樣就可以對它進行控制,同時也能理解它的復雜性。
當她還是麻省理工學院的年輕教授時,她領(lǐng)導的團隊創(chuàng)造了第一種不依賴goto語句的編程語言。這一名為CLU(“cluster”的縮寫)的語言依賴于她發(fā)明的一種方法——數(shù)據(jù)抽象——將代碼組織成模塊。今天使用的每一種重要編程語言,包括Java、C++和C#,都是CLU的后代。
Liskov說:“這么早就出征的一個好處是,那里有很多大問題。你所要做的就是找到這些問題并解決。”2008年,Liskov因“對編程語言和系統(tǒng)設(shè)計的實踐和理論基礎(chǔ)的貢獻,特別是在數(shù)據(jù)抽象、容錯和分布式計算方面的貢獻”而獲得圖靈獎——這一獎項通常被稱為計算領(lǐng)域的諾貝爾獎。
Quanta Magazine在Liskov的家中采訪了她,當時她剛剛參加了海德堡獲獎?wù)哒搲_@是一個由計算機科學家和數(shù)學家組成的私密聚會,只有受到邀請才能參加,他們在各自的領(lǐng)域獲得了最具聲望的獎項。Liskov已被邀請到海德堡,但由于個人原因需要在論壇前幾周取消這一行程。
以下為經(jīng)過編輯整理的訪談實錄。
我和John McCarthy在人工智能領(lǐng)域取得了博士學位。我寫了一個下棋的程序。John提出這個話題是因為我不下棋。我閱讀了《國際象棋》的課本,并將那些算法翻譯成計算機科學。在那些日子里,人們認為明智的做法是讓程序按照人類的方式運行。但現(xiàn)在不是這樣了。
今天,機器學習程序在大多數(shù)時候都做得很好,但它們并不總是有效。人們不明白它們?yōu)槭裁垂ぷ骰虿还ぷ鳌H绻艺谘芯恳粋€問題,并且需要確切地理解算法的工作原理,我就不會去應(yīng)用機器學習。另一方面,我的一位同事正在用機器學習分析乳房X光片,尋找癌癥可以更早被發(fā)現(xiàn)的證據(jù)。
人工智能是一種應(yīng)用,而不是一門核心學科。它總是被用來做某些事情。
老實說,那時候我做不了什么。我對基礎(chǔ)工作很感興趣。“你如何組織軟件?”這是一個非常有趣的問題。在設(shè)計過程中,你需要弄清楚如何實現(xiàn)應(yīng)用。你需要通過將代碼分解成塊來組織代碼,數(shù)據(jù)抽象有助于此。這很像證明一個定理,你不可能一下子就證明一個定理。相反,你會發(fā)明一些引理并分解問題。
在我的計算思維中,我想象一個抽象的機器,它只有我想要的數(shù)據(jù)類型和操作。如果這臺機器存在,那么我就可以寫出我想要的程序了。但事實并非如此,相反,我引入了一堆子問題——數(shù)據(jù)類型和操作——我需要弄清楚如何實現(xiàn)它們。我一遍又一遍地做,直到我使用一臺真正的機器或一種真正的編程語言。這就是設(shè)計的藝術(shù)。
了解方法論并不意味著你擅長設(shè)計。有些人能設(shè)計,有些人則不能。我從來沒有覺得可以教我的學生如何設(shè)計。我可以向他們展示設(shè)計,解釋設(shè)計,談?wù)摂?shù)據(jù)抽象,告訴他們什么是好的,什么是壞的。但有了太多花哨的東西,事情就變得復雜了。如果太少,則就會出現(xiàn)效率低下。設(shè)計一些足夠強大的東西是一門藝術(shù)。
我很擔心互聯(lián)網(wǎng)。我們有大量的問題,包括假新聞和安全問題。我很擔心那對離婚的夫婦,丈夫發(fā)表了對妻子的誹謗,包括她住在哪里的信息。有一些可怕的事情正在發(fā)生。部分原因是80年代的一種態(tài)度,在那些日子里,我們有15所大學和幾個政府實驗室通過互聯(lián)網(wǎng)連接在一起,我們都是好朋友。他們的態(tài)度是,網(wǎng)站不應(yīng)該對內(nèi)容負責。這將扼殺他們的發(fā)展。你看,這種態(tài)度還在繼續(xù)。
不,這是實用主義,根本不知道我們最終會走向何方。如果接手,他們將不得不考慮一些棘手的問題。他們在沒有增加安全措施的情況下進行了調(diào)查。解決我們當前的問題需要的不僅僅是技術(shù)。我們需要法律來解決人們行為不端的問題。我們需要解決隱私與安全的問題。有些是技術(shù)性的。例如,F(xiàn)acebook有一個傳播信息的算法。他們可以更緩慢地傳播信息,或者識別哪些信息不應(yīng)該傳播。社會總是很難處理新事物。我們可以期待自己的成熟。但如果我有一根魔杖,我就能讓這一切消失。
我被鼓勵在學校好好表現(xiàn)。我不知道我的母親是否公開鼓勵過我,但她沒有當面對我說:“哦,不,這樣做不好。”我修了所有的數(shù)學和科學課程,而學校不鼓勵女生這樣做。在伯克利,我是100人班的一兩個女生之一。從來沒有人說過:“嘿,你做得很好,為什么不和我一起工作呢?”我不知道發(fā)生了這樣的事。我在斯坦福讀的研究生,畢業(yè)時,沒人跟我談工作。我確實注意到,像我的朋友Raj Reddy這樣的男同事被招聘到學術(shù)職位。但沒有人招募我。
當時,顧問們通過與全國各地的部門達成協(xié)議,為畢業(yè)生安排職位。
是的,但是沒有人為我達成交易。在20世紀90年代,我回到斯坦福參加部門慶祝活動。一群老教授,不知道他們在做什么,描述了這個老男孩網(wǎng)絡(luò)。他們說:“哦,那邊的朋友告訴我,我有一個你應(yīng)該雇用的好年輕人。”事實就是這樣,他們一無所知。他們談?wù)摰氖且晃荒贻p女士,因為她嫁給了一位教授而做得很好!你真的無能為力。另一位同事在他的辦公室里貼了一張海報。我問他:“你辦公室里的那個是什么?”
我申請了麻省理工學院,但他們不考慮讓我擔任教職。當這種情況發(fā)生時,你會想:“我不夠好。”你忍不住。但我也認為,“計算機科學是完全開放的。”我在Mitre的行業(yè)工作是一份很好的研究工作。在那里,我研究了編程方法,并進行了研究,這讓我獲得了一等獎?wù)撐摹H缓笤?971年,我做了一次演講,之后Fernando Corbato邀請我申請麻省理工學院。我還被邀請去伯克利申請。一切都改變了。
那是我的回憶。
所以有了進步,但是…
《第九條》還沒有成為法律,但壓力越來越大。麻省理工學院校長Jerry Wiesner對此表示支持。壓力必須來自上層,它不會從底部冒出來。在麻省理工學院有很多杰出的女性不在教職人員之列。大約在那個時候,她們中的一些人突然被邀請加入了教員隊伍。當然,數(shù)學系從來沒有,數(shù)學系真的很差。
我的感覺是,所有的科學領(lǐng)域都沒有認識到女性的一些基礎(chǔ)性貢獻。
在我擔任麻省理工學院計算機科學系主任之前的10年里,該部門只發(fā)現(xiàn)了一位值得聘用的女性。當我(2001年至2004年)擔任主管時,我聘用了7名女性。我雇傭的三個女性都很優(yōu)秀。有很長一段時間,女性根本不被考慮。
哦,我打賭是的!還有另一條我從未說過的評論說:“哦,她沒有做這項工作。(一位男同事)代替了。”這完全是一派胡言。我沒有看評論,我丈夫也是。我有時會在對我有敵意問題的地方發(fā)表演講,但你必須做好準備,無論是因為我是一個女人,還是因為人們想要出風頭。
是的!我當時沒有意識到我們部門有人支持我。當我四處出差的時候,我已經(jīng)很出名了。但這是一個謎:為什么有些女性能夠堅持下去?
要是知道怎么用就好了。直到我在麻省理工學院呆了一段時間,我才擁有在公共場合提問的能力。培養(yǎng)這種自信花了很長時間。
是的,也許那是我的策略。再加上不需要取悅別人,女性被社會化大多是為了取悅他人。
你知道現(xiàn)在的情況并不比那時好。也許我是幸運的。如果我大學一畢業(yè)就結(jié)婚,我可能會在一個完全不同的地方生活著。
你知道自己走了這條彎路,但又有誰會知道呢?
推廣:獵云銀企貸,專注企業(yè)債權(quán)融資服務(wù)。比銀行更懂你,比你更懂銀行,詳情咨詢微信:
zhangbiner870616
,目前僅開通京津冀地區(qū)服務(wù)。