2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

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

 ShangShujie 2010-12-15

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

Ruby 發(fā)明者的理想

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

他常說(shuō),他是“試著讓 Ruby 更自然,而不是簡(jiǎn)單,就像生活一樣”。

除此之外,他還提到:

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

Ruby 的成長(zhǎng)

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

Graph courtesy of Gmane.

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

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

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

所見(jiàn)到的都是對(duì)象

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

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

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

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

Ruby 的靈活性

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

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

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

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

Ruby 的符號(hào)只是語(yǔ)法的甜頭 (syntactic sugar)。你可以隨時(shí)重定義他們。

Blocks,一個(gè)獨(dú)特且強(qiáng)大的特性

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

代碼塊取自函數(shù)語(yǔ)言。Matz 說(shuō):“我希望在 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)用到一個(gè)詞的列表中。Ruby 的其他函數(shù)經(jīng)常會(huì)為程序員留出一個(gè)空當(dāng)給代碼塊來(lái)控制函數(shù)的功能。

Ruby 與 Mixin

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

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

class MyArray
  include Enumerable
end

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

Ruby 的面貌

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

  • var 可以是局部變量。
  • @var 是一個(gè)實(shí)例變量。
  • $var 是一個(gè)全局變量。

這些信號(hào)讓程序員更清楚的看到每一個(gè)變量的角色,增強(qiáng)了程序的可讀性,也不需要在實(shí)例變量前面加上 self. 了。

更上一層樓

Ruby 還有其他豐富的特性:

  • Ruby 有類(lèi)似于 Java 和 Python 的異常處理,使處理錯(cuò)誤更方便。
  • Ruby 有一個(gè)真正的表示-清掃(mark-and-sweep)垃圾手機(jī)器來(lái)出來(lái)所有的 Ruby 對(duì)象。不需要在庫(kù)里維護(hù)引用數(shù)了。就像 Matz 說(shuō)的:“這對(duì)您健康有意。”
  • 為 Ruby 寫(xiě) C 的擴(kuò)展比 Perl 和 Python 更容易。Ruby 有一個(gè)非常雅致的 API 從 C 語(yǔ)言調(diào)用 Ruby。這包括把 Ruby 作為嵌入式腳本語(yǔ)言時(shí),從其他軟件里調(diào)用 Ruby。SWIG 界面也是可選的。
  • Ruby 可以在操作系統(tǒng)允許的情況下動(dòng)態(tài)調(diào)用庫(kù)。
  • Ruby 提供不依賴(lài)操作系統(tǒng)的線(xiàn)程。所以在所有 Ruby 支持的操作系統(tǒng)里都可以使用多線(xiàn)程處理,不管操作系統(tǒng)支不支持,比如 MS-DOS!
  • Ruby 極為輕便:它只要是在 GNU/Linux 上開(kāi)發(fā)的,但也在很多類(lèi)型的 UNIX 上運(yùn)行,也支持 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 主頁(yè).

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多