DHH:Ruby是由Yukihiro Matsumoto在1995年建立的動態、物件導向的語言。Ruby被形容為介於SmallTalk跟Perl之間的語言,但我不這麼認為。我認為Ruby在寫出讓程式設計者快樂的美麗程式碼這方面上遠遠的超越了其他的語言。
Rails則試圖將Ruby的美麗以及高生產力融合成一個網路應用程式。我們試著將Ruby的精神:讓程式設計者快樂(Make the programmer happy)也移植到Rails上。在你發現影響程式設計者最大的因素就是動機之前,這可能聽起來很無聊。而且,快樂的程式設計者絕對是充滿動機的程式設計者。因此,如果你為了快樂作最大的努力,你同時也為了動機作最大的努力,最終將產生最大的生產力。
LJ:Rails是甚麼?為甚麼要設計Rails?DHH:Rails是從實際的問題中萃取出的解決辦法,Rails不是一個研究計畫,也不是由一個聰明人在象牙塔中制定出所有的標準。它只是在我使用Ruby建立了Basecamp後,所留下來最汎用的部份。
這代表著Rails是一個非常實際,目標明確的框架,你也許不喜歡它的風格,但它就是有著自己的想法。我喜歡叫它「頑固的軟體(Opinionated Software)」,想當然爾,Rails有很多自己的意見。
從其中一個觀點來看,Rails可以當成我對於「網路應用程式應該怎麼建立」的想法的集合體。你在使用Ruby on Rails時當然可以不用與我完全意見相同,但是你同意越多想法,你要做的工作就越少。
而且,這些建議相當的簡單,它們的目標是讓大多數的人們得到大部分他們想要的(give most people most of what they want)。大多數的時候,Rails強烈反對「所有的東西都可以被設定」這個概念,也就是框架應該不偏不倚而且客觀。對我來說,這就像在說「每件事情都應該一樣難搞」。
LJ:我曾經讀過關於Ruby on Rails中,Active Record跟ORM的能力的文章。你能對這些作一點解釋嗎?DHH:Active Record被稱為是Rails的皇冠,它的主要任務是將關聯式資料與物件導向模型完美的結合起來。並且需要最少的外部設定。
所以,你會有一個叫做Person的類別自動應對到叫做people的資料表(Rails會自動理解大小寫跟單複數的變化)。這個Person類別會有一個叫做first_name的method對應到people這個資料表中的first_name欄位。所以我們利用反射跟慣例來免除了,在過去污染了軟體世界,叫做XML設定的瘟疫。
雖然不需要外部設定這點勝過了企業中利用Hibernate,EJBS以及其他的Java框架,ORM則大大的超越了PHP/.NET的傢伙們。Active Record也讓你從大量的SQL程式碼中解脫,它自動建立了SQL程式碼。唯一需要自行設計SQL的時機是提昇關鍵處的效能。也是我們珍貴的腦力真正該花在的地方。
LJ:為了那些採用Ruby和Rails(或是試著說服他們的主管讓他們用),他們需要真正的成功故事。Ruby on Rails在哪些地方當作主要的應用程式呢?DHH:Ruby on Rails已經在許多組織中造成很大的衝擊。我們已經有約400位工作者在Rails相關的工作上作業。就像冰山一樣,真正的行動正在檯面下進行。
但是,我們也有很多公開的成功案例,我自己的公司,37signals,有著四個著名的應用程式。被成千上百的人們用來管理他們的專案(Basecamp),他們的私人生活(Backpack),他們的代辦事項(Ta-Da List)以及他們的共同寫作(Writeboard)。這些套件已經成為Ruby on Rails最佳的宣傳,克服了許多人的質疑。但是37signals完全是個小團隊利用Ruby on Rails建立出的大傢伙。
Robot Co-op有一個社群網路的套件包含了43things,43places,43people。整體來說,這些服務在他們的三台機器上面,每天產生了數十萬的動態頁面。
Odeo也用Ruby on Rails建立了他們的podcasting入口,讓成千上萬的訂閱者使用。Evan Williams建立了Blogger,知道該怎麼運作一個巨大的公開網站。他也是Odeo的一份子。
以上都只是一些小部份,我們從電子商務到內文的產生- 隨便你怎麼叫它,都已經有主要的應用程式了。只剩下很少的應用程式沒被Rails建立過。
LJ:順帶一提,我很喜歡Backpack這個服務,它完全是用Ruby on Rails建立的嗎?DHH:是的,Backpack完全是由Ruby on Rails建立的。當它上線時,它只用了大約兩千行的程式碼。LJ:Java在正式進入企業應用之前花了很多的時間,它用了J2EE來讓它成為真正的「企業發展平台」,額外的交易管理,有彈性的發展策略,似乎成為了必備的條件。你認為Ruby on Rails最終會走上類似道路,或著你認為角色將會完全不一樣?
DHH:我們有許多的企業使用者選擇Rails,單純只是因為它能更快的讓工作搞定。我認為我們已經看到了Java在企業應用的巔峰。我想,當Java跟J2EE的傢伙們繼續用著老舊的整合系統,龐大的分散的設定,require two-phase commits等等。這對於主要的企業應用程式來說實在是太過頭了點。
Pragmatic Programmers的Dave Thomas最近用「用大槌子開小核桃」來形容這種情況。是的,有一些特別的工作的確需要大槌子,但是你並不需要用大槌子對付剩下的工作。這就是為甚麼Java跟J2EE這些公司標準是多麼的無意義。為甚麼你需要用最笨重、最最慢的機制來解決80%的那些需要更快的展現它的價值的工作呢?所以,將你的大傢伙留著對付剩下20%真正需要他的工作吧。
LJ:你認為關於Ruby on Rails還有甚麼需要告訴我們的讀者的嗎?DHH:試試看吧!我們努力讓Ruby on Rails成為最容易試用的網頁框架。取得Ruby,取得RubyGems(Ruby函式庫的apt-get),gem install rails,rails my_application,然後你就有了你的程式骨架,而且已經可以執行了。
很難用文字表達出Rails是多麼容易上手,所以我希望你們能去看看Rails網站上的影片。如何在15分鐘內建立一個簡單的blog引擎。
請先 登入 以發表留言。