Ruby和其它類似語言的比較

來源:互聯網
上載者:User
Smalltalk

 

和smalltalk一樣,Ruby也是動態純物件導向的語言。你不需要靜態指定資料類型,所有東西都是對象。而且,兩者都有垃圾收集機制。

在Smalltalk中,流程式控制制語句也都是通過給對象發送訊息來完成的,但有時候這使得程式難以閱讀理解。而Ruby中的控制流程程結構就顯得保守一些,而且也就自然、容易理解一些。

說實話,Smalltalk為何物,我一無所知。以上廢話全摘自Ruby作者之文。

 

Perl

 

Ruby和其它兩種P姓語言:Perl和Python都被分類為指令碼語言(scripting language)。原因有三:

1.它們都支援快速開發週期(編輯-運行-編輯),不需要編譯。

2.它們為了提高你的效率,盡量減少你的代碼數量,比如,你不需要定義類型,至少省了敲好幾個鍵。

3.很多很強的內建庫支援對文本,檔案,網路的操作。

 

也許,因為是指令碼語言,很多人認為速度慢,不能使用在大型項目中。然而,也許對csh這樣的來說是吧,但是,對於Ruby以及Perl等來說,卻不太適合了。也許,稱Ruby為“動態物件導向語言”比“指令碼語言更合適”。

不像Perl,Ruby是完完全全的物件導向語言,OO不是裝飾品。Ruby用的$,@,%等符號比較少,這些符號對於螢幕小眼近視的我來說很容易混。Ruby沒有太多的對上下文環境的依賴,很少的隱式轉換。

比如,取得一個字串或者數組的長度方法如下:

Ruby:

 

a = "abc"

    a.length           # => 3

    a = [1,2,3]

    a.length           # => 3

 

非常簡單,而在Perl中,則麻煩一些:

 

    $a = "abc";

    length($a);        # => 3, it's OK

    @a = (1,2,3);

    length(@a);        # => 1, not as expected

    scalar(@a);        # => 3,

    $a = [1,2,3];      #

    length($a);        # => 16, not as expected

scalar(@$a);       # => 3

 

在Ruby中很多的Perl函數都被封裝成類庫了,所以有時候Ruby程式看起來也像簡單的Perl程式。Ruby繼承了Perl的很多優點,當然沒有把那些煩人的東西也引入,所以,如果你熟悉Perl,也許有會喜歡Ruby。

Python

下面不糾纏Perl了,來說說Python。

先來說說抱怨聲:為什麼非要用縮排來確定代碼結構,有了list還要tuple幹什嗎?為什麼所有的value都不是執行個體?等等問題在Ruby中可以不必煩惱了,Ruby的目的是使程式比Python的短小精練。

來看的一個問題就是誰更物件導向,在Ruby中,取得字串的長度如下:

 

irb(main):010:0> a="1234"

=> "1234"

irb(main):011:0> a.length

=> 4

irb(main):012:0>

 

 

而在Python中,則要更面向過程一些了:

 

 

length(a)

 

現在我對Python不太熟悉,不好總結,等等過些日子再更新。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.