Transcription
說到甲骨文呢,大家想到的,可能是源遠流長的文化起源。但這次要說的,是美國這一坨高達2,500萬行的屎山代碼。這個被美國程序員們造就的奇跡,已經遠遠超過了他的法國600萬行的前輩啊。不過同樣為屎山代碼,卻有著本質的不同。現在就帶著大家攀登這座美利堅的巔峰。
1974年,IT界的霸主IBM發表了一篇論文,闡述他們發明了一種新的關系型數據庫。可以說呢,是當今數據庫的雛形。在關系型數據庫之前,查找數據呢,都是指針向的。比如說,你要找一個叫王欣的員工,必須先從公司節點開始,進入快播的分支,再進入管理層,再找到CEO這個職位,最後才能定位到王欣這條記錄。而關系型數據庫的出現,讓數據變成了現在像Excel的二維表格。你只要輸入查詢條件,比如直接輸入王欣,系統就能自動根據數據關系,把結果找出來。
哎,你一聽,那不就是應該這樣嗎?哎,對!你如今認為理所當然的功能,真是經過了漫長的演變。導航式訪問直接演變成了聲明式訪問,從而也就誕生了SQL語言。
IBM的這篇論文,一般人也就是掃一眼。但是有一個小夥,從頭到尾認真研讀完了。他的每一個毛細血管都炸開了。這位就是後來赫赫有名的鋼鐵俠原型(其中一個),拉里埃裏森(Larry Ellison)。
1976年,埃裏森正在一家影像設備公司Ampex當碼農。他讀完了IBM的論文,最先冒出來的想法就是,臥槽這玩意兒能賣錢呀!但是IBM,竟然只在內部測試,這種關系型數據庫。他們不但不把這個東西商業化,竟然還給寫成論文公開了。
從IBM的角度來講也可以理解啊,因為他們內部的這種原有的層次型數據庫,已經讓他們賺的盆滿缽滿。就連當時的NASA、銀行、保險公司和政府都使用IMS數據庫。所以IBM高層認為完全沒有必要去轉型。對於一個大企業呢,轉型意味著不但要花錢,還有無法預知的各種風險。你想想柯達、諾基亞,你就能理解了。
System R項目,也就是這個關系型數據庫,只是IBM內部的一個研究試驗。它的目的呢,就是為了驗證,這種新型數據庫是可行的。後來埃裏森幫他們證明了,這東西確實可行。
但這也不是小事。作案總得有同夥吧?大哥跟我一樣有一個三人組,但人家那三人組的質量,明顯比我這個要高不少啊。他組裡另外兩個大仙,就是後來甲骨文公司裡核心人員,鮑勃米納(Bob Miner)和艾德奧茨(Ed Oates)。
咱先說說這第二位啊。埃裏森在Ampex的時候,他的上司就是這位鮑勃米納,是一個程序員。這家夥代碼寫的飛起。埃裏森一看,這世界上竟然還有代碼寫的連我都看不懂的大神,就經常拽著鮑勃一起吐槽公司。
在拉里埃裏森轉做市場銷售的時候,正好接洽了一個中情局的項目。在這裏結識了CIA,也是為自己未來的叛變,預備了一個大客戶。
Ampex期間,又入職了一個數學系畢業的小夥子,艾德奧茨。這小子專門進行代碼測試。埃裏森和米納成天虐待這個小夥,艾德痛並痛苦著,但是代碼水平瘋漲。不知不覺中呢,艾德也就成了三人組的3號成員。美國三人組就這麼成立了。
1977年,埃裏森讀完了IBM的論文後,在廁所裡問這倆貨。他們那數據庫太牛逼了,但他們傻缺,自己不賣,還給公開了。我覺著咱們可以把這玩意兒整出來呀。兩位讀了這個IBM的科普論文後,也都震驚於IBM的無私。米納說,這玩意我也能寫呀,他們不幹咱幹。奧茨說,我負責測,我測不死他。
拉里埃裏森當即拍板,三人湊了2,000美元啟動資金,開幹。就這麼簡單。嘴炮王埃裏森因為出資高達1,200美元就任CEO,代碼大神米納官拜CTO,測試後勤奧茨任CAO。三人從1970年合作到1977年互相挖牆腳,直到最終成立了Software Development Labo....也就是甲骨文的前身。
後來為了突出,他們開發的就是關系型數據庫,他們直接就把公司的名字改成了Relational Software System Inc. (RSI)。而在之前的1975年和1976年,微軟和蘋果紛紛成立。隨著甲骨文的問世,三個小破公司,即將開闢互聯網的新時代。
微軟和蘋果大家都很熟悉了啊,但是大家好像並不太明白甲骨文是幹啥的。因為微軟的PC和蘋果的手機,你能拿在手裡整啊。但是說到Oracle,除了埃裏森這個年輕的老婆,比較有話題,大家也並不太知道,數據庫到底是一個什麼東西(程序員除外)。其實我們的銀行啊、航天呀、包括物流啊,可能都會用到這個Oracle,只不過它是在後臺的,你並不能把它拿在手裡玩。
埃裏森說呢,我們一定要趕在IBM的豬腦子恢復神智之前寫出來,造就全球第一個商用的關系型數據庫,讓企業都用統一的方式去管理數據。
1979年,RSI終於發布了第一版數據庫Oracle 2.0。哎,為什麼是2.0?因為Oracle 1.0已經寫完了,但是代碼大神米納覺得寫的太爛,那一版就從來沒有發布過。
Oracle是神諭的意思。這個名字呢,來源於埃裏森曾經在Ampex時,給CIA做的一個數據庫項目,那個代號當時就叫Oracle。得力於埃裏森之前埋下的人脈,和能把死人忽悠瘸了的嘴炮,楞是把CIA的業務拉進了自己的公司。為了凸顯誠意,他乾脆就把原來Oracle的代號,直接改成產品名了。中情局也很痛快,省去了繁瑣的交涉流程,直接跟老板對接。第一個訂單就付了50萬美元。這就是2,000元起步,靠中情局活下來的,最終把IBM按在地上摩擦的甲骨文。
當IBM明白過來怎麼回事的時候,趕緊抄作業。但是一切都晚了,市場份額早就被Oracle分走了大半。IBM內部追悔莫及,他們的工程主管氣的直跳腳:“你們TMD公布那篇論文幹啥,讓埃裏森那個流氓捷足先登了!”這就好比在1953年,劍橋的Watson和Crick,意外獲得了Franklin的DNA雙螺旋照片的證據,經過推算,撿漏獲得了1962年的諾貝爾獎。
1982年,給中情局的數據庫,已經在市場上名聲遠揚。美國中關村的碼農們都知道,有一個Oracle的存在。埃裏森也就將公司的名字,直接改成了Oracle。之後Oracle突飛猛進,市場拓展到加拿大、日本、香港,還有歐洲各大國。緊接著埃裏森就忽悠到了,宏杉資本的投資,就是後來給億唐也投資了的那個資本。
到了1986年3月12日,Oracle在納斯達克上市。埃裏森敲鐘後,公司市值飆升至2.7億美元,埃裏森自己的身價就高達1.05億美元。第二天微軟就上市了,市值7.7億美元,比爾蓋茨個人身價3.5億美元。埃裏森快氣瘋了。本來埃裏森看比爾蓋茨就不順眼,那次之後呢,他處處跟比爾蓋茨作對。比爾蓋茨買豪宅,埃裏森就得買一個更大的;比爾蓋茨買飛機,他就得買戰鬥機,揚言要開著戰鬥機,把炸彈直接扔到微軟總部。
相對於比爾蓋茨呢,埃裏森和喬布斯的關係反而很好。敵人的敵人就是朋友嘛。這倆貨經常拉小群奚落比大爺:“哎,你看他那破Windows成天藍屏,還不如中國的番茄花園好用呢。”
1989年,Oracle進駐中國。甲骨文的名字就是那時候註冊的。根據Oracle本意神諭的意思,又結合了甲骨文的音譯Oracle bone inscriptions,才最終確定了Oracle在中國的譯名甲骨文。
到了90年代,公司每年的銷售額都超越100%的增長。但是公司內部開始出現了各種薅羊毛、欺詐等管理問題。為了迎合華爾街對高增長的預期,銷售和財務部開始了各種虛假記賬,忽視售後和無視打折等違規操作。銷售人員為了沖業績,不管訂單能不能完成,就敢簽合同,但是項目質量就沒人過問。僅僅一年多,虧損達幾千萬美元,導致那兩年Oracle股價大跌,甚至一度讓公司走向了破產邊緣。
在資本的壓迫下,埃裏森也有點肝顫了。這TM要是破產了,比爾蓋茨還不笑死我。但Oracle數據還是比較牛逼的啊,換句話說,它是基本形成了互聯網的一個剛需。但是對公司的整頓還是必要的。埃裏森大刀闊斧的改革,加強了各部門的審核與監督,並以優化了3,000多名員工的血的代價,讓公司起死回生了。
到了2000年,甲骨文銷售額超越了100億美元,成為了世界上第二大的互聯網公司。第一是誰?哎,你比大爺。從微軟上市的那一天起,埃裏森就對比爾蓋茨恨之入骨。直到2023年6月,埃裏森才以身價1,456億美元,超越了比爾蓋茨,終於硬氣了一把呀。
到如今,它已經是世界級的數據庫公司了。世界上的銀行、航空、科技、醫學,處處都少不了甲骨文。
說到這了,大家是不是都忘了今天的主題了?不過甲骨文這麼牛逼,它聽著跟屎山代碼一點都不沾邊啊。不過它變成屎山代碼,也確實是因為它太過牛逼了。
2018年,一篇在Hacker News上的帖子,引起了IT界的注意。這就是Oracle的程序員,吐槽他們那高達2,500萬行的屎山代碼的帖子。帖子這次專門介紹了Oracle開發的日常操作:改一行代碼,要分別提交到100-200台服務器進行測試;編譯加構建新數據庫要十幾個小時;一次測試要花三十幾個小時;任何一個測試失敗就要全盤重來;想弄明白一個bug要花好幾天,你弄明白了也沒用,因為這個bug,可能牽扯到另外好幾十個bug;修一個小bug平均要3個月;開發新功能動輒1至2年;代碼裡到處都是成千上萬個神秘的flag,互相嵌套的宏,讓人欲罷不能。
而叱咤了IT界近40年的Oracle,後來為什麼變成了屎山代碼呢?這一切的根源,竟然是來自於那個代碼大神鮑勃米納。Oracle90%以上的底層代碼都是這位大仙寫的。因為代碼太過牛逼,底層代碼至今無人敢動。從1980年開始,公司快速增長,所有新來的小碼農,都只敢在鮑勃大神的基礎上進行堆砌。兼容性確實保證了,但是也鎖死了重構的機會。這也就是埋下了屎山的種子。
1994年光棍節,年僅52歲的代碼大神鮑勃米納,因肺癌去世。相比於現在還活著的拉里埃裏森,真是虧姥姥家去了。可嘆程序員這無常的人生啊。他的底層代碼,也就是留給Oracle的遺產。沒人敢踏足半步。因為Oracle已經成為了,全球企業及IT基礎設施的核心支柱。它已經不是簡單的數據庫,而是一個巨型的賺錢怪獸。市場份額超過40%,吸金的同時支撐了數萬家企業。是換你來擔任CEO,你敢輕易動底層代碼嗎?那公司也只能委屈這些新的程序員了。
在維持鮑勃米納的遺產前提下,項目新增加的任何功能,都只能以擺積木的方式在上面蓋樓。近30年的持續更新,數代程序員插入了無數的補丁,互相嵌套的宏,涉及上千個分支。如果你想重構Oracle,大約要花上10年,還是在不出任何意外的情況下。
90年代末,開發者已經發現,Oracle的代碼似乎進入了完全不可理解的狀態。沒有一個人能完全讀懂這些代碼,更沒有人能完全看完這些代碼。這只怪獸唯一的選擇就是負重前行。矽谷著名的數據庫先驅StoneBreaker也說過:“Oracle的架構不適合未來,需要重寫。” But who dare?
之後的每一個功能,都是以補丁的方式打上去的。然後在數十個小時的測試中,你就祈禱中途別出什麼意外吧。每次測試之後,錯誤如果只有100個,那你就應該謝天謝地,因為正常可能會出現1,000個錯誤。而在如此低效的開發環境下,每增加一個哪怕小小的功能,開發週期都以年計時。
到了2018年,Oracle已經更新到12.2了,代碼量正式達到了2,500萬行。依靠暴力測試和撲朔迷離的Flags,倔強地將鮑勃的詛咒維持到現在。除非有底層科技的革命,就像如果你發明了反重力系統,能直接幹死馬斯克,否則在我們的有生之年,甲骨文的屎山代碼將持續運行。它是歷史上最著名的屎山代碼之一,但也是最成功的屎山。不知道鮑勃大神,在天之靈看到捅破天庭的高峰,是什麼感覺。
因此視頻開頭我就說了,Oracle與那幫法國大哥,用C++開發的600萬行的屎山代碼,截然不同。法蘭西那個工程編譯一次,大約要4-8個小時,經常運行10分鐘左右就崩。自從法國人選擇了C++,就註定那是一場行為藝術。有關這個奇跡呢,我之前的視頻介紹過啊,描述欄有視頻鏈接,你們可以領略一下那座屎山的魅力。
如今結了6次婚的拉里埃裏森大爺,已經81歲了,仍然以41%的股份,對甲骨文保持著絕對的控制權。狂妄和睚眥必報的性格,讓埃大爺還時不時的對競爭者,釋放幾個下三濫的魔法。今年9月10日,埃裏森以3,930億美元身價,超越馬斯克,登頂世界首富。不過這首富剛當了半天,下午馬斯克就多賺了20億美元,把首富給奪回來了。
1996年,傳奇測試人艾德奧茨從甲骨文辭職。之後一直專心搞樂隊。這傢伙還喜歡玩鐵路模型,平時滑雪拍視頻,活得瀟灑又安逸。他經常到處演講,分享從矽谷到搖滾的多樣激情,還有如何成就成功。成功就是你需要一個埃裏森。
好了,有關甲骨文的故事今天就介紹到這裏。如果你喜歡我的故事呢,請訂閱點贊毛怪老師。