1. 程式人生 > >谷歌大牛 Jeff Dean 是如何成為網際網路戰神的

谷歌大牛 Jeff Dean 是如何成為網際網路戰神的

轉載:https://blog.csdn.net/leonzhouwei/article/details/11554391

谷歌大牛 Jeff Dean 是如何成為網際網路戰神的

原文連結:  Will Oremus   翻譯:  伯樂線上 Lex Lian
譯文連結:  http://blog.jobbole.com/47726/

“光在真空中的速度曾經是大約每小時35英里,然後Jeff Dean花了一個週末優化了基礎物理學。”——出自“

關於Jeff Dean的事實

其實,“關於Jeff Dean的事實”這個G+帖中描述的並非是真實的。不過有人大費周折為他建立了一個類似於“關於Chuck Norris 的事實”這樣的網站,這倒是件不同尋常的事。這是因為Jeff Dean是一位軟體工程師,而軟體工程師們通常是不會像武術界的戰神Chuck Norris那樣的。一方面,他們不是獨行俠,軟體開發從本質上來講是一個協作過程。另一方面,他們也從來不會像這個視訊裡面的Chuck Norris那樣用衝鋒槍來打牛仔

譯註:Chuck Norris(查克·諾里斯)是空手道世界冠軍、美國電影演員。他有另一個更為人所共知的譯名“羅禮士”,出自功夫名片《猛龍過江》。 他發展電影事業初期,在李小龍執導的武打電影《猛龍過江》中飾演一名空手道高手Colt,與李小龍在羅馬鬥獸場決鬥,公認是經典的武打場面。(摘自

維基百科


Jeff Dean

然而,在2007年的愚人節,一些慕名而來的年輕谷歌工程師覺得應該給Jeff Dean製作一個網站,來讚揚他在程式設計方面的成就(譯者:以下都只是玩笑,並不是真的)。例如:

  • 編譯器不會向Jeff Dean給出警告的,Jeff Dean會給編譯器警告的。
  • Jeff Dean是直接寫二進位制程式碼的,然後他寫了原始碼,作為給其他開發人員看的文件。
  • 當Jeff Dean考慮人體工程學的問題的時候,這是為了保護他的鍵盤。
  • 有一天當Jeff Dean在優化一個功能時,他被迫發明了非同步呼叫的API。這樣的話這個功能可以在它被呼叫之前就可以返回結果了。

關於Jeff Dean的一個真正的事實是:你必須是一個計算機高手,才能瞭解人們說的很多關於Jeff Dean的笑話。(對此有興趣的讀者,Business Insider 網站提供了一些關於他的比較流行的笑話的解釋。)如果你沒有電腦科學的背景知識,那麼你就很難理解那些玩笑中談到的那些他的虛假成就,更不用說理解他在工作中真正的成就了。Dean親手打造的系統,例如,MapReduce、BigTable、Spanner等,對於眾多Google使用者來說並不知道是來源於Goolge的。但是,這些程式都是Google和現代網際網路存在的基石。他現在所工作的一些專案,很有可能會再次為資訊科技帶來革命。

當你在思考是誰創造了當今網際網路的時候,你可能會想到很多公司的創始人和CEO,比如:蒂姆·伯納斯 – 李(Tim Berners-Lee)、馬克·安德森(Marc Andreessen)、拉里·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin),也許是馬克·扎克伯格(Mark Zuckerberg)。這是有道理的,這些人中的每一位都發明瞭一種產品或框架,塑造了我們今天使用網際網路的方式。
同時,在這些已從繁重的日常工作中解脫出來的巨人陰影下,是一幫不知名的開發人員,在鍵盤上每日敲打出來給我們使用的產品和系統。同其他行業不同的是,在高科技行業,這些人通常是不可替換的。一個出色的會計可能會幫你節省5%的個人所得稅。一個出色的棒球選手的上壘率也就比一般球員高出那麼一點點(譯者:棒球運動中一般會用上壘成功率,擊球成功率等來衡量球員的水準)。但是一個出色的軟體開發人員在一週中的工作可能需要一支近10人的團隊花幾個月才能完成。這種差異是指數級別的。這個並不是一個關於Jeff Dean的事實,而是矽谷的高科技行業的常識,也就是為什麼最好的公司會花如此大的代價來吸引頂尖人才。

在Dean 1999年中加入Google的時候,他已經擁有了美國頂尖年輕電腦科學家的榮譽。在家用計算機剛開始普及的時候,Dean說他總是在尋找能夠在一臺給定的機器上不斷追尋極限效能的方法。當他還是一個高中生的時候,他編寫了一個軟體來分析大量的流行病資料。據他說,他的軟體比是當時專業軟體快26倍。這個系統稱之為Epi Info,被美國疾病控制中心(Centers for Disease Control)採納並翻譯成13種語言。當他在讀電腦科學博士的時候,他研究的是編譯器,用來將程式原始碼翻譯成計算機能夠執行的語言。他說到,“我總是喜歡執行得快的程式碼”。

不過Dean並不是安於現狀的人,他也不想把一輩子都花在編譯器上,所以他後來離開了學術界。三年不到,他加入了當時只有20個人的Google。(根據Steven Levy的《In the Plex》一書, 作為搜尋初創企業的Google,當時覺得Dean是一個來之不易的人才。)他為早期的Google News 和AdSense 做出重大貢獻,其中AdSense這一廣告產品改寫了網際網路公司的遊戲規則。在此之後,他轉而關注了公司核心的問題之一:擴充套件性。

Google公司基礎演算法的最初想法來自於Page和Brin, 他們兩在當時都算是頂級的開發人員。在90年代末,他們創造了PageRank演算法,一種在使用者給定搜尋查詢的時候返回最相關搜素結果的演算法。對於搜尋結果相關性的專注讓Google一舉超越了Yahoo, AltaVista以及當時處於領先地位的其他各個搜尋引擎。不過隨著Google變得越來越成功的同時,它也碰到了一項巨大的技術挑戰。Dean回憶道,“我們不能足夠快地部署更多的機器來響應需求”。

