facebook廣告





123

2016年9月16日 星期五

關於ruby語言 與Rails框架

關於ruby語言 與Rails框架

Ruby,是一個語法簡捷,弱型別且以物件導向為理念的跨平台動態式直譯程式語言,在1995年由日本人松本行弘(Yukihiro Matsumoto)所發行。

松本行弘有感於Perl的強大,但是語法卻不夠漂亮,於是便在Perl概念之上,加入物件導向概念,在1995年正式釋出。
Ruby提供簡潔的語法、完整的物件導向能力,並內建正規表達式(Regular Expression)引擎,在處理文字上有相當優異的表現。
另外像是異常處理機制、自動垃圾收集和可攜性等特性,都是Ruby廣受好評的原因。

Ruby語言可在多種平台上執行,Windows,Mac,Linux皆有可執行環境。並且還發展出了JRuby(Java平台)、IronRuby(.NET平台)等其他平台的Ruby語言替代品。

Ruby的命名:
    Ruby設計之初部份參考自Perl,因為Perl的發音與6月的誕生石pearl(珍珠)相同,Ruby選擇以7月的誕生石ruby(紅寶石)命名。

Ruby相較之下比其他類似的程式語言(如Perl或Python)年輕,又因為Ruby是日本人發明的,所以早期的非日文資料和程式庫都比較貧乏,這也是對Ruby發展早期關於可參考資料太少最多的批評。

約於2000年,Ruby開始進入美國,英文的資料開始發展。

2004年,RoR框架誕生,Ruby才更加廣為人知,Ruby並於2006年為TIOBE獲選為年度程式語言。

RoR是David Heinemeier Hansson(常被簡稱為DHH)在2004年為了Basecamp專案而開發的架構,後來在2005年12月釋出第一版。

Rails的成功,除了讓DHH被《Wired》雜誌封為地球上最炙手可熱的駭客,重要的是RoR在開發理念上充份發揮Web 2.0的精神,像是內建Prototype[現已更換為jQuery],使得開發人員可以輕鬆開發Ajax,提供使用者豐富的展示層。

由於RoR在開發速度上的優勢,讓使用者為中心、服務為導向的理念得以充分落實。 

Rails的設計原則包括「不做重複的事」(Don't Repeat Yourself)和「慣例優於設定」(Convention Over Configuration)

最新的Rails版本是4.0.0,於2013年6月25日公開。

關於軟體專案的敏捷開發 ( Agile Development)

敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。

在敏捷開發中,軟體項目的構建被切分成多個子項目(模組),各個子項目都具備可擴充和獨立運作的特徵。

換言之,就是把一個大項目分為多個相互聯繫,但也可獨立運行的小項目,並分別完成,在此過程中軟體則仍一直處於可使用的狀態。

為何需敏捷開發?!

說穿了,就是成本問題。開發Delay幾乎是所有軟體專案的家常便飯。如何將開發時間控制在預算時間內,這是所有專案經理最大的挑戰!

RoR框架相當適於敏捷開發專案的應用。

從設計理念上來看RoR,它的特色之一是約定優於配置(Convention Over Configuration),RoR為類別、方法、資料表和欄位,以及專案的目錄結構都採取固定的命名約定,透過這種方法,推斷資料表名稱、物件識別字和主鍵(Primay key)、外部鍵(Foreign Key)等名稱。

不管是開發還是維護工作,只要依循這個法則,程式碼都能保持簡單、輕巧。

另外一個鮮明的特色是DRY(Don't Repeat Yourself),強調開發過程中降低重複性的工作,舉例而言,在RoR的MVC架構中,View可以透過Helper、Partial等方式做到DRY。

RoR是依MVC(Model-View-Controller,資料模型-視圖-控制器)的Model2結構所開發。

MVC架構的觀念始於70年代,目的在減少商業邏輯和表現層之間的耦合,藉由MVC架構,透過Controller控制,可讓表現層獨立存在於View當中,並透過Model處理資料的輸出、入,達到資料、表現層和商務邏輯分離的目的。

Model2則是針對網站架構無狀態(stateless)的情況所作的修正,讓MVC貼近網站實際的運作模式。

RoR的 MVC架構導入了Action Pack,優化了Controller和View之間的整合,Active Record的ORM更是讓開發人員減輕不少工作量。

由於RoR有嚴格的MVC撰寫規範。可維護性高。預設 escape,所有內部含html字元的資料,若未宣告都會被轉譯,有效防止SQL injection。

在Rails中,所有的資料庫的操作都可透過腳本和遷移來完成,Rails中的遷移也是最被稱道的一項功能,當不同的開發者同時在修改一個資料庫,或者您需升級現有的環境下的資料庫,無痛遷移就顯示出它的強大威力。

Rails的高生產力之源:
http://rubygems.org 是 Ruby 社群全新的 RubyGems 官方網站,它也是 RubyGems 套件管理工具預設的搜尋站點。
RubyGems 則是 Ruby 的套件管理工具。它提供了一個標準格式來發佈 Ruby 程式和函式庫,以及提供方便的工具來安裝這些套件。
由於有這個齊全的官方軟體資料庫,更加提升Ruby 與RoR的高生產力。

現在使用Ruby on Rails的知名網站有:

    Twitter 
    Basecamp
    GitHub
    Groupon

    國內:

    techbang.com T客邦
    inside.com.tw 硬塞
    icook.tw 愛料理

Rails的缺點:
Rails雖然是一個非常具有高生產力的開發框架,然而從2.0、3.0到4.0的改版之間,很多程式碼的語法(Syntax)都不斷變動,容易讓初學者混淆,造成學習門檻的提高,這也是Rails較為人所詬病的問題之一。


與其他語言的比較:
php: 
   入門容易,效能運作較佳。
   php佈署成本較低。
   對網站的開發工作而言,PHP已經累積許多資源,例如網頁伺服器的優化、程式的快取機制、與各種資料庫的介接和優化、元件的使用等,這些都是PHP領先RoR之處。 
   RoR的DRM實作則優於php。
   PHP是專為網頁開發而生的動態語言。但個人眼中,與php相較Ruby有一項優點是php無法企及,就是與系統的綁定。在檔案權限的處理甚或OS api的呼叫尤為便利。

 java:
     java本身是一種強型別的靜態編譯語言。在學習的門檻上已較其他動態語言上為高。
    而Java在使用各種框架開發時,需要透過XML作許多設定,像是使用Hibernate設定ORM(Object Relation Mapping)需要使用,而負責前端的JSF也有XML需要設定。
    當Spring要指定ORM和前端架構,又必須設定一次XML檔。光是要了解和使用這些設定就必須花上許多時間,網站開發原本應該關注的應用程式邏輯和創意反而遲遲無法展開。
    雖然這些Framework,在架構設計上的確漂亮而且深具彈性,只是對於網站開發而言,仍過於複雜。 漫長的開發時間與成本也一直是java的罩門。

.net:
    佔全世界百分之70的web伺服器都是linux系統,所以不能跑.net
    .NET作為一個“通用框架”有點過於龐大,對於Web開發來說不夠靈活。
    C#對比Java來說優雅了很多,不過對比起Ruby還遠遠不夠。
    Windows作為伺服器實在不太給力。
    ASP.NET的部署成本高於RoR。

引用:http://diyland.biz/?opt=detail&topic=16&id=19601

沒有留言:

張貼留言