Ruby的概念
Ruby,一種簡(jiǎn)單快捷的面向?qū)ο螅嫦驅(qū)ο蟪绦蛟O(shè)計(jì))腳本語(yǔ)言,在20世紀(jì)90年代由日本人松本行弘(YukihiroMatsumoto)開發(fā),遵守GPL協(xié)議和RubyLicense。它的靈感與特性來自于Perl、Smalltalk、Eiffel、Ada以及Lisp語(yǔ)言。由Ruby語(yǔ)言本身還發(fā)展出了JRuby(Java平臺(tái))、IronRuby(.NET平臺(tái))等其他平臺(tái)的Ruby語(yǔ)言替代品。Ruby的作者于1993年2月24日開始編寫Ruby,直至1995年12月才正式公開發(fā)布于fj(新聞組)。因?yàn)镻erl發(fā)音與6月誕生石pearl(珍珠)相同,因此Ruby以7月誕生石ruby(紅寶石)命名。
Ruby語(yǔ)言特點(diǎn)
完全面向?qū)ο?/p>
在Ruby語(yǔ)言中,任何東西都是對(duì)象,包括其他語(yǔ)言中的基本數(shù)據(jù)類型,比如整數(shù)
變量沒有類型
Ruby的變量可以保存任何類型的數(shù)據(jù)。
任何東西都有值
不管是數(shù)學(xué)或者邏輯表達(dá)式還是一個(gè)語(yǔ)句,都會(huì)有值。
ruby語(yǔ)言很優(yōu)雅,可以做到不需要注釋就可以讀懂。
Ruby的優(yōu)點(diǎn)
語(yǔ)法簡(jiǎn)單
普通的面向?qū)ο蠊δ埽悾椒ㄕ{(diào)用等)
特殊的面向?qū)ο蠊δ埽∕ixin,特殊方法等)
操作符重載
錯(cuò)誤處理功能
迭代器和閉包
垃圾回收
動(dòng)態(tài)載入(取決于系統(tǒng)架構(gòu))
可移植性高。不僅可以運(yùn)行在多數(shù)UNIX上,還可以運(yùn)行在DOS,Windows,Mac,BeOS等平臺(tái)上
適合于快速開發(fā),一般開發(fā)效率是JAVA的5倍。
ruby發(fā)展前景分析
1、Ruby語(yǔ)言的虛擬化
這里所談及的虛擬機(jī)是特指程序虛擬機(jī),即程序的虛擬運(yùn)行環(huán)境,或者更確切地說,是在編譯器和運(yùn)行層面的語(yǔ)言虛擬機(jī)。
一門計(jì)算機(jī)語(yǔ)言要能夠?yàn)槠髽I(yè)所采用,其性能和速度是重要的因素。虛擬機(jī)就是解決這個(gè)問題的重要而實(shí)質(zhì)的方法之一。
當(dāng)前虛擬機(jī)正在從單一語(yǔ)言虛擬機(jī)向多語(yǔ)言虛擬機(jī)方向發(fā)展。例如,Java語(yǔ)言虛擬機(jī)已經(jīng)從Java語(yǔ)言變成為多種語(yǔ)言共享的虛擬機(jī)。我們知道,JRuby語(yǔ)言是可以運(yùn)行在該虛擬機(jī)上,另外Jython也在實(shí)現(xiàn)利用該虛擬機(jī)。又如Parrot是一款最成熟的面向動(dòng)態(tài)語(yǔ)言的虛擬機(jī)。盡管該虛擬機(jī)是為Perl語(yǔ)言所設(shè)計(jì)的,但是它也是可以成為Ruby語(yǔ)言的虛擬機(jī)。盡管這是一種發(fā)展趨勢(shì),但是作者認(rèn)為,單一語(yǔ)言虛擬機(jī)的性能應(yīng)該會(huì)更好。據(jù)悉,Ruby2.0可能會(huì)采用自己的單一語(yǔ)言虛擬機(jī)Rite。
盡管至今CRuby還沒有出現(xiàn)自己的虛擬機(jī),但是Ruby語(yǔ)言虛擬機(jī)的商業(yè)需求是明顯的。這也是JRuby語(yǔ)言實(shí)現(xiàn)的目的之一。除了JRuby有自己的虛擬機(jī)外,Ruby語(yǔ)言的虛擬機(jī)也在不斷的出現(xiàn),比如基于Smalltalk-80語(yǔ)言的Ruby語(yǔ)言虛擬機(jī)Shotgun。從該網(wǎng)站的主頁(yè)上可以看出,Shotgun的目標(biāo)是十分明確的,就是為商業(yè)服務(wù)。它能夠支持運(yùn)行編譯代碼,這樣就可以支持代碼的加密工作,以有效地保護(hù)軟件的知識(shí)產(chǎn)權(quán)問題,這是商業(yè)應(yīng)用中的頭等大事。此外它的解釋器內(nèi)核更簡(jiǎn)單和更容易維護(hù),既節(jié)省人力、物力又節(jié)省時(shí)間。尤其需要值得注意的是,Ruby語(yǔ)言虛擬機(jī)提供性能不是以硬件為代價(jià)的,而是以軟件本身的實(shí)現(xiàn)為前提的,這種實(shí)現(xiàn)的潛力還在不斷增加。
隨著Ruby語(yǔ)言虛擬機(jī)的不斷創(chuàng)新,可以肯定Ruby語(yǔ)言及其框架的應(yīng)用軟件將會(huì)更加豐富。在其它Ruby語(yǔ)言虛擬機(jī)還尚未出現(xiàn)之前,JRuby語(yǔ)言將會(huì)借助于Java語(yǔ)言的力量和當(dāng)前越來越多的多核電腦性能成為一種不可忽視的選擇。
2、Ruby語(yǔ)言的實(shí)現(xiàn)多元化
隨著Ruby語(yǔ)言的實(shí)現(xiàn)越來越多,Ruby語(yǔ)言一詞的概念也在發(fā)生著變化。在2000年或者再晚一些,Ruby語(yǔ)言一般都是指以C語(yǔ)言實(shí)現(xiàn)的官方版本Ruby,但是現(xiàn)在Ruby語(yǔ)言正在變成為一個(gè)通用的概念,或者說是該語(yǔ)言的技術(shù)規(guī)范。
我們可以從三個(gè)方面來分析Ruby語(yǔ)言的實(shí)現(xiàn)。一是面向CRuby的兼容性的實(shí)現(xiàn);二是以Ruby語(yǔ)言風(fēng)格的不兼容的實(shí)現(xiàn),三是以Ruby語(yǔ)言為基礎(chǔ)的特定領(lǐng)域語(yǔ)言的實(shí)現(xiàn)。
下面我們列舉了一些重要的面向CRuby的兼容性的Ruby語(yǔ)言實(shí)現(xiàn):
以C語(yǔ)言實(shí)現(xiàn)的Ruby語(yǔ)言=Ruby或者CRuby(非正式名稱)
以Java語(yǔ)言實(shí)現(xiàn)的Ruby語(yǔ)言=JRuby(由Sun公司出資所贊助)
以基于Smalltalk-80架構(gòu)采用C語(yǔ)言實(shí)現(xiàn)的Ruby語(yǔ)言=Rubinius(由EnginYard公司出資所贊助的,該公司聚集大量Ruby語(yǔ)言高手)
以O(shè)bjective-C語(yǔ)言實(shí)現(xiàn)的Ruby語(yǔ)言=MacRuby(由Apple公司出資所贊助的)
在上述的列舉中,除了官方版本Ruby之外,其它的實(shí)現(xiàn)都是由大公司出資所贊助的,大公司為什么要出資贊助這些開源的項(xiàng)目呢?其中的玄妙不得而知。但是,可以肯定的是他們對(duì)Ruby語(yǔ)言的發(fā)展前景的認(rèn)可。
Ruby語(yǔ)言的實(shí)現(xiàn)多元化,應(yīng)當(dāng)說是Ruby語(yǔ)言發(fā)展過程中百花齊放的結(jié)果,這是好事。但由此可能帶來的問題是,Ruby語(yǔ)言的實(shí)現(xiàn)之間的兼容問題,就如Linux的發(fā)展過程。
Ruby一直到今天仍然是最重要的Ruby語(yǔ)言的實(shí)現(xiàn),隨著項(xiàng)目YARV合并到Ruby,使得Ruby的性能得到一次比較大的飛躍,這個(gè)合并的結(jié)果就是已經(jīng)發(fā)行的開發(fā)版本Ruby1.9。當(dāng)JRuby語(yǔ)言的實(shí)現(xiàn)得到進(jìn)一步完善時(shí),與Ruby之間的兼容性問題將變得越來越明顯,盡管雙方之間在溝通和協(xié)調(diào),但是兩者實(shí)現(xiàn)之間的不兼容性是始終存在的,比如線程問題,哪怕即使是一個(gè)小小的命令也存在著差異。而且從根本上說,所謂兼容也只是單向的,即JRuby兼容CRuby,反之則不然。這種情況本身就是一種相互之間的脫離。不兼容性給企業(yè)和開發(fā)人員帶來了巨大的麻煩和阻礙。
隨著以非兼容性的、Ruby語(yǔ)言風(fēng)格的語(yǔ)言出現(xiàn),也會(huì)沖擊和影響著Ruby語(yǔ)言的發(fā)展。如Sapphire語(yǔ)言,該語(yǔ)言聲稱,它具有Ruby語(yǔ)言語(yǔ)法風(fēng)格并且更為簡(jiǎn)單。它的最重要的設(shè)計(jì)思想是一致的、明確的和深度面向?qū)ο蟮摹_@門新興的似Ruby語(yǔ)言,盡管目前該語(yǔ)言本身的影響力很小,但它的出現(xiàn)至少是給了我們一種新的思維和啟示。
以Ruby語(yǔ)言實(shí)現(xiàn)的特定領(lǐng)域語(yǔ)言DSL(DomainSpecificLanguages),是Ruby語(yǔ)言的一個(gè)最重要的特性。它使得Ruby語(yǔ)言的應(yīng)用更加廣泛而深入,在Rails框架中涌現(xiàn)出大量的DSL,這也是Rails成功的原因之一。模板系統(tǒng)Malline能夠使得代碼變得更為容易維護(hù)和管理,而且在代碼開發(fā)中可以只需要會(huì)Ruby語(yǔ)言就可以開發(fā)網(wǎng)絡(luò)的頁(yè)面,而不需要理會(huì)其它語(yǔ)言如HTML。還有基于桌面布局語(yǔ)言LEL能夠使得桌面軟件開發(fā)變得更加簡(jiǎn)單和方便。
總而言之,Ruby語(yǔ)言的實(shí)現(xiàn)多元化是Ruby語(yǔ)言的發(fā)展的必然,我們只有打破框框才能尋找到Ruby語(yǔ)言的最佳實(shí)現(xiàn),只有最佳才能帶來最大的回報(bào),而Ruby語(yǔ)言的目前的發(fā)展方向正是沿著這條道路在前進(jìn)。
-
ruby
+關(guān)注
關(guān)注
0文章
44瀏覽量
3457
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論