程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 開源Web框架PHP與Ruby on Rail對決

開源Web框架PHP與Ruby on Rail對決

編輯:關於PHP編程

PHP與Ruby on Rails兩大陣營均擁有大量各自的忠實粉絲。拿兩者作比較,本身就是難以取捨。無論誰贏了,都會引來對方粉絲的口水。受此影響,在兩者選其一這個問題上,開發者通常會顯得猶豫不決。這篇文章的出發點雖然是比較,但並不是一邊倒式地唱盛唱衰,而是辯證式的綜合對比。沒有好壞,適合自己的才是最好的。

實際上,拿PHP與Ruby on Rails比較是個偽命題,是不公平的。相比於Ruby on Rails語言加框架的完整性,PHP僅是一門編程語言。你看,PHP已經輸在起跑線上了。但PHP擁有四兩撥千斤式的輕巧與靈活,這就意味著它消耗極少的內存資源,性能卓越。另一方面,PHP社區是成熟的、穩定的,各種PHP擴展插件與工具包百花齊放,百家爭鳴。如此看來,PHP又扳回了一成。

PHP具有性能高、插件多的優勢,並不意味著它沒有缺點。PHP語法源自腳本風格,卻加入面向對象特性,這種畫虎不成反類犬的不倫不類,飽受诟病。這也許可以成為Ruby on Rails粉絲攻擊的軟肋。另一方面,如前所述,PHP作為單一編程語言,不具備Ruby on Rails的框架特性。這就意味著,除非借助插件與工具,單靠PHP從零開始開發應用程序,需要非常高的編程成本。比如,為取得與數據庫的連接,你不得不從頭開始寫一個數據庫連接器API。但有時候,缺點其實也是優點。不同於Ruby on Rails,受限於自身的框架,PHP則可以靈活自如的選擇成熟穩定的第三方插件與工具。這就好比說,單身的同志也大可不必太羨慕成雙成對的鴛鴦,因為沒有選擇往往意味更多的選擇。不同的是,愛情鼓勵專一,而“腳踏幾只船”是PHP的賣點,開發人員可以同時選擇不同的框架,實現與各種單一功能特性的最佳匹配。在這一點上,對於沒有選擇的Ruby on Rails來說,只有羨慕的份兒了。正因如此,相對於PHP開放性地支持第三方插件而言,Ruby on Rails天生的封閉特性,無可避免地要面臨性能換取功能的挑戰。每當遇到無法滿足業務程序需求的時候,就意味著Ruby on Rails需要更多的研發成本投入。這絕對是一大利空。

剛才強調了PHP的很多優勢,如果就此打住,相信會招來Ruby on Rails粉絲的無數口水。是時候該替這個後起之秀說說話了。Ruby on Rails作為一個框架,是專為Ruby這門編程語言設計的。Ruby的設計理念很清晰,就是完全的面向對象,語法非常緊湊,清晰,代價是損失一定的靈活性。從編程語言的性能對比來看,Ruby通常會比PHP慢,耗用更多內存。不過,Rails框架能幫助Ruby快速開發出Web應用程序,算是一種彌補吧。這是一個典型的功能換性能的例子。作為一個Web框架,Rails具有許多非常多非常棒的特性。比如,Rails的ActiveRecord特性能支持數據庫表記錄與Ruby對象的映射,帶來的好處是,Rails幫助開發人員隱藏繁瑣的SQL細節,直接使用Ruby就輕松實現對數據庫的增刪改查。換句話說,Ruby開發人員無需依賴SQL,照樣玩轉數據庫。另外,Rails支持很多的HTML特性,比如HTML代碼生成器,session機制等,可以更加輕松便捷地構建Web應用。這也覺得是一大利好。

Rails眾多強大的特性,從另一個角度來說,也是一個弊病。比如,Rails雖然屏蔽SQL,同時也意味著Ruby開發人員失去了直接操控SQL的機會。功能多也未必全是需要的。這樣看來,魚和熊掌,真是不可兼得。

說了這麼多,到底誰贏誰輸呢?還是那句話,沒有誰好誰壞,只有誰更適合。選擇自己熟悉的領域始終是沒錯的。從個人的感覺來說,還是偏好PHP。第一,PHP先入為主,大量的網站采用的都是PHP,尤其是論壇。起碼PHP提供的工作機會更多一些吧。第二,Rails提供的很多特性,其實PHP都具備,重復發明輪子是不鼓勵、不推薦的。最後,PHP是輕巧、靈活的,快速的,很符合乒乓球式的小、快、靈特點。如果不需要框架的輔助,PHP本身其實就夠了,如果需要,以此提高開發效率,也很容易集成現有各種成熟、穩定的插件與工具。基於這三點,即便Ruby on Rails具有很多優點,個人還是把獎頒給了PHP。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved