此前,Maurice已經來俄羅斯參加SPTCC(
這篇 habrapost 是對 Maurice Herlihy 的精彩採訪。 它討論了以下主題:
- 學術界和工業界的互動;
- 區塊鏈研究基金會;
- 突破性的想法從何而來? 人氣影響;
- 博士在芭芭拉·利斯科夫的指導下;
- 世界在等待多核;
- 新世界,新問題。 NVM、NUMA 和架構黑客攻擊;
- 編譯器與 CPU、RISC 與 CISC、共享內存與消息傳遞;
- 編寫脆弱的多線程代碼的藝術;
- 如何教學生如何編寫複雜的多線程代碼;
- 新版《多處理器編程的藝術》一書;
- 事務性內存是如何發明的?
- 為什麼值得在分佈式計算領域進行研究;
- 算法的發展是否停止,如何生存;
- 在布朗大學工作;
- 大學研究與企業研究的區別;
- 九頭蛇和SPTDC。
面試由以下人員進行:
維塔利·阿克謝諾夫 — 目前是奧地利 IST 的博士後和 ITMO 大學計算機技術系的一名員工。 從事競爭性數據結構理論與實踐領域的研究。 在加入 IST 之前,他在巴黎狄德羅大學和 ITMO 大學獲得博士學位,師從 Petr Kuznetsov 教授。
阿列克謝·費多羅夫 是 JUG Ru Group 的製作人,這是一家為開發者組織會議的俄羅斯公司。 Alexey 參與了 50 多個會議的籌備工作,從 Oracle(JCK,Java Platform Group)的開發工程師職位到 Odnoklassniki 的開發人員職位,他的簡歷應有盡有。
弗拉基米爾·西特尼科夫 是 Netcracker 的一名工程師。 十年來,他一直致力於 NetCracker OS 的性能和可擴展性,NetCracker OS 是電信運營商用來自動化網絡和網絡設備管理流程的軟件。 對 Java 和 Oracle 數據庫性能問題感興趣。 官方 PostgreSQL JDBC 驅動程序中十多項性能改進的作者。
學術界與工業界的互動
Alexey:Maurice,您在學術界工作了很長時間,第一個問題是關於學術界和產業界的互動。 你能告訴我們他們之間的互動最近發生了怎樣的變化嗎? 20-30 年前是什麼,現在又發生了什麼?
Maurice:我一直試圖與商業公司密切合作,因為他們面臨著有趣的挑戰。 通常,他們對公佈他們的結果或向國際社會詳細解釋他們的問題都不太感興趣。 他們只對解決這些問題感興趣。 我曾在其中一些公司工作過一段時間。 我在 Digital Equipment Corporation 的研究實驗室全職工作了五年,該公司曾經是一家大型計算機公司。 我每週在 Sun、微軟、甲骨文工作一天,在 Facebook 工作一小會兒。 現在我要休假(美國大學的教授被允許休一年這樣的假,大約每六年一次)並在
Alexey:你能告訴我們更多關於這是如何發生的嗎?
莫里斯:當然。 你知道,當我在 Digital Equipment Corporation 時,我和 Elliot Moss 發明了事務性內存。 那是一個碩果累累的時期,每個人都開始對信息技術感興趣。 包括並發性,儘管多核系統還不存在。 在 Sun 和 Oracle 的日子裡,我在並行數據結構方面做了很多工作。 在 Facebook,我參與了他們的區塊鏈項目,我不能談論它,但希望能盡快公開。 明年,在 Algorand,我將在一個研究智能合約的研究團隊中工作。
Alexey:在過去的幾年裡,區塊鏈已經成為一個非常熱門的話題。 對你的研究有幫助嗎? 也許它會更容易獲得贈款或獲得業內公司的資源?
Maurice:我已經收到了以太坊基金會的一筆小額贈款。 區塊鏈的普及對於激勵學生從事這一領域的工作非常有用。 他們對此很感興趣,也很樂意參與其中,但有時他們沒有意識到,表面上聽起來很誘人的研究實際上需要付出艱苦的努力。 然而,我很高興在區塊鏈周圍使用所有這些神秘的東西,它有助於吸引學生。
但這還不是全部。 我是幾家區塊鏈初創公司的顧問委員會成員。 他們中有些人可能會成功,有些人可能不會,但看到他們的想法、研究他們並向人們提供建議總是很有趣。 最令人興奮的事情是當你警告人們不要做某事時。 很多事情乍一看似乎是個好主意,但真的是這樣嗎?
區塊鏈研究基金會
Vitaly:有些人認為區塊鍊及其算法是未來。 其他人說這只是另一個泡沫。 你能談談你對這個問題的看法嗎?
Maurice:區塊鏈世界中發生的很多事情都沒有正常運作,有些只是騙局,很多事情都被高估了。 但是,我認為這些研究有堅實的科學基礎。 區塊鏈世界充滿意識形態分歧的事實表明了興奮和奉獻的程度。 另一方面,對科學研究也不是特別有利。 現在,如果你發表一篇文章談論特定算法的缺點,收到的反應並不總是完全科學的。 人們經常表達自己的情緒。 我認為在這個領域的這種炒作對一些人來說可能看起來很有吸引力,但最終,還有真正的科學和工程問題有待解決。 這裡有很多計算機科學。
Vitaliy:所以你正在努力為區塊鏈研究奠定基礎,對吧?
莫里斯:我正在努力為一門堅實的、科學的和數學上健全的學科奠定基礎。 部分問題在於,有時你不得不反駁其他人的一些過於苛刻的立場,以忽視他們。 有時人們問我為什麼在一個只有恐怖分子和毒販感興趣的領域工作。 這樣的反應就像追隨者盲目重複你的話一樣毫無意義。 我認為真相介於兩者之間。 區塊鏈尚未對社會和全球經濟產生深遠影響。 但是,由於現代技術,這可能不會發生。 現代技術會發展,未來所謂的區塊鏈會變得非常重要。 也許它甚至看起來都不像現代區塊鏈,這是一個懸而未決的問題。
如果人們發明新技術,他們將繼續稱其為區塊鏈。 我的意思是,就像今天的 Fortran 與 1960 年代的 Fortran 語言毫無關係,但每個人都一直稱它為 Fortran。 UNIX 也一樣。 所謂的“區塊鏈”尚未發生革命。 但我懷疑這個新的區塊鏈會像今天每個人都喜歡使用的那樣。
突破性的想法從何而來? 人氣影響
Alexey:從科學的角度來看,區塊鏈的流行是否帶來了新的成果? 該地區更多的互動、更多的學生、更多的公司。 這種受歡迎程度的增長是否已經產生了任何結果?
莫里斯:當有人遞給我一張公司的官方傳單時,我對這個產生了興趣,這家公司剛剛籌集了很多資金。 她寫了關於
Alexey:這很有趣,因為幾年前我們有不同的趨勢。 這有點像前端開發,瀏覽器界面開發人員重新發明了當時已經在後端流行的整個技術:構建系統、持續集成等等。
莫里斯:我同意。 但這並不奇怪,因為真正具有突破性的想法總是來自既定社區之外。 成熟的研究人員,尤其是學術界的權威,不太可能做任何真正具有開創性的事情。 為下一次會議寫一份報告,說明您如何略微改進了過去的工作成果,這很容易。 去參加一個會議,和朋友聚在一起,談論同樣的事情。 而那些帶著突破性想法闖進來的人,幾乎都是外來的。 他們不了解規則,他們不懂語言,但仍然...圖片。 從某種意義上說,可以嘗試將外部的、更流暢的發展與我們已經了解的技術結合起來。 作為第一步,嘗試創建一個科學基礎,然後對其進行修改,以便將其應用於新的突破性想法。 我認為區塊鏈非常適合新的突破性想法。
阿列克謝:你認為為什麼會這樣? 因為“外面”的人在社區中沒有任何固有的特定障礙?
莫里斯:這裡有一個模式。 如果您總體上閱讀了印象派在繪畫和藝術方面的歷史,那麼著名藝術家曾一度拒絕印象派。 他們說這是某種幼稚。 一代人之後,這種以前被拒絕的藝術形式成為了標準。 我在我的領域看到的:區塊鏈的發明者對權力、對結束出版物和引文索引不感興趣,他們只是想做點好事。 於是他們坐下來開始做。 他們缺乏一定的技術深度,但這是可以解決的。 想出新的創意比糾正和放大不夠成熟的創意要困難得多。 感謝這些發明家,我現在有事可做!
Alexey:這類似於初創公司和遺留項目之間的區別。 我們繼承了很多思想局限、障礙、特殊要求等等。
Maurice:一個很好的類比是分佈式計算。 將區塊鏈想像成一家初創公司,將分佈式計算想像成一家大型老牌公司。 分佈式計算正在被收購併與區塊鏈合併。
芭芭拉·利斯科夫博士
Vitaliy:我們還有很多問題! 我們一直在研究您的簡歷,並發現了一個關於您的博士學位的有趣事實。 是的,那是很久以前的事了,但話題似乎很重要。 您在以下人員的指導下獲得了博士學位
Maurice:當時,Barbara 和她的團隊只關注分佈式計算,這是一個非常新的想法。 也有人說分佈式計算是扯淡,計算機之間的通信沒有意義。 分佈式計算中考慮的問題之一是容錯性,這將它們與集中式計算區分開來。 經過大量研究,我們決定在分佈式計算的編程語言中,您需要有類似原子事務的東西,因為您永遠無法確定遠程調用是否會成功。 一旦有了事務,就會出現並發控制的問題。 然後在獲得高度並行的事務數據結構方面進行了大量工作。 然後當我畢業時我去了
等待多核的世界
Vitaly:您提到當時很少有多核計算機,對嗎?
莫里斯:他們只是不存在。 有幾個所謂的對稱多處理器,它們基本上連接到同一條總線上。 它運行得不是很好,因為每次新公司創建這樣的東西時,英特爾都會發布一個性能優於多處理器的單處理器。
阿列克謝:那豈不是說在古代更多的是理論研究?
莫里斯:這不是理論性的,而是推測性的研究。 所有這一切都不是關於使用大量定理,而是我們提出了當時不存在的架構的假設。 這就是研究的目的! 沒有公司會這樣做,這一切都來自遙遠的未來。 事實上,這一直持續到 2004 年,那時真正的多核處理器出現了。 由於處理器過熱這一事實,您可以使處理器更小,但不能使其更快。 因此,出現了向多核架構的過渡。 然後這意味著突然間我們過去開發的所有概念都有用了。
Alexey:為什麼您認為多核處理器只出現在 XNUMX 年代? 那麼為什麼這麼晚?
Maurice:這是由於硬件限制。 英特爾、AMD 和其他公司非常擅長提高處理器速度。 當處理器在某個時候變得足夠小以至於它們無法再提高時鐘速度時,因為處理器會開始燒毀。 你可以讓它們更小,但不能更快。 他們的力量是什麼——不是一個非常小的處理器,而是在相同體積的機箱中安裝八個、十六個或三十二個處理器,而以前只能安裝一個。 現在你有了多線程和它們之間的快速通信,因為它們共享緩存。 但是你不能讓它們跑得更快——有一個非常具體的速度限制。 他們繼續一點一點地改進,但沒有那麼多。 物理定律擋住了路。
新世界,新問題。 NUMA、NVM 和架構黑客
阿列克謝:聽起來很有道理。 新的多核處理器帶來了新的問題。 您和您的同事是否預料到這些問題? 也許您已經提前研究過它們? 在理論研究中,預測這些事情往往不是很容易。 當問題確實發生時,它們在多大程度上符合您和您同事的期望? 或者它們是全新的,您和您的同事不得不花很多時間解決出現的問題?
Vitaliy:我將補充 Alexey 的問題:您在研究理論時是否正確預測了處理器的架構?
莫里斯:並非所有 100%。 但我認為我和我的同事在預測共享內存多核方面做得很好。 我認為我們正確地預測了設計無鎖並行數據結構的困難。 這種數據結構對許多應用程序都很重要,儘管不是對所有應用程序都重要,但通常您確實需要無鎖數據結構。 當我們發明它們時,許多人認為這是無稽之談,只要有鎖,一切都可以正常工作。 我們很好地預見到,許多編程問題和數據結構問題都會有現成的解決方案。 還有更複雜的問題,比如
Alexey:如果我理解正確的話,NUMA 是成本、性能和其他一些東西之間的一種折衷。 知道為什麼 NUMA 來的這麼晚嗎?
Maurice:我認為 NUMA 的存在是因為用於製造內存的硬件存在問題:組件距離越遠,訪問速度越慢。 另一方面,這種抽象的第二個價值是記憶的統一性。 因此,並行計算的特點之一就是所有的抽像都被稍微打破了。 如果訪問是完全統一的,那麼所有內存將是等距的,但這在經濟上,甚至可能在物理上是不可能的。 所以這個矛盾就產生了。 如果您編寫程序時就好像內存是統一的一樣,那麼它很可能是正確的。 從某種意義上說,它不會給出錯誤的答案。 但是她的天上星星的表現是不會搶的。 同樣,如果你寫
維塔利:未來呢? 您能預測處理器將如何進一步發展嗎? 有一種想法認為答案之一是事務性內存。 您可能還有其他庫存。
Maurice:前面有幾個主要挑戰。 一是連貫記憶是一種美妙的抽象,但在特殊情況下它開始崩潰。 因此,例如,NUMA 是一個活生生的例子,您可以在其中假裝統一內存存在。 實際上——不,表演會讓你哭。 在某些時候,架構師將不得不放棄統一內存架構的想法,你不能假裝永遠。 將需要新的編程模型,這些模型易於使用且功能強大以提高底層硬件的效率。 這是一個非常困難的妥協,因為如果你向程序員展示硬件中實際使用的架構,他們會發瘋的。 它太複雜而且不便攜。 如果你呈現的界面過於簡單,性能會很差。 因此,為了提供適用於真正大型多核處理器的有用編程模型,需要做出許多非常困難的妥協。 我不確定除了狹隘的專家以外的任何人都能夠在 2000 核計算機上編程。 除非你在做非常專業或科學的計算、密碼學或其他什麼,否則仍然不清楚如何正確地做。
另一個類似的方向是專門的架構。 圖形加速器已經存在很長時間了,但已經成為一種典型的例子,說明如何進行特殊類型的計算並在專用芯片上運行它。 這增加了它自己的挑戰:你如何與這樣的設備通信,你如何編程。 我最近在外地工作
Alexey:關於非易失性存儲器(
莫里斯:哦,那是另一個很好的例子! NVM 將極大地改變我們看待數據結構等事物的方式。 從某種意義上說,非易失性存儲器有望真正加快速度。 但這不會讓生活變得更輕鬆,因為大多數處理器、高速緩存和寄存器仍然是易失性的。 當你在崩潰後重新啟動時,你的狀態和你的記憶狀態將不會與崩潰前完全相同。 我非常感謝參與 NVM 的人們——很長一段時間以來,研究人員都會有事可做,試圖找出正確性條件。 如果計算能夠在高速緩存和寄存器的內容丟失但主存儲器完好無損的崩潰中倖存下來,則計算是正確的。
編譯器與 CPU、RISC 與 CISC、共享內存與消息傳遞
Vladimir:您如何看待指令集方面的編譯器與處理器的困境? 為那些不在主題中的人解釋:如果我們去不均勻內存或類似的東西,我們可以應用一組非常簡單的指令並要求編譯器生成可以利用這些好處的複雜代碼。 或者我們可以走另一條路:實現複雜的指令並要求處理器重新排序指令並對它們進行其他操作。 你怎麼看待這件事?
莫里斯:我真的沒有這個問題的答案。 這場辯論已經持續了四年。 中間有一段時間
Alexey:對於整個行業來說,一些想法在幾十年內獲勝而在未來幾十年失敗的情況有多普遍? 還有其他這種週期性變化的例子嗎?
Maurice:在分佈式計算領域,有人相信
編寫脆弱的多線程代碼的藝術
阿列克謝:這很有趣。 比如我們在寫代碼的時候,不管是什麼編程語言,通常都要創建像單元格這樣的抽象,可以讀寫。 但實際上,在某些物理層面上,它可能看起來像是在不同計算機和其他設備之間的硬件總線上發送消息。 事實證明,同時在兩個抽象層次上都有工作。
Maurice:毫無疑問,共享內存是建立在消息傳遞之上的——總線、緩存等等。 但是使用消息傳遞很難編寫程序,所以硬件故意撒謊,假裝你有某種統一的內存。 這將使您在性能開始下降之前更容易編寫簡單、正確的程序。 然後你說:看來是時候和緩存交朋友了。 那就是你開始擔心緩存位置的時候,然後我們就走了。 從某種意義上說,您正在打破抽象:您知道它不僅僅是平坦的、統一的內存,而且您將使用這些知識來編寫對緩存友好的程序。 這是你在實際任務中必須做的。 給定的漂亮簡單漂亮的抽象與底層硬件極其複雜的實現之間的這種衝突是每個人都做出自己的妥協的地方。 我有一本關於多處理器和同步的書,有一天我打算在 java.util.並發. 如果你看他們,像
Alexey:當我還小的時候,我曾多次嘗試研究 Doug Lee 的源代碼,例如, java.util.並發,因為它是開源的,所以很容易找到它並嘗試了解那裡發生了什麼。 結果不是很好:通常,完全不清楚為什麼道格決定以這種方式做某事,而其他人都以不同的方式做事。 你如何向你的學生解釋這些事情? 例如,是否有一種特別正確的方法來描述硬核算法的具體細節? 你怎麼做呢?
莫里斯:繪畫老師有一句老話,他們最先記住的是:如果你想像畢加索那樣畫畫,你必須先學會如何畫簡單的寫實圖,只有當你知道規則時,你才能開始打破規則。 如果你立即開始違反規則,你就會陷入困境。 首先,我教學生如何在不擔心性能的情況下編寫簡單、正確的代碼。 我是說這裡潛伏著複雜的時序問題,所以不要擔心緩存,不要擔心內存模型,只要確保一切正常即可。 這已經夠難了:現代編程本身並不容易,尤其是對新生而言。 當他們對如何編寫正確的程序有直覺時,我說:看看這兩個自旋鎖實現:一個很慢,第二個也不是很好,但已經更好了。 然而,這兩種算法在數學上是相同的。 事實上,其中之一使用緩存局部性。 其中一個在本地緩存數據上旋轉,另一個通過總線重複執行操作。 如果你不理解它,如果你不知道如何打破抽象並查看底層結構,你就無法編寫高效的代碼。 但是您無法立即開始執行此操作。 有些人立即開始這樣做並相信自己的天才,通常結果很糟糕,因為他們不了解其中的原理。 沒有人像畢加索那樣畫畫,也沒有人像剛從大學畢業的道格·李 (Doug Lee) 在第一周就開始寫程序。 達到這種知識水平需要數年時間。
Alexey:原來你把問題分成兩部分:第一是正確性,第二是性能?
莫里斯:沒錯。 而且,按照這個順序。 部分問題是新生沒有意識到正確性很難實現。 他們乍一看說:這顯然是正確的,只是為了加快速度。 所以有時我告訴他們一個本質上不正確的算法,就好像它是正確的一樣。
如何教學生編寫複雜的多線程代碼
阿列克謝:只是為了看看他們是否能感應到詭計?
Maurice:我總是提前警告你,有時我會想出錯誤的算法。 你不應該欺騙別人。 我建議他們對這些信息持懷疑態度。 如果我說了些什麼然後說:“看,這顯然是正確的”——這是一個信號,表明他們在某個地方試圖欺騙你,你應該開始提問了。 接下來,我嘗試鼓勵學生不斷提問,然後提示:“如果我們讓一切保持原樣,會發生什麼?”。 他們立即看到錯誤。 但是讓學生相信他們需要擔心正確性比乍看起來要困難得多。 這些學生中有很多是在高中就開始編程的,有的已經找到工作並在那裡編程,他們都充滿了自信。 這是軍事上的事情:你首先必須扭轉他們的情緒,才能說服他們耐心地解決新出現的問題。 或者可能就像佛教僧侶:首先他們學會推理正確性,一旦他們了解推理正確性的方式,他們就可以進入下一個層次並開始擔心性能。
Alexey:也就是說,有時你會向學生展示無法工作的示例,由此你會得到反饋,表明他們是否理解問題的本質,是否能找到錯誤的代碼和錯誤的結果。 那麼,學生通常如何取悅或不高興?
莫里斯:幾乎總是學生最終會發現錯誤。 如果他們搜索得太慢,我會提出引導性問題,在這裡重要的是要了解,如果他們從未被欺騙,他們將開始不假思索地將您的話視為最終真理。 然後他們會感到無聊,並在課堂上用筆記本電腦閱讀 Facebook 時睡著了。 但是當你提前讓他們知道他們要被騙了,如果他們不覺悟就會顯得很愚蠢,他們就會變得更加警惕。 這在很多方面都是好的。 我希望學生不僅要質疑自己對問題的理解,還要質疑老師的權威。 這個想法是學生可以隨時舉手說:我認為你剛才說的是錯誤的。 它是一個重要的學習工具。 我不希望任何一個學生坐下來靜靜地想:這一切看起來完全是胡說八道,但是舉手太可怕了,而且他確實是教授,所以他說的都是真的。 因此,如果事先警告他們並非所講的一切都一定是真實的,他們就有動力更加註意材料。 我明確聲明舉手提問是可以的。 你的問題可能聽起來很愚蠢或天真,但這往往是最好的問題的來源。
阿列克謝:非常有趣。 通常人們有某種心理障礙,阻止他們向教授提問。 特別是如果房間裡有很多人,每個人都害怕討論你的愚蠢問題會佔用所有這些人的時間。 有什麼技巧可以解決這個問題嗎?
Maurice:我經常停下來問經典問題。 任何陳述是否正確,或者他們將如何解決正在討論的問題。 這是關鍵的一步,尤其是在會議開始時,人們甚至都不好意思說出哪怕是最小的事情。 你問學生一個問題,什麼都不說。 一片寂靜,每個人都有些緊張,緊張感越來越強,然後突然有人崩潰了,崩潰地說出了答案。 所以你展開了這個情況:保持沉默比回答更困難和不舒服! 這是一個標準的教學技巧。 世界上每一位老師都應該知道如何做到這一點。
Alexey:現在我們為這次採訪取了一個很棒的標題:“回答比保持沉默更容易。”
維塔利:讓我再問你一件事。 您正在研究拓撲證明。 你怎麼連這個都扯進來了,因為分佈式計算和拓撲是完全不同的東西!
莫里斯:那裡有一個隱藏的關係。 當我還是一名學生並學習數學時,我學習的是純數學。 直到我的學業結束,我才真正對計算機產生了興趣,我發現自己迫切需要找工作。 作為一名學生,我學習了代數拓撲。 許多年後,在解決一個名為
Vitaliy:原來你只是運氣好?
Maurice:除了運氣,還有 準備就緒. 意思是,你不應該忘記你以前學過的“無用”的東西。 你學到的無用的東西越多,你在面對新問題時就能提煉出越多的見解。 這種直觀的模式匹配很重要,因為……這麼說吧,它是一個鏈:一開始,我發現圖形不太行或根本行不通,這讓我想起了八年前的事情以及我們研究所有這些單純复形的學生時代。 反過來,這讓我找到了我的舊拓撲教科書並將其重新加載到我的腦海中。 但如果不是因為那些舊知識,我永遠不會在解決最初的問題上取得任何進展。
新版多處理器編程藝術
阿列克謝:你對你的書說了幾句話。 您撰寫了世界上最著名的多線程書籍可能不是最大的秘密,
莫里斯:你問得好! 很快,三個月左右。 還有兩位作者,我們添加了更多材料,改進了關於 fork / join 並行性的部分,寫了關於 MapReduce 的部分,添加了很多新東西並扔掉了不必要的東西 - 在撰寫本文時非常有趣的東西第一版,但今天已經不復存在了。 結果證明這是一本經過認真修訂的書。
阿列克謝:一切都已經完成,只剩下發布了嗎?
Maurice:還有幾章需要完善。 我們的出版商(我想他已經恨我們了)仍在試圖傳達我們應該更快地工作。 我們遠遠落後於計劃。 從理論上講,我們本可以早幾年完成這本書。
阿列克謝:有沒有機會在聖誕節前得到這本書的新版本?
莫里斯:那是我們的目標! 但是我已經多次預測勝利,以至於沒有人再相信我了。 在這件事上你可能也不應該太相信我。
阿列克謝:無論如何,這是個好消息。 我真的很喜歡這本書的第一版。 你可以說我是粉絲。
Maurice:希望新版對得起你們的熱情,謝謝!
事務性內存是如何發明的
Vitaly:下一個問題是關於事務內存的。 據我了解,你是這個領域的先驅,你在沒有人想過這些事情的時候發明了它。 你為什麼決定搬到這個地區? 為什麼交易對你很重要? 您是否認為有一天它們會體現在鐵中?
Maurice:我從研究生學習開始就了解交易。
Vitaliy:是的,但這些是不同的交易!
Maurice:我曾與 Elliott Moss 一起研究非阻塞垃圾收集。 我們的問題是我們想原子地改變內存中的幾個單詞,然後算法會變得非常簡單,至少其中一些會變得更有效率。 使用
維塔利:數十億! 就說“億”吧!
莫里斯:是的,那是我應該說的。 現在,在創業時代等等,我知道如何編寫商業計劃書。 您可以對潛在利潤的大小撒謊。 但在那個年代顯得幼稚,所以我只是說,“我不知道。” 如果您查看有關事務性內存的出版物歷史,您會注意到一年後有幾次引用它,然後大約十年沒有人引用這篇文章。 引用出現在 2004 年左右,當時真正的多核應運而生。 當人們發現編寫並行代碼可以賺錢時,新的研究開始了。 拉維·拉傑瓦爾
為什麼值得在分佈式計算領域做研究
Vitaly:如果我們談論新的研究,您會給讀者什麼建議——分佈式計算還是多核,為什麼?
Maurice:如今獲得多核處理器很容易,但建立真正的分佈式系統卻更難。 我開始研究它們是因為我想做一些與我的博士不同的事情。 這是我一直給初學者的建議:不要寫後續論文——嘗試朝著新的方向前進。 另外,多線程很容易。 我可以在筆記本電腦上運行我自己的 fork,而無需起床。 但是如果我突然想創建一個真正的分佈式系統,我將不得不做很多工作,吸引學生等等。 我是一個懶惰的人,更喜歡在多核上工作。 試驗多核系統也比試驗分佈式系統更容易,因為即使在一個愚蠢的分佈式系統中,也有太多的因素需要控制。
Vitaliy:你現在在做什麼,研究區塊鏈? 你應該首先關注哪些文章?
莫里斯:最近出現
算法的發展是否停止,如何生存
Vitaly:是時候回答最後一個理論問題了! 是否感覺競爭性數據結構的進步每年都在萎縮? 您認為我們對數據結構的理解是否已經達到了一個平台,或者會有一些重大改進? 也許有一些聰明的想法可以徹底改變一切?
Maurice:我們可能已經達到了傳統架構數據結構的穩定期。 但是新架構的數據結構仍然是一個非常有前途的領域。 如果您想為硬件加速器創建數據結構,那麼 GPU 數據結構與 CPU 數據結構非常不同。 當你為區塊鏈設計數據結構時,你需要對數據片段進行哈希處理,然後將它們放入類似
Vitaly:因此,要成為一名非常有名的研究人員,我必鬚髮明自己的架構🙂
Maurice:你可以“竊取”別人的新架構——這看起來容易多了!
在布朗大學工作
Vitaliy:你能告訴我們更多關於
莫里斯:布朗大學是美國最古老的大學之一。 我覺得只有哈佛大一點。 布朗是所謂的一部分
然而,儘管布朗在美國享有盛譽,但他在海外卻出人意料地默默無聞。 如您所見,現在我正在盡最大努力糾正這種情況。
大學研究與企業研究的區別
Vitaliy:好的,下一個問題是關於數字設備的。 你是那裡的研究員。 在大公司的研發部門工作和在大學工作有什麼區別? 有什麼優點和缺點?
Maurice:我在 Microsoft 工作了 XNUMX 年,與 Sun Microsystems、Oracle、Facebook 和現在的 Algorand 的人密切合作。 基於這一切,我想說,無論是在公司還是在大學裡,都可以進行一流的研究。 重要的區別在於,在公司中,您與同事一起工作。 如果我突然對一個尚不存在的項目有了想法,我必須讓我的同行相信這是一個好主意。 如果我在布朗大學,那麼我可以對我的學生說:讓我們研究反重力吧! 他們要么去找別人,要么接手這個項目。 是的,我需要尋找資金,我需要寫一份撥款申請等等。 不管怎樣,總會有很多學生,你可以單方面做決定。 但是在大學裡,你很可能不會和你這個級別的人一起工作。 在工業研究領域,您首先必須讓所有人相信您的項目值得進行。 我不能向任何人訂購任何東西。 這兩種工作方式都很有價值,因為如果你正在做一些非常瘋狂的事情而你的同事很難說服,那麼說服研究生就更容易了——尤其是如果你付錢給他們的話。 如果你從事的工作需要大量經驗和深厚的專業知識,那麼你需要的同事可以說“不,我剛好了解這個領域,而你的想法很糟糕,不會有任何結果。” 這在浪費時間方面非常有用。 而且,如果在工業實驗室你花很多時間寫報告,那麼在大學你花時間找錢。 如果我希望學生能夠去某個地方旅行,我必須在其他地方找到錢。 而且你在大學裡的職位越重要,你用來收錢的時間就越多。 所以,現在你知道我的工作是什麼了——職業乞丐! 就像那些帶著布施盤四處走動的僧侶一樣。 總的來說,這兩項活動是相輔相成的。 這就是為什麼我試圖在兩個世界中堅定地生活和站穩腳跟。
Vitaliy:似乎說服一家公司比說服其他科學家更難。
莫里斯:更難,而且更難。 而且,在不同的領域是不同的:有人進行全面研究,有人專注於他們的主題。 如果我去微軟或 Facebook 說,讓我們做反重力,他們幾乎不會感激。 但是,如果我對我的研究生說完全相同的話,他們很可能會立即開始工作,儘管現在我已經遇到了問題——因為你需要為此找錢。 但是只要你想做符合公司目標的事情,那家公司就可以是一個非常好的做研究的地方。
九頭蛇和SPTDC
Vitaliy:我的問題即將結束,讓我們談談即將到來的俄羅斯之行。
莫里斯:是的,我很期待回到彼得堡。
Alexey:今年你能和我們在一起,我感到非常榮幸。 這是你第二次來聖彼得堡了吧?
莫里斯:已經是第三個了!
阿列克謝:明白了,但是
Maurice:在學校,我想談談區塊鏈的基礎知識以及你可以用它做什麼。 我想表明,區塊鏈與我們熟悉的多線程編程非常相似,但有它們自己的細微差別,了解這些差異很重要。 如果你在一個普通的網絡應用程序中犯了一個錯誤,那就太煩人了。 如果你在金融應用程序中編寫有錯誤的代碼,肯定有人會偷走你所有的錢。 這是完全不同層次的責任和後果。 我會稍微談談工作量證明、智能合約、不同區塊鏈之間的交易。
其他演講者將在我旁邊工作,他們也對區塊鏈有話要說,我們同意相互協調,以便我們的故事能夠很好地契合。 但是對於工程演講,我想向廣大聽眾解釋為什麼你不應該相信你聽到的關於區塊鏈的一切,為什麼區塊鍊是一個偉大的領域,它如何與其他眾所周知的想法相吻合,以及為什麼我們應該大膽展望未來。
Alexey:另外,我想說這不會像兩年前那樣以聚會或用戶組的形式進行。 我們決定在學校附近舉行一個小型會議。 原因是在與 Peter Kuznetsov 交談後,我們意識到學校僅限於 120 人,也許 XNUMX 人。 同時,有很多工程師想和你交談,參加報告,並且對這個話題普遍感興趣。 為此,我們創建了一個新的會議
莫里斯:因為它有七個揚聲器? 他們可以被砍掉腦袋,新的演講者會代替他們長出來嗎?
Alexey:培養新演講者的好主意。 但實際上,這裡有一個故事。 還記得奧德修斯的傳說嗎,他必須在那裡航行
無論如何,我們的問題和時間都用完了。 感謝朋友們接受精彩的採訪,我們在 SPTDC 和 Hydra 2019 見!
2019 年 11 月 12 日至 2019 日在聖彼得堡舉行的 Hydra XNUMX 會議上將有可能繼續與 Maurice 交流。 他會帶著報告來
«區塊鍊和分佈式計算的未來» . 可以購買門票在官方網站上 .
來源: www.habr.com