所以Dean和他的同事們,包括另一位出色的程式設計師Sanjay Ghemawat一起找到了解決方案。這個問題就像他在高中時對待Epi Info 一樣,看起來象是一個硬體問題。Ghemawat幫助帶領了一個團隊開發了谷歌檔案系統(Google File System, GFS),使得超大型的檔案能夠分佈地被儲存在眾多廉價的伺服器上。然後Dean和Ghemawat一起開發了一個稱之為MapReduce的程式設計工具,來幫助開發人員有效地使用這些機器並行處理龐大的資料集。正像編譯器幫助程式設計師在編寫程式的時候不用考慮CPU是如何處理該程式一樣,MapReduce使得Google的開發人員在調整搜尋演算法或者增加新功能的同時不必擔憂如何將這些運算並行化,也不必擔心如何處理硬體的故障。

Dean和Ghemawat的方法如此之強大,當他們在2004年的一個會議上發表了一篇研究論文之後,這個方法馬上就變成了業界的標準。直到今天,MapReduce成為了眾多其他專案的重要基石,其中之一就是著名的開源框架Hadoop。而正是Hadoop, 造就了業界中新的流行語“大資料”。從在線旅行到能源勘探等不同的領域中都會用到大資料的方法。而正當Google 開始在一些核心的應用中從MapReduce進一步擴充套件到其他新的程式設計模型時,Dean說他還是看到許多夏季實習生到Google後開始新專案的時候,都會大量地開始使用MapReduce。

MapReduce正是Google的創始人之一Page所說的10倍效應的一個好例子。10倍效應說的是比原來的好10倍,而不是比原來做得好10%。MapReduce並沒有使得某一種特定型別的運算更快一點,而是幫助了Google的每一位開發人員可以做到他們以前做不到的事情。

Dean的其他幾個專案也有類似的指數效應。在谷歌檔案系統的基礎上,他和Ghemawat建立了一個分散式資料庫系統,名為BigTable。 BigTable可以處理1PB的資料(1 PB=1千萬GB。)( 譯者:開源社群也有類似的專案, 基於Hadoop 之上的 Hive)之後他們又進一步開發了被稱之為世界上最大的單一資料庫的Spanner系統。連線雜誌(The Wired)的Case Metz說,通過使用創新的時間同步方式,Spanner的物理儲存雖然跨越了全球不同的資料中心,但操作起來就像是在一個地方。換句話來說,它能夠使得全球的資料中心中不同的資訊保持一致,即使一個特定的更新請求可能會需要不同的時間達到不同的資料中心。Metz又說道,在Spanner被報道之前,從來沒有人覺得這種系統是能夠搭建出來的。

現在看起來,這些關於Jeff Dean真正的事實看起來有點像是假的一樣。Dean自己也會對這種情況笑起來,說這個有點尷尬,但同時也一種被恭維的感覺。但他又說,要記住的是,他的這些工作上真正的成就,總是通過和不同的人共同合作得來的。
幾乎每天早上,他都會到位於加利福尼亞州,Mountain View的Google總部上班,而且總是坐下來和同一夥人一起喝咖啡。他估算到,這些年來我們大概一起消滅了20,000杯卡布奇諾吧。這些人並不總是在一起工作。事實上,有些人已經搬到了Google園區另一邊不同的辦公室裡。不過當他們聚在一起討論他們正在做的事情的時候,一些人的問題總是能激勵其他人的新想法。這些咖啡閒聊使得Dean把他在優化、平行計算、軟體架構等方面的經驗運用到眾多不同型別的專案中去。這些使得他產生了足夠的雄心和自信心。作為他長期合作伙伴的Ghemawat說,“他總是對於我們能做到什麼程度充滿了熱情和樂觀,沒有什麼能夠阻礙他”。

他最近的工作可以很好地說明Google接下來會做什麼。去年,他和斯坦福大學機器學習領域的專家、Coursera創始人之一的Andrew Ng一起,幫助了Ng的研究生Quoc Le進行了一項前所未有的無監督機器學習的試驗。這個屬於Google公司祕密的Google X 臭鼬專案下(譯者:指祕密的創新專案)的試驗,將16,000個處理器用於對YouTube視訊進行無人幹攝的學習,來得出如何識別一隻貓的方法。這個看起來是用了很多計算機來得出一個非常基本的結果,但是這個試驗能夠幫助我們為下一代的人工智慧技術打下基礎。未來的人工智慧技術將在許多的潛在應用中發揮作用,這些包括使用了個人助手技術的Google Now,以及對Google 眼鏡專案(Project Glass)會有很大幫助的影象搜尋功能等。

Jeff Dean可能正的會發明一些不可思議的東西,就像“關於Jeff Dean的事實”中提到的只有0和1的特殊鍵盤(譯者:這種鍵盤是不存在的,這個網頁上的文章在開玩笑說Jeff Dean是直接用二進位制的機器程式碼寫程式的。)Jeff Dean承認他並不是機器學習的專家,不過他樂於使用它在搭建可擴充套件、高可用系統方面的經驗來幫助這一方面的研究。

和“關於Jeff Dean的事實”說的相反的是,Dean說在很多情況下解決問題的最佳方法並不是簡單地一坐下來就開始寫程式。他的方法總是在開始的時候需要進行一些簡單的計算,來找到對於特定過程的質量和速度之間的最佳平衡點。他說,從機器翻譯到搜尋質量的許多領域,你總是試圖權衡你能夠對每一個查詢所做的計算量。也許你不能找到最理想的解決方案,但是我們總是可以通過某種近似的方式,通過1%的計算,得到98%的好處。

