剛剛在臉書上看到 Saturday 分享了一個連結,覺得內容還蠻有意思的,所以把大意簡單翻譯在這裡:

◎ ◎ ◎ ◎ ◎

Quora 問答:最早版本的 Google 程式碼品質到底如何?

More about In The Plex

最近有一本新書叫 In the Plex ,寫了很多關於 Google 早期的八卦,其中寫著早期的 Google 搜尋程式原始碼實在是:「不怎麼樣〈Not Great〉」。

Google 一開始並不是個搜尋引擎,而是一個讓網友在網站上留註解〈annotation〉的系統。早期的 Google 其實是用來評比註解的系統,而且叫做 Backrub。〈不知怎麼後來搞到變成網站搜尋系統去了,AltaVista 跟 Yahoo 創辦人半夜想到這點應該會氣得睡不著覺。〉

問題是創辦人 Larry Page 的程式功力 … 〈這裡用了很隱諱的形容詞,叫做『他當時不是個世界級的的程式設計師 He wasn’t a world-class programmer』,以免得罪一狗票的 Google 工程師〉,寫了很久寫不出來。他只好求救於當時的好朋友〈也是個程式助教〉 Scott Hassan 。

Scott Hassan 發現,這程式裡面的臭蟲多得不得了,除了 Larry Page 的關係以外,還因為 Page 企圖心太旺盛,用了當時很新的程式語言 Java〈俗稱的小孩開大車是也〉── 結果 Java 一天到晚當掉,Hassan 光是 debug Java 就搞到翻臉,決定直接用 Python 重寫,才把 Backrub 搞定。〈所以程式碼有大半是 Scott Hassan 貢獻的?〉

有趣的是,兩年後 Larry Page 跟 Sergey Brin 合夥,決定要把 Backrub 用在網頁搜尋上,成立了 Google 。沒想到這時候他們又遇到了問題,Google 常常當掉,有的人根本連結果頁面都開不起來。追查半天,一個新員工、也是前 UCSB 的教授 Urs Hölzle 發現:問題又出在程式碼身上,因為他們用的是… Python。

“The web server couldn’t handle more than ten requests or so a second because it was written in Python, which is a great idea for a research system, but it’s not a high-performance solution”

每秒十個以上的搜尋 request 就會讓 Google 當掉,因為程式碼是用Python寫的。 Python 拿來當研究用的開發語言很好,但不適合用在講究高效能的環境上。

不過沒關係,反正 Google 慢慢有錢了,可以請更會寫程式的人來… 經過不斷的重寫跟改進,終於成了今天的 Google … 〈是不是有種小魚終於逆流而上成功的感覺?〉

◎ ◎ ◎ ◎ ◎

翻譯就到這裡,的確是很有意思的故事。〈這本書裡面應該還有很多類似的故事,有空應該找來看看〉

接下來的引申時間,我想多數人的結論多半是…「原來早期的 Google 程式碼也很爛」、「所以大家不要害怕寫出爛程式碼、早早釋出你的 prototype,開始競爭… 」

我的角度比較不一樣。我想的是:「一個原始碼寫得這麼爛的系統,代表到發展中期會遇到很多效能瓶頸、要花時間重寫、在這段期間被對手追趕過,但它最後還是能變成這麼大這麼成功的事業,顯然他的演算法內容真的不簡單。」

兩種想法也許都沒錯,只是角度問題。

