日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于 Ruby - Ruby 官方網(wǎng)站

 ShangShujie 2010-12-15

想知道 Ruby 為什么會如此受歡迎嗎?為什么使用過它的支持者都稱贊它為巧妙、優(yōu)雅且易用更實用有趣的語言?

Ruby 發(fā)明者的理想

Ruby 是一個注重均衡的語言,它的發(fā)明者松本行弘 Yukihiro “matz” Matsumoto,混合了他喜歡的語言(Perl、 Smalltalk、 Eiffel、 Ada 和 Lisp ) 產(chǎn)生了一種具有函數(shù)式及指令程序設(shè)計特性的新語言。

他常說,他是“試著讓 Ruby 更自然,而不是簡單,就像生活一樣”。

除此之外,他還提到:

Ruby 就像人的身體一樣,表面上看來簡單,但是內(nèi)部卻相當(dāng)?shù)膹?fù)雜[1]。

Ruby 的成長

在 1993 年,沒有人會相信一個由日本業(yè)余語言設(shè)計者創(chuàng)建的面向?qū)ο蟮恼Z言,能最終在世界范圍內(nèi)被廣泛使用并且變得幾乎像 Perl 那樣流行。自從 1995 年 Ruby 公開發(fā)表以來,Ruby 在全球吸引了許多忠實的程序設(shè)計員。在 2006 年,Ruby 被廣泛接受。在各大城市都有活躍的使用者并通過社區(qū)舉辦許許多多場場爆滿的研討會。

Graph courtesy of Gmane.

在 Ruby-Talk,主要的 郵件列表 上,討論 Ruby 語言的文章爬升到每日 200 封。

TIOBE, 最流行的開發(fā)語言排名調(diào)查中, Ruby 排名為全球第 11 位。 根據(jù)這樣的成長情況,他們預(yù)測“在半年之中 Ruby 將會進入最受歡迎開發(fā)語言的前 10 名。”有越來越多受歡迎的軟件如 Ruby on Rails web framework2 是使用 Ruby 撰寫而成,也是造成 Ruby 如此快速成長的原因。

Ruby 是開源軟件。 不只是免費,而且可以自由的使用、復(fù)制、修改與發(fā)布。

所見到的都是對象

最初,Matz 從其它語言中找尋理想的語法,在網(wǎng)絡(luò)上他做了一段時間的調(diào)查,找到候選如“Perl“和“Python“。但都不是他想要的,他需要一個比 Perl 更強大、比 Python 更面向?qū)ο蟮恼Z言[3]。

在 Ruby 中,所有的東西都是對象,所有的信息和代碼都可以給它們所擁有的屬性和行為。面向?qū)ο蟪绦蛟O(shè)計中稱屬性為實例變量(instance variables),稱命令為方法 (methods)。 從下列程序代碼中看到 Ruby 能夠給數(shù)字賦于行為,從這點可以證明 Ruby 是純面向?qū)ο蟮恼Z言。

5.times { print "We *love* Ruby -- it's outrageous!" }

在許多語言中,數(shù)字和其它原生的類型都不是對象。而 Ruby 受 Smalltalk 語言影響,讓所有的類型都可以賦予方法及產(chǎn)生實例變量,并讓這些規(guī)則適用于 Ruby 所有對象。

Ruby 的靈活性

Ruby 是一個相當(dāng)靈活的語言,她允許用戶去改變她本身。 Ruby 的核心部分可以被更改或重新定義,模塊可以被添加。Ruby 試著不去妨礙程序員。

比如(+) 是用做加法的運算符。如果你更喜歡使用易讀的 plus 的話,你可以給 Ruby 的內(nèi)建 Numeric 類添加一個函數(shù)。

class Numeric
  def plus(x)
    self.+(x)
  end
end

y = 5.plus 6
# y is now equal to 11

Ruby 的符號只是語法的甜頭 (syntactic sugar)。你可以隨時重定義他們。

Blocks,一個獨特且強大的特性

Ruby 的代碼塊是非常強大的。程序員可以給任何函數(shù)添加一個密封 (closure) 來表述這個函數(shù)該如何工作。密封也被叫做代碼塊,是用過其他比如 PHP, Visual Basic 等規(guī)則語言的 Ruby 的初學(xué)者最喜歡使用的一個功能。

代碼塊取自函數(shù)語言。Matz 說:“我希望在 Ruby 的密封中融入 Lisp 的文化 [4]。”

search_engines = 
  %w[Google Yahoo MSN].map do |engine|
    "http://www." + engine.downcase + ".com"
  end

在上面的代碼中,代碼塊是在 do ... end 中的結(jié)構(gòu)。 map 函數(shù)將代碼塊應(yīng)用到一個詞的列表中。Ruby 的其他函數(shù)經(jīng)常會為程序員留出一個空當(dāng)給代碼塊來控制函數(shù)的功能。

Ruby 與 Mixin

于其他面向?qū)ο笳Z言不同,Ruby “有意”只提供單繼承。不過 Ruby 擁有模塊(在 Objective-C 里面叫做類別)。模塊是把許多方法放在了一個類別里。

類可以混合一個模塊,得到這個模塊提供的所有方法。比如所有提供 each 方法的類可以混合 Enumerable 模塊,來得到這個模塊提供的所有方法,當(dāng)然這些方法都會調(diào)用 each 做循環(huán)。

class MyArray
  include Enumerable
end

一般來說,Ruby 愛好者相對于復(fù)雜和限制頗多的多態(tài)繼承方法來講更偏向于這種混合方法。

Ruby 的面貌

盡管 Ruby 只用很少的符號并且偏向與英文單詞做關(guān)鍵字,但是少量的符號也被用來裝飾 Ruby。Ruby 不需要提前定義變量。它用簡單的命名法來提示變量存在的范圍。

  • var 可以是局部變量。
  • @var 是一個實例變量。
  • $var 是一個全局變量。

這些信號讓程序員更清楚的看到每一個變量的角色,增強了程序的可讀性,也不需要在實例變量前面加上 self. 了。

更上一層樓

Ruby 還有其他豐富的特性:

  • Ruby 有類似于 Java 和 Python 的異常處理,使處理錯誤更方便。
  • Ruby 有一個真正的表示-清掃(mark-and-sweep)垃圾手機器來出來所有的 Ruby 對象。不需要在庫里維護引用數(shù)了。就像 Matz 說的:“這對您健康有意。”
  • 為 Ruby 寫 C 的擴展比 Perl 和 Python 更容易。Ruby 有一個非常雅致的 API 從 C 語言調(diào)用 Ruby。這包括把 Ruby 作為嵌入式腳本語言時,從其他軟件里調(diào)用 Ruby。SWIG 界面也是可選的。
  • Ruby 可以在操作系統(tǒng)允許的情況下動態(tài)調(diào)用庫。
  • Ruby 提供不依賴操作系統(tǒng)的線程。所以在所有 Ruby 支持的操作系統(tǒng)里都可以使用多線程處理,不管操作系統(tǒng)支不支持,比如 MS-DOS!
  • Ruby 極為輕便:它只要是在 GNU/Linux 上開發(fā)的,但也在很多類型的 UNIX 上運行,也支持 Mac OS X, Windows 95/98/Me/NT/2000/XP,DOS,BeOS,OS/2 等。

參考資料

1 Matz, 在 Ruby-Talk 郵件列表, 5月12日, 2000.

2 查看更多信息在 Ruby on Rails 主頁.

3 Matz, 在 Ruby 創(chuàng)造者的采訪, 11月29日, 2001.

4 Matz, 在 Ruby 的代碼塊和閉合, 12月22日, 2003.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多