Dean經常做這類計算,以至於他給出了一個“每個計算機工程師都應該知道的數字列表”(或者這個http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/)。其中包括諸如在光速情況下,從加利福尼亞到阿姆斯特丹傳送一個網路包要花多少毫秒,(150毫秒)。將這些數字牢記在心, 在20分鐘內,你就能從白板上區分在3個設計中哪一個會是最好的。他又說到,如果你不能快速地進行計算?把所有這些數字近似地轉換為2的次方吧,這樣做乘法的時候會比較容易。

如果Dean真的擁有超人的力量的話,那麼這種能力並不能在瞬間就把事情做到完美。這是一種能夠根據事情的不同級別進行權衡、優化,及處理問題的能力。換個角度來說,它是一種能發現機會,並把事情在很短的時間內做到儘可能好,而不是一開始就盡全力追求完美的能力。在矽谷,這可比拿著衝鋒槍向牛仔們掃射酷多了。

--------------------------------------------------------------------------------


Jeff Dean的Stanford演講


Google 公司的 Jeff Dean 在Stanford大學做了一個非常 精彩的演講。我覺得我們每一個人都應該去看一看這個視訊,當然,沒有字幕,需要不錯的聽力,當然,我不可能全部翻譯出來,因為我也不是完全能聽懂,下面是一些相關的Notes,供你參誇,並歡迎牛人指證。

  • 比較了從1999年到2010年十年來的搜尋量的變化。搜尋量增加了 1000 倍,而搜尋速度快了5 倍。1999年,一個網頁的更新最多需要一個月到兩個月,而今天,只需要幾秒鐘,足足加快了5w倍。
  • 一開始,這些大量的查詢產生了大約30GB的I/O量。2004年,他們考慮過全部重寫infrastructure。
  • 討論了一些關於變數長度位元組對齊的東西。
  • 今天的MapReduce 有400萬個作業,處理將近1000PB的資料,130PB的中間資料,還有45PB的輸出資料。(1PB =1024TB)關於 MapReduce (Google雲端計算的精髓) 的一些統計,見下圖:

  • 現在Jeff正在做一個叫Spanner的專案,這是一個跨多個數據中心的專案。在後來的Q&A中,Jeff解釋了現在的資料基本上都在各個資料中心中,資料在不同資料中心間的交換幾乎不可能。所以,他們需要提供一些手動的方式或是一些工作或任務來達到資料共享。這其中還需要有一些策略配置,共同的namespace,事務處理,資料一致性等等工作。
  • 最後一個段落應該是最精彩的,Jeff講了很多很有意思的東西,絕對讓你受用一生:
    • 一個大型的系統需要分解成N多的小services.(這和Amazon的很相似,一個頁面的呼叫可能要經過幾百個後臺的services)
    • 程式碼的效能將會是想當的重要。Jeff給了一張叫“Numbers Everyone Should Know” 的slide,如下所示,我覺得太經典了,其中的東西,如果你看過我的那篇“給老婆普及計算機知識”,我想我不需要多解釋了。(注:1 ns = 十億分之一秒)
    • 把相同的東西抽出來去建立一個系統,而不是把所有的事情交給所有的人。他說: “最後的那個功能可能會導致你怎麼個系統超出了原有的複雜度”。
    • 不要無限制地設計可擴充套件性。5倍到50倍的擴充套件性設計足夠了。如果你要達到100倍的,那應該是re-arch了。
    • Jeff很喜歡有中心主結點的架構體系,他並不喜歡分散式系統。當然,中心主結點主要是用來做控制的,而不是做資料或是計算服務的。
    • J在一些小機器上執行多個小服務,而不在一個大機器上執行一個mongo作業。越小的單元就越容易處理,修復,負載均衡和擴充套件。(化繁為簡)
    • …… ……

這是一個非常不錯的演講,很讓人開闊眼界。

最後,我想說說英文,很多程式設計師都很不喜歡英文,哎……怎麼說呢?如果你今天對英文還很害怕的話,這隻能怪我們的教育制度的失敗。但如果你以此為藉口的話,那隻能怪你自己了。沒有英文的能力,你的技術和認知僅限於中文圈中,而中文圈中基本上都是產商的文化。有人說,“功夫網”讓我們的internet成為了區域網,而我想說,讓我們成為區域網的不是那個牆,而是我們自己的世界觀和英文能力。

(轉載本站文章請註明作者和出處 酷殼 – CoolShell.cn ,請勿用於任何商業用途)


--------------------------------------------------------------------------------

趣文:谷歌大牛Jeff Dean的那些“驚人真相”

原文連結: businessinsider   翻譯: 伯樂線上 - JingerJoe
譯文連結: http://blog.jobbole.com/51607/

在谷歌加州山景城總部,除了拉里·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin),真正的牛人工程師要數傑夫·迪恩(Jeff Dean)了。

谷歌員工都認為谷歌搜尋驚人的速度都歸功於Jeff Dean,因此他也成了谷歌的名人。

大家對他的崇拜到底有多深?

你有聽過關於武術戰神查克·諾里斯的一些笑話嗎?就像“查克從不洗盤子,盤子會因為恐懼他,自動清洗的”或者“查克被商業航班拒載,因為他的拳頭會將飛機擊落”等等諸如此類的笑話。

江湖中有一大堆關於Jeff Dean的傳奇故事,都是由崇拜他的(前)谷歌員工寫的。如果你瞭解軟體工程師,懂得程式設計師幽默的話,那你會覺得那些故事非常有趣。

有時遇到不理解的,我們也會請求 BI首席架構師Pax Dickinson為我們解釋那些笑話。

 

“編譯器從不會給Jeff Dean警告的,Jeff Dean會給編譯器警告的。”

解釋:當你的程式碼有誤時,編譯器會給出警告,但是Jeff比編譯器還牛叉。

 

“Jeff Dean 提交程式碼前會編譯和執行他的程式碼,只是為了檢驗編譯器和連結器有沒有問題。”

解釋:Jeff 的程式碼從不出錯,他編譯程式碼只是為了確保編譯器和連結器沒有bug。

 

“Jeff Dean 每次只給一條腿穿褲子,但是如果他有很多腿,你會發現他穿褲子的時間複雜度為O(log n)”