喜歡這篇文章嗎? 給作者一點鼓勵吧!


  • lee

    原來 大家都是一樣的
    一開始並不可能寫出 非常 正確
    的程式碼
    都是需要 改進 改進 再改進
    而產生出 最合適
    的程式碼

  • Mjnext

    M$不是早就證明 程式碼的品質 不是重點嗎 ?

  • M3

    怎麼說…因為他常常出錯嗎?

  • http://twitter.com/Knovour Knovour

    所以要想到好的演算法也不簡單

  • http://profiles.google.com/ericsning EriCSN Chang

    如果一個 programmer 不會鄙視自己以前寫的Code, 那才可怕…

  • http://profiles.google.com/ericsning EriCSN Chang

    一個人總不能盡善盡美吧…能想到這麼強的演算法,程式功力又了得,那其他人怎麼混?XD

  • http://www.facebook.com/people/Eve-Chen/1548632612 Eve Chen

    爛的程式碼這麼多,怎麼決定要先修改這個?要修改到什麼程度?
    啊哈,所以是趨勢預測的問題XD

  • Cheryl

    版主您好~

    我這邊是BlogAD活動組,看到您撰寫3C科技的優質文章,想邀請您成為我們的會員,除了廣告曝光能增加您blog的價值外,還有實質的收入!
    未來也希望能有機會合作撰寫相關的稿件或作品,希望能先與您進一步聯繫,詢問一下您是否有在承接部落格邀文及詢問關於稿酬的部份?
    再請您提供方便的聯絡電話方式,以方便近日有機會與您邀約合作,將會儘快與您聯絡唷!!

    請參考我們的官網:http://www.blogad.com.tw/BlogAD/
    用部落格賺錢http://www.blogad.com.tw/BlogAD/About/Default.aspx

    方便的話請您回覆您合作的意願至
    e-mail:cheryl@blogad.com.tw 記得附上您的部落格網址~
    電話:02-29224272*810 cheryl

    誠摯歡迎您的加入會員,有任何問題歡迎聯絡~再次感謝!!

  • http://www.inside.com.tw/2011/05/16/code-farmer 美工、碼農與文創產業的雜感 – Inside

    [...] 你可以在約耳的『約耳續談軟體』裡看到比爾蓋茲是如何事必躬親的針對Excel產品經理進行拷問、你可以最近的歷史文件裡,看到Google創辦人雖然當年Code寫不好(:P),但是弄出了極棒的演算法、你可以在『社群網戰』看到馬克是怎麼寫出他的交友網站,這些人都可以稱得上是絕佳駭客(Hackers);這絕對不會是去政府的職訓局上個兩個月後出來,就可以成就的方式。再者粗放農夫出來,就又是回到App一支5,000元做到好的市場,然後市面上充斥著一堆奇怪的半成品。 [...]

  • http://www.facebook.com/people/Singuan-Iap/100000254057027 Singuan Iap

     ”The web server couldn’t handle more than ten requests or so a second because it was written in Python, which is a great idea for a research system, but it’s not a high-performance solution”,這句話我會這樣翻譯:「網站無法處理每秒超過10個查詢,因為是用python寫的,如果作為研究用途這網站構想很好,但並非一個高性能的解決方案」。差別處在於(1) request是http protocol的專門術語,跟搜尋(search)有別。(2)以文法而言,後面兩句所形容的對象不是python,而是「由python寫成的『這一個網站』」。這樣的看法也比較中肯,因為大型系統的效能高不高,多半取決於架構,跟使用哪一種程式語言通常無直接而關鍵的關聯,就算是用C也未必效能很高。最近成為Ubuntu官方支援的雲端系統openstack就是用python寫的。

  • http://www.facebook.com/people/Singuan-Iap/100000254057027 Singuan Iap

      ”The web server couldn’t handle more than ten requests or so a second because it was written in Python, which is a great idea for a research system, but it’s not a high-performance solution”,

    這句話我會這樣翻譯:「網站無法處理每秒超過10個查詢,因為是用python寫的,如果作為研究用途這網站構想很好,但並非一個高性能的解決方案」。

    差別處在於(1) request是http protocol的專門術語,跟搜尋(search)有別。(2)以文法而言,後面兩句所形容的對象不是python,而是「由python寫成的『這一個網站』」。這樣的看法也比較接近事實,因為大型系統的效能高不高,多半取決於架構,跟使用哪一種程式語言通常無直接而關鍵的關聯,就算是用C也未必效能最高。最近成為Ubuntu官方支援的雲端系統openstack就是用python寫的。用python寫的web server無法處理超過10個request,是寫的人造成的,不是python造成的。

  • Garry527527

    haha…
    現在andriod手機用1天就沒電~
    那你覺得andriod的程式碼高不高?

blog comments powered by Disqus