感覺Ruby沒有Python好

來源:互聯網
上載者:User

    聲明一下,本人無意挑起語言紛爭,只是談談自己的想法。  

    我也研究過Ruby,感覺它太繁複了,文法太多,文法糖太多,有太多簡寫。

我蠻久沒玩Ruby了,看到這樣的代碼完全看不懂了。

  1. class Customer < ActiveRecord::Base  
  2.     has_many :orders, :dependent => :destroy  
  3. end 
  4. 也不想看懂了。
      剛才又看了一下ruby官網上的一篇文章:To Ruby From Python。這篇文章也太能吹了,顛倒黑白,極盡倭寇無恥之能事!地址:http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/to-ruby-from-python/

      Ruby沒有元組,這不能算優點吧。元組是函數式編程的核心。Ruby一天到晚吹噓函數式編程,沒這個也沒啥好吹的。

       · There are no “new style” and “old style” classes. Just one kind.

· Ruby是單根的。Python新風格的類是單根的。但是Python舊風格的類沒有根類。

· Python的類從元類產生。Python舊風格的類也是從元類產生的,可以自訂元類。

 Ruby好像也有類似的東西。抱歉,很久沒玩Ruby了。

 

    · You never directly access attributes. With Ruby, it’s all method calls.

· Ruby中不能訪問屬性,它提供了自動產生的get/set方法。Python可以直接存取屬性,需要自己寫get/set方法,或者直接操作變數。__attr__方法中也可以攔截對屬性的訪問。

    Ruby的函數調用中()可以省略,對代碼可讀性有很大傷害。

    · There’s public, private, and protected to enforce access, instead of Python’s _voluntary_ underscore __convention__.

· Ruby強制定義了類的public,private,protected.

· Python都是public,但是可以__開始的變數會混淆名字。

     我覺得這個有沒有都無所謂。

  · “mixin’s” are used instead of multiple inheritance.

· Ruby是單繼承的,有特定的mixin機制。Python使用多繼承實現混入。

· 混入指的是多繼承沒有資料只有方法的類。

   · You can add or modify the methods of built-in classes. Both languages let you open up and modify classes at any point, but Python prevents modification of built-ins — Ruby does not.

· Python不能修改內建類的方法和屬性,只能繼承它們。

· Ruby可以修改。--------這有個鳥用?把基本類型弄壞了咋整?

· You’ve got true and false instead of True and False (and nil  in stead of None).

· Python的關鍵字True,False和None真的詭異。  關鍵字混用大小寫確實不太習慣。

 · There are a number of shortcuts that, although give you more to remember, you quickly learn. 

They tend to make Ruby fun and very productive.

· 這個是Ruby的一大缺點。Ruby有很多快速鍵,預設值。很詭異。如上面那個Rails產生的類,太難看懂了。

    

      代碼的可讀性肯定是第一位的。Ruby的代碼量雖少但非常晦澀。

 

      Ruby的書中經常引以為豪的幾點是:

1,ruby是完全基於類的語言,類似於Java。

ruby中任何東西都是對象,包括基本類型,整數等。

    其實在物件導向方面,Python更勝一籌。

    Python中一切都是對象。並且Python允許直接執行模組中的源碼。Python也允許不使用類,直接定義變數,函數。

Ruby就此攻擊說Python物件導向沒有它那樣純粹。其實完全是誹謗!

    Python的函數也是對象!是Function類的執行個體。


2,Ruby標榜自己的函數式編程能力很強。什麼lambda什麼的。

其實在面向函數編程方面,Python也更強。

    Python支援元組,lambda,內嵌函數,閉包,偏函數。Ruby只有一個Lambda而已!


3,Ruby還標榜自己的Mixin機制。它為了Mixin特地定義了Module這樣一種機制。

    Python支援更加簡潔強大的Mixin機制。Python支援多繼承!


4,Ruby標榜自己是DSL語言,有很多快鍵鍵。

   實際上造成了源碼的難以理解。

5,Ruby還常常自稱自己的庫多,應用程式多。Ruby除了Rails在Web上有些應用之外,還有什麼呢?     中國程式員學習Python的很少,讓人感覺Python是一種非主流語言。     實際上,在Linux平台,數量最多的開源和商業程式是C程式,第二就是Python了。Linux中有大配量序是用Python編寫的。如虛擬化中的Libvirt和相關的套件等。在Web開發領域,Python也有很多架構。     Python的開源資源浩如煙海,Ruby怎麼比?      說句實話,Ruby也是設計精巧,不錯的語言。相當靈活,威力很強。但是Rubyer到處詆毀其他語言,擺出老子天下第一的架勢,這我就看不慣了。      既生瑜何生亮!Ruby和Python相比,還是要略遜一籌。我更看好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.