解釋:Jeff Dean 穿褲子的演算法複雜度是對數級的而不是線性級的,這樣的話,如果他有很多條腿的話,就會大大節約穿褲子的時間。

 

“當 Richard Stallman 聽說Jeff Dean的自傳專屬Kindle平臺,他就去買了Kindle。”

解釋:Richard Stallman是著名的極力反對非自由軟體的人,並且從來不購買和使用Kindle。但是Jeff Dean就是這樣神奇,Richard會因為想要閱讀Jeff的自傳而去違背自己的原則。”

 

“Jeff Dean 是直接寫二進位制機器程式碼的,他寫原始碼,是為了給其他開發人員作參考。”

解釋:所有的程式碼在執行前都要先編譯成二進位制機器碼,Jeff是直接寫二進位制機器碼的,他寫原始碼主要是方便其他程式設計師理解。

 

“Jeff來面試谷歌時,被問到等式P=NP成立的條件,他回答,P=0 或者N=1時成立。然後在面試官哈哈大笑的時候,他看了一眼谷歌公有證書,就直接在白板上寫出了相應的私鑰。”

解釋:“P與NP一直是電腦科學領域的一個懸而未決的問題,但是 Jeff Dean把它想成了一個代數問題,他直接用大腦根據谷歌的公有證書算出了相應的私有祕鑰,這在超級計算機看來,都是不可能的事。

 

“X86-64 規範有幾項非法指令,標誌著‘私人使用’,它們其實是為Jeff Dean專用。”

解釋:私有的非法CPU指令是不能被任何人使用的,但是Jeff Dean 就可以用。

 

“Jeff Dean 進行人體工程學評估,是為了保護他的鍵盤。”

解釋:通常評估人體工程學是糾正坐姿,保護你的健康的,但是Jeff 卻是為了保護他的鍵盤。

 

“所有的指標都是指向Jeff Dean的。”

解釋:指標是C程式設計的核心,但是Jeff  Dean 是程式設計世界的中心。

 

“在2000年末的時候,Jeff Dean 寫程式碼的速度突然增長了40倍,原因是他把自己的鍵盤升級到了USB 2.0。”

解釋:是鍵盤和計算機之間介面的速度影響了Jeff Dean 的編碼速度。

--------------------------------------------------------------------------------

出處: http://www.parallellabs.com/2010/12/02/jeff-dean-on-google-system-architecture/

Jeff Dean關於Google系統架構的講座

2013-11-06 補充:谷歌大神Jeff Dean院士由於業務突出,近日被提拔為Google Senior Fellow。上個月在灣區的一次ACM活動上,Jeff做了關於《大規模深度學習及征服延遲時間易變性》 的報告。強烈推薦!視訊:SFBayACM 2013.10.16 Jeffrey Dean

上個月Jeff Dean在Standford的Computer Systems Colloquium (EE380)這門討論課上詳細講了講Google的系統架構發展過程,因為這是份很新的資料,所以特意把它的Slide下下來與大家分享一下。這門課是Standford的講座課程,每一節課都由不同的頂級工程師/科學家/投資人前來講授IT行業的最新動向,非常非常有料,絕對值得深挖。這門課的每節課都是帶視訊的,Jeff Dean的這個講座的錄影在這裡。想要下載該視訊的同學可以去這裡(要會功夫,你懂的)。

這個講座的主要內容包括:
• Evolution of various systems at Google
– computing hardware
– core search systems
– infrastructure software

• Techniques for building large-scale systems
– decomposition into services
– design patterns for performance & reliability

個人的一點小感想:Jeff Dean在Google的這幾年能面臨這麼多有意思的挑戰,程式設計模型,可靠性,伸縮性,執行時環境等等等等,真是羨煞旁人。隨著Google業務的擴充套件,整個系統的設計也面臨各種各樣新的挑戰。只有有了紮實的基本功,在面對沒有現成解決方案的新問題時才能遊刃有餘,做工程是如此,做研究更是如此。

可能有些同學會因為這是個英語的講座而頭疼。我覺得大家可以堅持看,哪個單詞看不懂的就查字典,剛開始可能痛苦點,但是隻要堅持下去,積少成多,你就會發現自己的英語慢慢就上來了,至少看這些英文slides是沒問題了。

Building Software Systems at Google and Lessons Learned 另外還有幾個關於Jeff Dean的Google架構的博文:

Jeff Dean 在WSDM 2009上面的演講 Keynote 和視訊終於出來了
來自Jeff Dean的分散式系統設計模式(更新版)
Jeff Dean的Stanford演講

我還發現了Jeff另外一個在09年做的類似主題的講座,內容稍有重複,但是可以算是一個補充,例如這個裡面包括了BigTable等內容。

Enjoy!

Dean keynote-ladis2009-jeff-dean

##########################################################################################################################################################

Latency numbers every programmer should know


          
  1. L1 cache reference ......................... 0.5 ns
  2. Branch mispredict ............................ 5 ns
  3. L2 cache reference ........................... 7 ns
  4. Mutex lock/ unlock ........................... 25 ns
  5. Main memory reference ...................... 100 ns
  6. Compress 1K bytes with Zippy ............. 3, 000 ns = 3 µs
  7. Send 2K bytes over 1 Gbps network ....... 20, 000 ns = 20 µs
  8. SSD random read ........................ 150, 000 ns = 150 µs
  9. Read 1 MB sequentially from memory ..... 250, 000 ns = 250 µs
  10. Round trip within same datacenter ...... 500, 000 ns = 0.5 ms
  11. Read 1 MB sequentially from SSD* ..... 1, 000, 000 ns = 1 ms
  12. Disk seek ........................... 10, 000, 000 ns = 10 ms
  13. Read 1 MB sequentially from disk .... 20, 000, 000 ns = 20 ms
  14. Send packet CA->Netherlands->CA .... 150, 000, 000 ns = 150 ms

