如何看待谷歌工程師透露谷歌有20億行代碼,相當於寫40遍Windows?
來源Google有多大?它有20億行代碼,相當於寫40遍Windows|Google|Windows_鳳凰科技http://www.wired.com/2015/09/google-2-billion-lines-codeand-one-place/
這新聞完全沒有抓住重點。
20 億行代碼雖然多,但對 Google 這個量級的公司來說不算什麼了不起的事情。我個人相信 Microsoft 全公司累積的代碼量能夠超過這個數字。Google 在這方面真正值得稱道的,是 Google 能夠把這些代碼中的絕大部分放在同一個 source depot 裡面,並且圍繞這個 source depot 建立了許多非常實用的工具。
我在 2008 年離開微軟加入 Google。在此之前,我 Microsoft 工作時都是每個組有每個組自己的 source depot。我在 windows server 組工作,就看不到 office 的代碼,反之亦然。組和組之間如果存在共享代碼的需求,需要在各個 source depot 之間 integrate 來 integrate 去,臨到要 release 的時候,又要專門從開發的 main branch 分支出 release branch。這些工作量不算小,有些組還安排了專人來負責。
我曾經以為在這個量級的公司里,這種程度的麻煩可能必不可少,然則等我加入 Google 之後就被震撼了:這貨居然能夠讓所有的工程師在同一個 source depot 上工作!真是 TMD 太方便了!我可以隨意閱讀幾乎所有的代碼來學習,重用別人的實現也變得極為簡單。懷疑某個共享庫實現有 bug?自己 checkout 代碼出來調試!想要 release ?直接挑個滿意的 CL 號就行了。然後 Google 這邊寫 build rule 的時候用的還是 python ,相比 Microsoft 那邊那個巨大的、充滿了各種宏定義的 makefile ,真是不知道方便到哪裡去了。
我可以負責任地說,在那個時間點,Microsoft 的開發環境比 Google 落後整整一代(當然這麼些年過去,我相信 Microsoft 的開發環境也一定進化了許多)。由此帶來的結果就是我在 Google 能夠看到更多被廣泛採用的高質量共享庫,更多的提高開發效率消除重複勞動的工具,從而帶來了更高的開發效率,以及工程師能夠更快地成長。
這才是 Rachel Potvin 這個分享的重點。為了這20億行代碼,Google建立了一套世界上最先進的源代碼管理/測試/審核/提交系統。1.Google專門建立了一套源代碼文件系統,在這套文件系統里,代碼默認全部可以訪問,但是不下載到本地,用到了才下載。2.有一個叫做code search的web應用,每天分析一次所有的代碼結構,可以隨時查閱代碼的定義、引用和歷史,當然可以飛快地搜索。3.有一套叫做cider的代碼編輯器,也是web應用程序的形式,無需進入eclipse即可飛速編輯源代碼。4.有一套非常簡明高效的build file格式,比傳統的make file好許多倍。現在開源了叫做bazel。5.由於所有的代碼都在一個主幹分支,每塊代碼的提交都會觸發所有直接或間接基於這塊代碼的所有測試,每個簽入都要保證不能弄壞別人的任何一個測試,或者說,每個人都對整個代碼庫負責,如果升級自己的庫,弄壞了別人的測試就要幫他修復。
6.代碼審核極其嚴格,標準非常高,任何一個空行,一個空格,注釋里一個標點的錯誤都不會放過。
7.版本對比是精確到行的,因此即使是多人編輯一個文件,也極少出現需要手動resolve conflict的情況。8.代碼編譯執行都是基於最新版本,但都是雲編譯,成千上萬個dependency沒一會兒就編譯完了。你可能難以想像,我的工作筆記本(Mac)平時只用chrome一個程序就能完成所有的工作。總而言之,我離開Google以後最懷念的就是這套代碼系統,要是能完全開源就好了。雖然不作惡是個很牛氣的公司,但是蓋茨早就說了:「用代碼行數衡量軟體開發進度就像用重量衡量太空梭製造進度一樣。」
Windows也只是微軟的一部分啦,算上整個公司的代碼,真不知道得多少倍。
蘭州軍區美女網路尖兵:90天寫40萬行代碼也就是說,3 個優秀解放軍月可以寫 40 萬行代碼,20 億行代碼就是 15000 個優秀的解放軍月。Google 有多少個程序員?Google 開了多少個月了?我只看到了差距
蘭州軍區美女網路尖兵:90天寫40萬行代碼(圖)_新聞
李聰娜在工作中(5月18日攝)
李聰娜參加執勤演練(5月4日攝)
作為一名攜筆從戎的優秀大學生,蘭州軍區某部科室主任李聰娜潛心鑽研信息網路尖端領域,勇攀自主創新高峰,取得了優異成績:12項全軍重大科研項目的領軍人,連續在全軍性比武中摘金奪銀,多次獲軍隊科技進步獎……
(一)
去年底,李聰娜被表彰為第十二屆「全軍學習成才標兵」的喜訊傳來,領導和戰友們都說:「她的成功成才都是自己逼出來的!」
2000年,李聰娜考入國防科技大學計算機專業,實現從軍夢。畢業時,她放棄保研資格和到沿海科研單位工作的機會,主動申請到信息化人才缺乏的西北軍營,從事網路安全工作。
網路,被稱為是繼陸、海、空、天、電磁之後,世界各軍事強國激烈爭奪的「第六空間」。2008年初,總部賦予李聰娜所在部隊緊急研發一種網路終端服務系統的任務,部隊長王國玉安排她編寫一套底層驅動程序。
原本打算藉機「露一手」,可真要編寫程序時,她才發現這遠遠不同於傳統意義上的軟體編程,不僅此前沒有學過,有些東西連聽都沒聽過。
看著一行行讀不懂、看不明的源代碼,她急得直想哭!
背記相關函數、學習協議機制,研究國內外范常式序……李聰娜把自己宅在辦公室,挑燈研讀。一個月時間,30萬行代碼、100多類函數、60多種協議機制、20多個設計演算法,一塊塊硬骨頭被她「啃」了下來。
2008年底,李聰娜代表蘭州軍區參加全軍網路安全比武競賽。
那段日子,她幾乎24小時「泡」在枯燥的訓練中,構建戰場環境,探尋攻堅路徑,一個月下來,瘦了整整15斤。
決賽時,作為64名選手中唯一的女性,李聰娜最終以一金一銅摘得桂冠。
(二)
「昨天的技術,打不贏明天的戰爭。」在李聰娜的辦公室,題寫著這樣一句醒目的標語。
2009年初,某策略研究讓科研團隊陷入圍城。「能不能另闢蹊徑?」角落裡,沉默多天的李聰娜咬著筆頭認真地說。只見她走到黑板前,飛速地寫了起來……
「就讓李聰娜主持這個項目!」部隊長王國玉當場提議。
連續奮戰90多個晝夜,編寫代碼40多萬行……4個月後,系統研發成功,比預期提前半年完成。
總部成立專項課題組研發某信息網路項目,主動點將李聰娜。
當時,國內對這一領域的研究僅限於理論層面,國外成熟產品完全不公開源代碼,唯一的參考資料是一本理論教科書。
「走別人的路,早晚會被人反制;自己制定遊戲規則,才能掌握主動權。」李聰娜一語解開思想的韁繩。
整整半個月,她帶領小組成員重新搭建模擬試驗環境,取得20多萬組測試數據,證實了自創演算法的可行性和科學性。
最終,這項攻克了10多項技術難關的創新成果獲得軍隊科技進步二等獎。
今年3月,李聰娜被表彰為全國「三八」紅旗手。在蘭州軍區司令部舉辦的慶功會上,她說:「在新領域多攀登一座高峰,我們的空白就會少一點,未來戰場取勝的概率就會大一點。」
(三)
2010年5月,李聰娜被任命為科室主任。那一天,她徹夜難眠。
由一名衝鋒陷陣的戰鬥員轉變為運籌帷幄的指揮員,李聰娜感到了前所未有的壓力。作為成立不滿三年的新科室,1個主任5個兵,還湊不夠一個班,如何對全區部隊的信息網路保駕護航?
在李聰娜的爭取下,一批剛畢業的計算機專業高材生被充實到麾下。
剛剛走出校門的大學生,滿肚子的理論不知如何轉化為實戰。面對面輔導、鍵對鍵傳授、手把手幫帶……李聰娜的悉心幫帶,很快讓這批網路新兵變成了「個頂個」的業務尖兵。
李聰娜還將科室的業務範疇劃分為四個小組,放手讓一批敢想敢幹的年輕人擔任課題組長,科室的科研實力開始加速成長——僅2011年就完成大型科研項目5項,創新核心演算法20餘種,發表科研論文10多篇。
也是在這一年,作為「關鍵先生」的李聰娜,胸前戴上了一枚金燦燦的二等功獎章。
下面這些大家應該都挺熟悉了。
- Windows
- Office
- SQL Server
- Internet Information Services
- Visual Studio
- Azure
- Bing
- Cortana
這些呢?你們猜猜這麼多東西有多少代碼?
PC
帝國時代 (1997年10月15日) - 全效工作室帝國時代:羅馬復興 (1998年11月5日) - 全效工作室帝國時代:金版 (1999年8月24日) - 全效工作室帝國時代II:帝王時代 (1999年10月16日) - 全效工作室帝國時代II:征服者 (2000年8月25日) - 全效工作室帝國時代III (2005年10月18日) - 全效工作室
帝國時代III:群酋爭霸 (2006年) - 全效工作室帝國時代III收藏版 (2005年10月18日) - 全效工作室神話時代 (2002年10月31日) - 全效工作室神話時代:泰坦 (2003年9月30日) - 全效工作室神話時代金版 (2004年6月30日) - 全效工作室帝國時代Online (2011年8月16日) - 羅伯特娛樂心靈殺手 (2007年) - Remedy Entertainment怒首領蜂MAXINUM(2012年) - CaveAllegiance (2000年3月16日)Asheron"s Call (1999年12月1日) - Turbine
Asheron"s Call 2Chip"s Challenge (1989年)Close Combat (1996年) - Atomic GamesClose Combat: A Bridge Too Far (1997年) - Atomic GamesClose Combat III: The Russian Front (1998年) - Atomic GamesCombat Flight Simulator: WWII Europe Series (1998年)Combat Flight Simulator 2: WWII Pacific Theater (2000年)Combat Flight Simulator 3: Battle for Europe (2002年)Combat Flight Simulator 4 - (TBA)Deadly Tide (1996年)Dungeon Siege (2002年) - Gas Powered GamesDungeon Siege: Legends of Aranna (2003年) - Gas Powered GamesDungeon Siege II (2005年) - Gas Powered Games神鬼寓言:失落之章(Fable:The Lost Chapters2005年) - Lionhead StudiosFreelancer (2003年) - Digital AnvilFighter Ace (1997年12月31日)Fury3 (1996年6月24日)戰爭機器 (2007年11月6日) - EPIC Games光環:戰鬥進化 (2003年) - Bungie光環2 (2007年) - Hired Gun / BungieHellbender - (1996年) Terminal RealityImpossible Creatures (2003年) - Relic EntertainmentImpossible Creatures: Insect Invasion (2003年) - Relic EntertainmentKings Myths: The Age Collection (2003年) - 全效工作室Links 2003 (2002年) - Indie BuiltLinks 2003: Championship Courses (2003年)Links Championship Edition (2003年)Links LS Classic (?) - Indie BuiltMarvel Universe Online (2007年) - Cryptic Studios and Marvel InteractiveMechCollection (?)MechCommander 2 (2001年)MechWarrior 4: Vengeance (2000年)MechWarrior 4: Black Knight (2001年) - Cyberlore StudiosMechWarrior 4: Clan Mech Pak (2002年) - Cyberlore Studios / FASA InteractiveMechWarrior 4: Inner Sphere Mech Pack (2002年) - Cyberlore Studios / FASA InteractiveMechWarrior 4: Mercenaries (2002年) - Cyberlore StudiosMicrosoft Baseball 2000 (1999年)Microsoft Baseball 2001 (2000年)Microsoft CART Precision Racing (1997年)Microsoft Entertainment Pack: The Puzzle Collection (1997年12月31日)微軟模擬飛行"95 (1996年)微軟模擬飛行"98 (1997年)微軟模擬飛行2000 (1999年)微軟模擬飛行2002 (2001年)微軟模擬飛行2004:百年飛行史 (2003年)微軟模擬飛行X (2006年) - ACES Studio微軟模擬飛行X:加速度 (2007年) - ACES StudioMicrosoft Golf (June 11995年)Microsoft Golf Version 3.0 (1996年12月12日)Microsoft Golf 1998 Edition (1998年6月16日)Microsoft Pinball Arcade (1998年)Microsoft Soccer (December 12, 1996年)Microsoft Space Simulator (1994年)微軟模擬列車 (2001年) - Kuju Entertainment微軟模擬列車2 (重新宣布,截至2007年) - ACES Studio瘋狂城市賽車 (1999年) - Angel Studios瘋狂城市賽車2 (2000年) - Angel StudiosMonster Truck Madness (1996年) - Terminal RealityMonster Truck Madness 2 (1998年) - Terminal RealityMotocross Madness (1998年) - Rainbow StudiosMotocross Madness 2 (2000年) - Rainbow StudiosMythica (已取消)NBA Full Court Press (1998年3月30日)NBA Inside Drive 2000 (1999年)NFL Fever 2000 (1999年)Outwars (1998年)Pandora"s Box (1999年8月31日)Racing Madness 2 (?)RalliSport Challenge (2002年) - Digital Illusions CEReturn of Arcade Anniversary Edition (1997年) - Namco國家的崛起 (2003年) - Big Huge Games國家的崛起:政權保衛戰 (2004年) - Big Huge Games國家的崛起:傳說再現 (2006年) - Big Huge GamesSkiFree (1991年12月31日)ShadowRun (2007年) - FASA StudioUrban Assault (1998年7月31日) - TerraTools動物園大亨 (2001年) - Blue Fang GamesZoo Tycoon: Dinosaur Digs (2002年) - Blue Fang GamesZoo Tycoon: Marine Mania (2002年) - Blue Fang GamesZoo Tycoon Complete Collection (2003年) - Blue Fang Games動物園大亨2 (2004年) - Blue Fang GamesZoo Tycoon 2: Endangered Species (2005年) - Blue Fang GamesZoo Tycoon 2: African Adventure (2006年) - Blue Fang GamesZoo Tycoon 2: Zookeeper Collection (2006年) - Blue Fang GamesZoo Tycoon 2: Dino Danger Pack (2006) - Blue Fang GamesZoo Tycoon 2: Marine Mania (2006年) - Blue Fang GamesZoo Tycoon 2: Extinct Animals (2007年) - Blue Fang Gamesspore (2008年) - Blue Fang GamesXbox
Amped: Freestyle Snowboarding (2001年) - Indie Built
Amped 2 (2003年) - Indie BuiltAzurik:Rise of Perathia (2001年) - Adrenium Games霹靂酷炫貓:穿越時空 (2002年) - Artoon霹靂酷炫貓:穿越時空 2 (2004年) - Artoon致命快艇 (2001年) - Stormfront Studios雷霆戰隊 (2003年) - Digital Anvil百戰壞松鼠 (2005年) - Rare反恐精英 (2003年) - Valve王牌飛行員:復仇大道 (2003年)Dinosaur Hunting (2003年)神鬼寓言 (2004) - Lionhead Studios/Big Blue Box Studios極限競速 (2005年)瘋狂大亂斗 (2001年) - Blitz Games鬼屋大冒險 (2003年) - Rare光環:戰鬥進化 (2001年) - Bungie光環2 (2004年) - BungieInside Pitch 2003 (2003年)翡翠帝國 (2005年) - BioWareKakuto Chojin (2002年) - Dream Publishing熾焰帝國:英雄傳說 (2005年) - Phantagram熾焰帝國:十字軍東征 (2004年) - Phantagram功夫大亂斗 (2003年) - Just Add MonstersLinks 2004 (2003年) - Indie BuiltMagatama (2003年)機甲先鋒 (2002年) - Day 1機甲先鋒2:孤狼 (2004年) - Day 1瘋狂城市賽車3 (2003年) - Digital Illusions CEN.U.D.E.@Natural Ultimate Digital Entertainment (2003年) - Rocket Studio, Inc. / Red CompanyNBA Inside Drive 2002 (2002年) - High Voltage SoftwareNBA Inside Drive 2003 (2002年) - High Voltage SoftwareNBA Inside Drive 2004 (2003年) - High Voltage SoftwareNFL Fever 2002 (2001年)NFL Fever 2003 (2002年)NFL Fever 2004 (2003年)NHL Rivals 2004 (2003年)NightCaster (2002年) - VR1Oddworld:Munch"s Oddysee (2001年) - Oddworld InhabitantsOutRun 2 (2004年) - (co-published with Sega) Sega-AM2/Sumo Digital幻影沙塵 (2004年)哥譚賽車計劃 (2001年) - Bizarre Creations哥譚賽車計劃2 (2003年) - Bizarre CreationsQuantum Redshift (2002年) - Curly Monsters越野挑戰賽 (2002年) - Digital Illusions CE越野挑戰賽2 (2004年) - Digital Illusions CE莎木II (2003年) - Sega-AM2Sneakers (2002年) - Mediavision Corporation魔幻戰士 (2004年) - Climax Studios道風蓮拳 (2003年) - Studio GiganteThe Wild Rings (2003年)上旋高手 (2003年) - Power Magic, Indie BuiltTrue Fantasy Live Online (已取消) - Level-5巫毒大冒險 (2003年) - Beep IndustriesWhacked! (2002年) - Presto StudiosXbox Music Mixer (2003年) - Wild TangentXbox 360
心靈殺手 (TBA) - Remedy Entertainment
Banjo-Kazooie 3 (2007年) - Rare藍龍 (2006年) - Mistwalker / Artoon除暴戰警 (2007年) - Real Time Worlds全民派對 (2005年) - Game Republic神鬼寓言2 (2007年) - Lionhead Studios極限競速2 (2007年) - Turn 10極限競速3 (2009年) - Turn 10極限競速4 (2011年) - Turn 10瘋狂大亂斗2 (2007年) - Hudson Soft戰爭機器 (2006年) - Epic Games戰爭機器2 (2008年) - Epic Games戰爭機器3 (2011年) - Epic Games光環3 (2007年) - Bungie光環3: ODST (2009年) - Bungie光環:致遠星 (2010年) - Bungie光環:光環戰爭 (2008年) - 全效工作室光環 復刻版 (2011年) - 343 Industries光環4 (2012年) - 343 Industries凱密歐傳說: 力量元素 (2005年) - Rare熾焰帝國:末日之環 (2007年) - Phantagram失落的奧德賽 (2007年) - Mistwalker / Feel PlusMarvel Universe Online (2008年) - Cryptic Studios / Marvel Interactive質量效應 (2007年) - Bioware九十九夜 (2006年) - Q Entertainment / Phantagram完美女煞星 (2005年) - Rare哥譚賽車計劃3 (2005年) - Bizarre Creations哥譚賽車計劃4 (2007年) - Bizarre Creations銀星戰將 (2007) - Gamearts / Seta / Square Enix 只負責北美地區發行暗影狂奔 (2007年) - FASA Interactive無間戰神 (2007年) - Silicon Knights天誅千亂 (2007年) - From Software 只負責北美地區發行吸血鬼之雨 (2007年) - Artoon / AQ Interactive 只負責北美地區發行寶貝萬歲 (2006年) - Rare以上只是為了說明,積累 20億行代碼量對於 Google 或者 Microsoft 這樣的公司其實 not a big deal。但是怎麼樣管理好,協調好在這麼多代碼里的工作,才是真正厲害的地方。List of Microsoft software applications你來算算把這些都寫出來要多少行代碼?
一個直觀比較:
來自Million Lines of Code別忘了 Google 和 Mouse 中間還有眾所周知 5 億行代碼的 http://healthcare.gov 。所以說 Google 的代碼雖然相當於 40 個 Windows ,但是只相當於 4 個奧巴馬醫保網站哦。那個什麼,這是google自黑么? 還是在黑java呢?
難道比起來,不是更少的代碼量更好么?
windows寫了這麼多年,還能保持如此苗條身段,我越來越喜歡微軟了。說的好像微軟只有Windows一個產品似的。。。
我覺得媒體工作者還是要學習一個。
這個比較和評價是沒有意義的,代碼量多少只能在一定程度上說明該司投入了多少人時,這個世界上應該還沒有比微軟在軟體上投入人時更多的公司出現。
你就當成是個fun facts隨便看看就行了花式黑谷歌
這個數字應該沒有排除自動生成的那部分代碼……目測把自動生成的JS,HTML也算進去了
哎,偷換概念而已...
現在的編輯真的是越來越沒節操了...順便做等輪子哥來黑...這表明微軟比Google不知道高到哪去了
有空我去拉一份微軟產品列表還是不拉了,工程太大
我怎麼記得去年開源鬥士才說,代碼多說明臃腫?
題主其實問了一系列的問題。
20億代碼多不多?- 多 =》 為什麼?
- 因為JAVA
- 胡說,XXX語言更長
- 對,XXX語言就比JAVA好
- 進入編程語言討論環節
- 因為test case
- 進入TDD討論環節
- 因為google老寫沒用的產品
- 進入果粉、軟粉、谷歌粉撕逼環節
- 不多 =》 為什麼?
- 。。。。懶得繼續寫了
難道不是代碼量少才值得炫耀嗎?我很費解啊...
推薦閱讀:
※關於 Go 中的實用函數
※C++的函數形參什麼時候應該使用右值引用?
※鼎叔的編程慢習慣
※鵬哥帶你學編程-引子
TAG:互聯網 | 微軟Microsoft | 編程 | 谷歌Google | 如何看待評價X |