Ruby on Rails創(chuàng)始人DHH:架構(gòu)是將復(fù)雜的問題簡單化
原創(chuàng)【51CTO獨(dú)家特稿】他的數(shù)學(xué)成績很糟糕,曾不只一次的得過F;他并不算聰明,21歲才進(jìn)入哥本哈根商學(xué)院就讀本科學(xué)位;他做過游戲網(wǎng)站的記者,還與人合伙開過公司;在20歲以前,他沒寫過一行程序代碼。
51CTO開發(fā)頻道年終巨獻(xiàn):架構(gòu)師最怕程序員知道的十件事
他在2005年獲得Google和O'Reilly舉辦的OSCON***Hacker大獎(jiǎng);2006年,他獲得了年度***Web開發(fā)工具震撼大獎(jiǎng)(Jolt Development Tools);現(xiàn)在,他創(chuàng)建的框架成為Web開發(fā)的主流技術(shù),并被Twitter、Hulu等大型Web2.0網(wǎng)站所采用;由于他的框架采用Ruby開發(fā),從側(cè)面推動(dòng)了Ruby語言的發(fā)展,并使Sun緊急上馬推出JRuby。
David Heinemeier Hansson
他就是Ruby on Rails的創(chuàng)始人David Heinemeier Hansson;一般,Ruby程序員將Ruby on Rails稱為RoR,將David Heinemeier Hansson稱為DHH。
37signals和Basecamp
2004年,哥本哈根商學(xué)院的大三學(xué)生DHH接到一個(gè)來自美國芝加哥的電話,他在37signals公司的合伙人計(jì)劃上馬一個(gè)叫Basecamp的項(xiàng)目;和37signals的其他項(xiàng)目一樣,Basecamp也是一個(gè)基于Web的項(xiàng)目,它試圖解決項(xiàng)目因缺少圖表、曲線圖或者報(bào)告而失敗的現(xiàn)象,簡單的說,Basecamp是一個(gè)溝通和協(xié)作平臺(tái);唯一不同的是,37signals之前都是為客戶開發(fā)的外包項(xiàng)目,Basecamp將是他們***個(gè)自己的產(chǎn)品。
聽上去是個(gè)不錯(cuò)的項(xiàng)目,但問題是37signals目前只有兩個(gè)優(yōu)秀的設(shè)計(jì)師和一個(gè)半路出家的程序員,而目前,這個(gè)程序員還在大洋彼岸的哥本哈根拿著電話暗自興奮。
幾天后,帶著兩年P(guān)HP開發(fā)經(jīng)驗(yàn)和學(xué)校里學(xué)來的一點(diǎn)J2EE課程,DHH來到美國;他將面對(duì)的是一個(gè)極富挑戰(zhàn)的項(xiàng)目,繁瑣的需求、眾多的功能模塊、復(fù)雜的接口和緊迫的交付日期。
把復(fù)雜的問題簡單化
DHH很自信,他知道自己沒有出色的數(shù)學(xué)天賦,沒有豐富的項(xiàng)目經(jīng)驗(yàn),沒有大師級(jí)的計(jì)算機(jī)功底;但他對(duì)自己的另一項(xiàng)能力很自信,把復(fù)雜的問題簡單化。早在編寫PHP程序時(shí)DHH就開發(fā)過一套框架,目的是使PHP能在項(xiàng)目中變得簡潔快速,將程序的界面、控制和數(shù)據(jù)分離開來,方便團(tuán)隊(duì)間的協(xié)作和維護(hù)。
#T#項(xiàng)目之初,DHH試圖使用自己的PHP框架進(jìn)行Basecamp的開發(fā),但沒過幾天DHH就發(fā)現(xiàn)了一些問題:他之前的PHP快速框架一直用于一些流程明確,指向?qū)R坏腤eb項(xiàng)目;但Basecamp不同,作為一個(gè)溝通協(xié)作平臺(tái),用戶角色進(jìn)入后會(huì)產(chǎn)生一些復(fù)雜甚至意想不到的工作流;他甚至開始質(zhì)疑PHP的能力是否適合這樣的項(xiàng)目,PHP在語言層的一些天性使其在高互動(dòng)高響應(yīng)的系統(tǒng)里顯得笨拙而復(fù)雜。
對(duì)編程開始感到憤怒
PHP每次HTTP請(qǐng)求都要初始化資源,這個(gè)過程的開銷非常大。盡管PHP解析器的運(yùn)行速度快速且沒有缺陷,但一旦使用框架,那么每次請(qǐng)求時(shí)初始化整個(gè)框架使性能的下降非常厲害,當(dāng)使用一個(gè)很復(fù)雜的PHP框架的結(jié)果就是整體性能嚴(yán)重下降;同時(shí),PHP語言本身的問題造成了PHP添加跨請(qǐng)求的高級(jí)特性相當(dāng)困難,這是PHP本身一個(gè)很大的限制,但是反過來說,正是這種限制使得PHP始終保持在一個(gè)比較簡單的Web語言上面,而正是這一點(diǎn)才是PHP得以成為互聯(lián)網(wǎng)流行Web編程語言的原因。這是一個(gè)復(fù)雜的問題,時(shí)至今日,究竟誰才是最適合Web開發(fā)的語言一直存在爭論,詳細(xì)請(qǐng)參考51CTO的策劃專題《大師論戰(zhàn)Web開發(fā) Ruby和PHP誰將稱王?》
源自底層的弱點(diǎn)似乎正在預(yù)言著PHP并不完全適合正在襲來的Web2.0大潮和37signals的Basecamp項(xiàng)目。DHH開始思考,他要找到一種簡單的方法完成真?zhèn)€項(xiàng)目,靈活、簡潔和快速是他的***要求。他在朋友的慫恿下開始接觸Ruby,很快,他開始喜歡Ruby,因?yàn)樗l(fā)現(xiàn),Ruby可以把復(fù)雜的問題簡單化。在51CTO之前的一篇《Ruby on Rails入門之道》報(bào)道中,DHH提到:“我是在對(duì)編程開始感到憤怒的時(shí)候開始學(xué)習(xí)Ruby的。我想做真實(shí)的東西,而不僅僅是一個(gè)玩具程序”。
Ruby
Ruby的開發(fā)效率高的驚人,更重要的是它的語法簡潔優(yōu)雅,DHH看著自己用Ruby一周時(shí)間寫出的功能比用PHP做一個(gè)月還要多;之后,他開始嘗試將自己的PHP框架用Ruby做移植,并在其中加上J2EE的一些東西。很快,他將自己的興奮傳達(dá)到37signals并說服Basecamp團(tuán)隊(duì)使用Ruby進(jìn)行開發(fā)。
兩個(gè)月后,DHH開發(fā)出了基于Ruby的框架;又過了兩個(gè)月,整個(gè)Basecamp產(chǎn)品完成。好事接二連三,在DHH對(duì)自己架構(gòu)的框架異常興奮的同時(shí),37signals的***個(gè)產(chǎn)品面Basecamp一發(fā)布就引起了轟動(dòng),全世界40多個(gè)國家的人值得開始使用,當(dāng)時(shí),有人認(rèn)為它是世界是***的Web應(yīng)用程序。
同時(shí),Basecamp也引起了開發(fā)界的關(guān)注,眾多Web工程師試圖找出BaseCamp快速響應(yīng)、安全穩(wěn)定的秘密。DHH決定將Ruby框架從Basecamp里剝離出來,讓更多人應(yīng)用自己架構(gòu)的框架并受益于高開發(fā)效率,這個(gè)框架就是Rails。
Ruby on Rails的簡單之道
DHH對(duì)Rails的解釋是“最近的一條路”。從Rails這個(gè)名字我們可以看出,DHH希望軟件開發(fā)可以沿著一個(gè)正確的軌跡不斷向前,告別復(fù)雜的左轉(zhuǎn)右轉(zhuǎn)和討厭的紅燈;他也是按照這樣的想法架構(gòu)整個(gè)Rails。如果你使用過Rails,其腳手架的功能一定讓你興奮。我們可以通過Rails腳手架創(chuàng)建一套樣式的行為和模板,它們可以讓你在具體的模型中操縱數(shù)據(jù)異常簡單,同時(shí),腳手架還提供了允許在數(shù)據(jù)庫中插入、更新和刪除記錄的方法與頁面。
Ruby on Rails創(chuàng)始人DHH
回想一下你在PHP和Java中的復(fù)雜的配置和數(shù)據(jù)庫操作,這些在Rails里竟如此簡單。當(dāng)然,Ruby on Rails不只強(qiáng)大在數(shù)據(jù)庫方面,除了可以使用Active Record進(jìn)行數(shù)據(jù)庫操作,還可以使用Active Record和Action Pack進(jìn)行模型和視圖的開發(fā);除在基礎(chǔ)Web開發(fā)方面的簡單化,在Ajax交互支持、擴(kuò)展和部署方面,Rails同樣簡單易行。
Ruby on Rails因?yàn)榭梢园褟?fù)雜的問題簡單化而變得流行。2004年7月,DHH發(fā)布了Rails的***個(gè)版本;***周Ruby on Rails的下載量是2000次,,第二周下載量翻了好幾倍,之后幾個(gè)月間,整個(gè)社區(qū)似乎都在為Ruby on Rails的誕生而興奮!目前,Ruby on Rails已經(jīng)進(jìn)階主流Web開發(fā)技術(shù),使用其開發(fā)的各種網(wǎng)站不計(jì)其數(shù),詳細(xì)可以參考51CTO之前的報(bào)道《TOP50用Ruby on Rails開發(fā)的網(wǎng)站》
隨著Ruby on Rails的成功,DHH也成為一些開發(fā)者的偶像,一個(gè)數(shù)學(xué)得F的軟件精英,一個(gè)20歲前沒寫過一行代碼的程序天才,一個(gè)把復(fù)雜問題簡單化的架構(gòu)大師。




