Assuming ~1GB/sec SSD

Visual representation of latencies

Visual chart provided by ayshen

Data by Jeff Dean

Originally by Peter Norvig


轉載:https://blog.csdn.net/leonzhouwei/article/details/11554391

谷歌大牛 Jeff Dean 是如何成為網際網路戰神的

原文連結:  Will Oremus   翻譯:  伯樂線上 Lex Lian
譯文連結:  http://blog.jobbole.com/47726/

“光在真空中的速度曾經是大約每小時35英里,然後Jeff Dean花了一個週末優化了基礎物理學。”——出自“關於Jeff Dean的事實

其實,“關於Jeff Dean的事實”這個G+帖中描述的並非是真實的。不過有人大費周折為他建立了一個類似於“關於Chuck Norris 的事實”這樣的網站,這倒是件不同尋常的事。這是因為Jeff Dean是一位軟體工程師,而軟體工程師們通常是不會像武術界的戰神Chuck Norris那樣的。一方面,他們不是獨行俠,軟體開發從本質上來講是一個協作過程。另一方面,他們也從來不會像這個視訊裡面的Chuck Norris那樣用衝鋒槍來打牛仔

譯註:Chuck Norris(查克·諾里斯)是空手道世界冠軍、美國電影演員。他有另一個更為人所共知的譯名“羅禮士”,出自功夫名片《猛龍過江》。 他發展電影事業初期,在李小龍執導的武打電影《猛龍過江》中飾演一名空手道高手Colt,與李小龍在羅馬鬥獸場決鬥,公認是經典的武打場面。(摘自維基百科


Jeff Dean

然而,在2007年的愚人節,一些慕名而來的年輕谷歌工程師覺得應該給Jeff Dean製作一個網站,來讚揚他在程式設計方面的成就(譯者:以下都只是玩笑,並不是真的)。例如:

  • 編譯器不會向Jeff Dean給出警告的,Jeff Dean會給編譯器警告的。
  • Jeff Dean是直接寫二進位制程式碼的,然後他寫了原始碼,作為給其他開發人員看的文件。
  • 當Jeff Dean考慮人體工程學的問題的時候,這是為了保護他的鍵盤。
  • 有一天當Jeff Dean在優化一個功能時,他被迫發明了非同步呼叫的API。這樣的話這個功能可以在它被呼叫之前就可以返回結果了。

關於Jeff Dean的一個真正的事實是:你必須是一個計算機高手,才能瞭解人們說的很多關於Jeff Dean的笑話。(對此有興趣的讀者,Business Insider 網站提供了一些關於他的比較流行的笑話的解釋。)如果你沒有電腦科學的背景知識,那麼你就很難理解那些玩笑中談到的那些他的虛假成就,更不用說理解他在工作中真正的成就了。Dean親手打造的系統,例如,MapReduce、BigTable、Spanner等,對於眾多Google使用者來說並不知道是來源於Goolge的。但是,這些程式都是Google和現代網際網路存在的基石。他現在所工作的一些專案,很有可能會再次為資訊科技帶來革命。

當你在思考是誰創造了當今網際網路的時候,你可能會想到很多公司的創始人和CEO,比如:蒂姆·伯納斯 – 李(Tim Berners-Lee)、馬克·安德森(Marc Andreessen)、拉里·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin),也許是馬克·扎克伯格(Mark Zuckerberg)。這是有道理的,這些人中的每一位都發明瞭一種產品或框架,塑造了我們今天使用網際網路的方式。
同時,在這些已從繁重的日常工作中解脫出來的巨人陰影下,是一幫不知名的開發人員,在鍵盤上每日敲打出來給我們使用的產品和系統。同其他行業不同的是,在高科技行業,這些人通常是不可替換的。一個出色的會計可能會幫你節省5%的個人所得稅。一個出色的棒球選手的上壘率也就比一般球員高出那麼一點點(譯者:棒球運動中一般會用上壘成功率,擊球成功率等來衡量球員的水準)。但是一個出色的軟體開發人員在一週中的工作可能需要一支近10人的團隊花幾個月才能完成。這種差異是指數級別的。這個並不是一個關於Jeff Dean的事實,而是矽谷的高科技行業的常識,也就是為什麼最好的公司會花如此大的代價來吸引頂尖人才。

在Dean 1999年中加入Google的時候,他已經擁有了美國頂尖年輕電腦科學家的榮譽。在家用計算機剛開始普及的時候,Dean說他總是在尋找能夠在一臺給定的機器上不斷追尋極限效能的方法。當他還是一個高中生的時候,他編寫了一個軟體來分析大量的流行病資料。據他說,他的軟體比是當時專業軟體快26倍。這個系統稱之為Epi Info,被美國疾病控制中心(Centers for Disease Control)採納並翻譯成13種語言。當他在讀電腦科學博士的時候,他研究的是編譯器,用來將程式原始碼翻譯成計算機能夠執行的語言。他說到,“我總是喜歡執行得快的程式碼”。

不過Dean並不是安於現狀的人,他也不想把一輩子都花在編譯器上,所以他後來離開了學術界。三年不到,他加入了當時只有20個人的Google。(根據Steven Levy的《In the Plex》一書, 作為搜尋初創企業的Google,當時覺得Dean是一個來之不易的人才。)他為早期的Google News 和AdSense 做出重大貢獻,其中AdSense這一廣告產品改寫了網際網路公司的遊戲規則。在此之後,他轉而關注了公司核心的問題之一:擴充套件性。

Google公司基礎演算法的最初想法來自於Page和Brin, 他們兩在當時都算是頂級的開發人員。在90年代末,他們創造了PageRank演算法,一種在使用者給定搜尋查詢的時候返回最相關搜素結果的演算法。對於搜尋結果相關性的專注讓Google一舉超越了Yahoo, AltaVista以及當時處於領先地位的其他各個搜尋引擎。不過隨著Google變得越來越成功的同時,它也碰到了一項巨大的技術挑戰。Dean回憶道,“我們不能足夠快地部署更多的機器來響應需求”。

所以Dean和他的同事們,包括另一位出色的程式設計師Sanjay Ghemawat一起找到了解決方案。這個問題就像他在高中時對待Epi Info 一樣,看起來象是一個硬體問題。Ghemawat幫助帶領了一個團隊開發了谷歌檔案系統(Google File System, GFS),使得超大型的檔案能夠分佈地被儲存在眾多廉價的伺服器上。然後Dean和Ghemawat一起開發了一個稱之為MapReduce的程式設計工具,來幫助開發人員有效地使用這些機器並行處理龐大的資料集。正像編譯器幫助程式設計師在編寫程式的時候不用考慮CPU是如何處理該程式一樣,MapReduce使得Google的開發人員在調整搜尋演算法或者增加新功能的同時不必擔憂如何將這些運算並行化,也不必擔心如何處理硬體的故障。

Dean和Ghemawat的方法如此之強大,當他們在2004年的一個會議上發表了一篇研究論文之後,這個方法馬上就變成了業界的標準。直到今天,MapReduce成為了眾多其他專案的重要基石,其中之一就是著名的開源框架Hadoop。而正是Hadoop, 造就了業界中新的流行語“大資料”。從在線旅行到能源勘探等不同的領域中都會用到大資料的方法。而正當Google 開始在一些核心的應用中從MapReduce進一步擴充套件到其他新的程式設計模型時,Dean說他還是看到許多夏季實習生到Google後開始新專案的時候,都會大量地開始使用MapReduce。

MapReduce正是Google的創始人之一Page所說的10倍效應的一個好例子。10倍效應說的是比原來的好10倍,而不是比原來做得好10%。MapReduce並沒有使得某一種特定型別的運算更快一點,而是幫助了Google的每一位開發人員可以做到他們以前做不到的事情。

Dean的其他幾個專案也有類似的指數效應。在谷歌檔案系統的基礎上,他和Ghemawat建立了一個分散式資料庫系統,名為BigTable。 BigTable可以處理1PB的資料(1 PB=1千萬GB。)( 譯者:開源社群也有類似的專案, 基於Hadoop 之上的 Hive)之後他們又進一步開發了被稱之為世界上最大的單一資料庫的Spanner系統。連線雜誌(The Wired)的Case Metz說,通過使用創新的時間同步方式,Spanner的物理儲存雖然跨越了全球不同的資料中心,但操作起來就像是在一個地方。換句話來說,它能夠使得全球的資料中心中不同的資訊保持一致,即使一個特定的更新請求可能會需要不同的時間達到不同的資料中心。Metz又說道,在Spanner被報道之前,從來沒有人覺得這種系統是能夠搭建出來的。

現在看起來,這些關於Jeff Dean真正的事實看起來有點像是假的一樣。Dean自己也會對這種情況笑起來,說這個有點尷尬,但同時也一種被恭維的感覺。但他又說,要記住的是,他的這些工作上真正的成就,總是通過和不同的人共同合作得來的。
幾乎每天早上,他都會到位於加利福尼亞州,Mountain View的Google總部上班,而且總是坐下來和同一夥人一起喝咖啡。他估算到,這些年來我們大概一起消滅了20,000杯卡布奇諾吧。這些人並不總是在一起工作。事實上,有些人已經搬到了Google園區另一邊不同的辦公室裡。不過當他們聚在一起討論他們正在做的事情的時候,一些人的問題總是能激勵其他人的新想法。這些咖啡閒聊使得Dean把他在優化、平行計算、軟體架構等方面的經驗運用到眾多不同型別的專案中去。這些使得他產生了足夠的雄心和自信心。作為他長期合作伙伴的Ghemawat說,“他總是對於我們能做到什麼程度充滿了熱情和樂觀,沒有什麼能夠阻礙他”。

他最近的工作可以很好地說明Google接下來會做什麼。去年,他和斯坦福大學機器學習領域的專家、Coursera創始人之一的Andrew Ng一起,幫助了Ng的研究生Quoc Le進行了一項前所未有的無監督機器學習的試驗。這個屬於Google公司祕密的Google X 臭鼬專案下(譯者:指祕密的創新專案)的試驗,將16,000個處理器用於對YouTube視訊進行無人幹攝的學習,來得出如何識別一隻貓的方法。這個看起來是用了很多計算機來得出一個非常基本的結果,但是這個試驗能夠幫助我們為下一代的人工智慧技術打下基礎。未來的人工智慧技術將在許多的潛在應用中發揮作用,這些包括使用了個人助手技術的Google Now,以及對Google 眼鏡專案(Project Glass)會有很大幫助的影象搜尋功能等。

Jeff Dean可能正的會發明一些不可思議的東西,就像“關於Jeff Dean的事實”中提到的只有0和1的特殊鍵盤(譯者:這種鍵盤是不存在的,這個網頁上的文章在開玩笑說Jeff Dean是直接用二進位制的機器程式碼寫程式的。)Jeff Dean承認他並不是機器學習的專家,不過他樂於使用它在搭建可擴充套件、高可用系統方面的經驗來幫助這一方面的研究。

和“關於Jeff Dean的事實”說的相反的是,Dean說在很多情況下解決問題的最佳方法並不是簡單地一坐下來就開始寫程式。他的方法總是在開始的時候需要進行一些簡單的計算,來找到對於特定過程的質量和速度之間的最佳平衡點。他說,從機器翻譯到搜尋質量的許多領域,你總是試圖權衡你能夠對每一個查詢所做的計算量。也許你不能找到最理想的解決方案,但是我們總是可以通過某種近似的方式,通過1%的計算,得到98%的好處。

Dean經常做這類計算,以至於他給出了一個“每個計算機工程師都應該知道的數字列表”(或者這個http://everythingisdata.wordpress.com/2009/10/17/numbers-everyone-should-know/)。其中包括諸如在光速情況下,從加利福尼亞到阿姆斯特丹傳送一個網路包要花多少毫秒,(150毫秒)。將這些數字牢記在心, 在20分鐘內,你就能從白板上區分在3個設計中哪一個會是最好的。他又說到,如果你不能快速地進行計算?把所有這些數字近似地轉換為2的次方吧,這樣做乘法的時候會比較容易。

如果Dean真的擁有超人的力量的話,那麼這種能力並不能在瞬間就把事情做到完美。這是一種能夠根據事情的不同級別進行權衡、優化,及處理問題的能力。換個角度來說,它是一種能發現機會,並把事情在很短的時間內做到儘可能好,而不是一開始就盡全力追求完美的能力。在矽谷,這可比拿著衝鋒槍向牛仔們掃射酷多了。

--------------------------------------------------------------------------------


Jeff Dean的Stanford演講


Google 公司的 Jeff Dean 在Stanford大學做了一個非常 精彩的演講。我覺得我們每一個人都應該去看一看這個視訊,當然,沒有字幕,需要不錯的聽力,當然,我不可能全部翻譯出來,因為我也不是完全能聽懂,下面是一些相關的Notes,供你參誇,並歡迎牛人指證。

  • 比較了從1999年到2010年十年來的搜尋量的變化。搜尋量增加了 1000 倍,而搜尋速度快了5 倍。1999年,一個網頁的更新最多需要一個月到兩個月,而今天,只需要幾秒鐘,足足加快了5w倍。
  • 一開始,這些大量的查詢產生了大約30GB的I/O量。2004年,他們考慮過全部重寫infrastructure。
  • 討論了一些關於變數長度位元組對齊的東西。
  • 今天的MapReduce 有400萬個作業,處理將近1000PB的資料,130PB的中間資料,還有45PB的輸出資料。(1PB =1024TB)關於 MapReduce (Google雲端計算的精髓) 的一些統計,見下圖:

  • 現在Jeff正在做一個叫Spanner的專案,這是一個跨多個數據中心的專案。在後來的Q&A中,Jeff解釋了現在的資料基本上都在各個資料中心中,資料在不同資料中心間的交換幾乎不可能。所以,他們需要提供一些手動的方式或是一些工作或任務來達到資料共享。這其中還需要有一些策略配置,共同的namespace,事務處理,資料一致性等等工作。
  • 最後一個段落應該是最精彩的,Jeff講了很多很有意思的東西,絕對讓你受用一生:
    • 一個大型的系統需要分解成N多的小services.(這和Amazon的很相似,一個頁面的呼叫可能要經過幾百個後臺的services)
    • 程式碼的效能將會是想當的重要。Jeff給了一張叫“Numbers Everyone Should Know” 的slide,如下所示,我覺得太經典了,其中的東西,如果你看過我的那篇“給老婆普及計算機知識”,我想我不需要多解釋了。(注:1 ns = 十億分之一秒)
    • 把相同的東西抽出來去建立一個系統,而不是把所有的事情交給所有的人。他說: “最後的那個功能可能會導致你怎麼個系統超出了原有的複雜度”。
    • 不要無限制地設計可擴充套件性。5倍到50倍的擴充套件性設計足夠了。如果你要達到100倍的,那應該是re-arch了。
    • Jeff很喜歡有中心主結點的架構體系,他並不喜歡分散式系統。當然,中心主結點主要是用來做控制的,而不是做資料或是計算服務的。
    • J在一些小機器上執行多個小服務,而不在一個大機器上執行一個mongo作業。越小的單元就越容易處理,修復,負載均衡和擴充套件。(化繁為簡)
    • …… ……

這是一個非常不錯的演講,很讓人開闊眼界。

最後,我想說說英文,很多程式設計師都很不喜歡英文,哎……怎麼說呢?如果你今天對英文還很害怕的話,這隻能怪我們的教育制度的失敗。但如果你以此為藉口的話,那隻能怪你自己了。沒有英文的能力,你的技術和認知僅限於中文圈中,而中文圈中基本上都是產商的文化。有人說,“功夫網”讓我們的internet成為了區域網,而我想說,讓我們成為區域網的不是那個牆,而是我們自己的世界觀和英文能力。

(轉載本站文章請註明作者和出處 酷殼 – CoolShell.cn ,請勿用於任何商業用途)


--------------------------------------------------------------------------------

趣文:谷歌大牛Jeff Dean的那些“驚人真相”

原文連結: businessinsider   翻譯: 伯樂線上 - JingerJoe
譯文連結: http://blog.jobbole.com/51607/

在谷歌加州山景城總部,除了拉里·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin),真正的牛人工程師要數傑夫·迪恩(Jeff Dean)了。

谷歌員工都認為谷歌搜尋驚人的速度都歸功於Jeff Dean,因此他也成了谷歌的名人。

大家對他的崇拜到底有多深?

你有聽過關於武術戰神查克·諾里斯的一些笑話嗎?就像“查克從不洗盤子,盤子會因為恐懼他,自動清洗的”或者“查克被商業航班拒載,因為他的拳頭會將飛機擊落”等等諸如此類的笑話。

江湖中有一大堆關於Jeff Dean的

相關推薦

Jeff Dean 是如何成為網際網路戰神

轉載:https://blog.csdn.net/leonzhouwei/article/details/11554391 谷歌大牛 Jeff Dean 是如何成為網際網路戰神的 原文連結:  Will Or

說:為什麼 Kotlin 比你們用的那些垃圾語言都好

【伯樂線上導讀】:5月18日,安卓團隊在谷歌 I/O 2017 大會上宣佈 Kotlin 成為官方頭等支援語言。這條爆炸性資訊在當天就是 Hacker News 首頁熱門討論,與此同時,谷歌技術大牛 Steve Yegge 也寫了一篇關於 Kotlin 的使用體會總

動作影響大部分App!Android P版本推薦使用HttpURLConnection

早在幾年前,谷歌就推薦在Android2.3版本以上使用HttpURLConnection,而在即將正式釋出的 Android P 版本中,谷歌徹底取消了對Apache HTTPClient的支援,針對此更改,開發者該如何正確適配 Android P ? 一、背景 1、參考谷歌提供

關於Google神Jeff Dean的笑話,非程式設計師勿入(轉)

During his own Google interview, Jeff Dean was asked the implications if P=NP were true. He said, “P = 0 or N = 1.” Then, before the interviewer had ev

神帶你十分鐘看懂TensorFlow

文/資料俠GasparovicTensorFlow 是世界上最受歡迎的開源機器學習框架,它具有快速、靈活並適合產品級大規模應用等特點,讓每個開發者和研究者都能方便地使用人工智慧來解決多樣化的挑戰。今天DT君給大家推薦的這個視訊(及文字實錄),是2017年穀歌開發者大會歐洲站上

神詳解 Kubernetes 配置管理最佳方法_Kubernetes中文社群

於夢琦 / 美國谷歌軟體工程師 嘉賓介紹: 美國谷歌 Kubernetes/Google Container Engine(GKE)組核心成員,主要從事CLI(kubectl)開發以及配置管理的研究與開發。 本科和碩士分別畢業於上海交通大學和 UCSD 大家好!我是來自谷歌的於夢琦。今天我來

神詳解 Kubernetes 配置管理最佳方法

於夢琦 / 美國谷歌軟體工程師 嘉賓介紹: 美國谷歌 Kubernetes/Google Container Engine(GKE)組核心成員,主要從事CLI(kubectl)開發以及配置管理的研究與開發。 本科和碩士分別畢業於上海交通大學和 UCSD 大家

為什麼越來越逼, 而百度卻淪為江湖騙子?

近期,谷歌機器人越發火爆,與此呼應的是前段時間百度貼吧事件的持續發酵。 在某種程度上,企業的發展軌跡正是其擁有及管理者個人意志的體現,更是人生觀、價值觀、社會環境、教育背景的折射。相信每個執著於自我教育的人都有一番思考,今天我們就嘗試著一起探討一下。 1

神為你解釋Kubernetes, 微服務和容器化

來自谷歌雲平臺(Google Cloud Platform)的開發者佈道師 Ray Tsang

程序猿 Jeff Atwood 的兩本中文書

gda emp rfi program ews 英文 release .com gho 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/h

醫療AI商業化提速!Jeff Dean親自挖來總管

一璞 李根 發自 億頃厚木 量子位 報道 | 公眾號 QbitAI 軍方大訂單不讓接,個別國家市場進不去。 眼下的谷歌,即便貴為全球AI第一大廠,處境也非常尷尬。 而且天要下雨員工要吃飯,還得扛起人類的希望,哪怕眼下收入和股價還不錯,但誰又能保證幾年後不會成為雅虎?

Jeff Dean 的傳奇人生:超級工程師們拯救

AI 前線導讀:在很多人眼中,Jeff Dean 就是谷歌技術的代名詞,也是谷歌如此強大的重要原因。但實際上他們都忽視了 Jeff Dean 背後的另外一位技術大神。在谷歌從創業公司成長為一代巨頭的過程中,有數不清的工程師參與貢獻,其中 Jeff Dean 和 Sanjay Ghemawat

之路】指導,報酬豐厚的開源專案---“程式設計之夏”

正文 What 這個問題,我們先來看看 Google 官方是怎麼說的:(出自 What is Google Summer of Code?) Google Summer of Code (GSoC) is a global progr

原創:聊Python小白如何系統自學成為Python(基礎篇一)上

Python Python學習 Python開發 Python自學 原創:聊Python小白如何系統自學成為Python大牛(基礎篇一)上 支持原創 本文章,由頭條py柯西發表,禁止轉載,希望大家支持原創 歡迎大家點擊復制鏈接看原文https://www.toutiao.com/i654581

如何成為編程開發技術

Java 編程開發 技術大牛 經常有人在公眾號裏問我,《第一行代碼》看完了,想再找一本進階的書來學習學習,問我應該看什麽好,我的回答總是《Android開發藝術探索》。這是一本質量很高的進階書,作者是任玉剛,在圈子裏我們都稱他任主席。主席是Android界的大大牛,不僅是名校出身,而且工作也都是大

微軟重生:4年市值U型逆轉,超越重返巔峰!

戰略 又一 basic 前景 自己 bsp 位置 通過 同時   劃重點:   智東西(公眾號:zhidxcom)文 | 寓揚   在最近的兩個星期裏,微軟和谷歌正在進行一場市值大比拼,雙方在7700億美元上下廝殺正緊,搶奪著全球市值第三大公司的寶座(前兩位為市值超

什麽是大數據?如何成為大數據的技術

幹什麽 sqoop 密碼 兩個 實現 抽樣 但是 基礎上 語言排行 其實大數據並不是一種概念,而是一種方法論。簡單來說,就是通過分析和挖掘全量的非抽樣的數據輔助決策。大數據可以實現的應用可以概括為兩個方向,一個是精準化定制,第二個是預測。 比如像通過搜索引擎搜索同樣的內容,

布局小程序,小程序將成為未來電商主要格局—極限工坊淘小咖

互聯網 結合 布局 團隊 項目 alt 引流 消息 零售 微信如今已經是最大的社交軟件,擁有著近乎10億的流量使得其成為眾多商家盈利的方向,隨著新零售的普及,可以想象以後新零售與社交電商小程序的的結合必定能夠帶來高引流和高轉化。 微信在國內目前是一個備受歡迎的消息應用,首次

求職丨我是如何成為的軟件工程師

面試官 語言 我會 mage 你是 職業生涯 朋友 自己 到你 作者 YK Sugi編譯 Mika本文為 CDA 數據分析師原創作品,轉載需授權 前谷歌軟件工程師YK Sugi分享了他是如何通過六個步驟,順利開啟了自己的數據科學職業生涯。 大家好,有很多人問我如何