Ruby. Vs . Python
前言:從語言的本質上來分析,我對Ruby持反對態度,畢竟語言是為了交流,在表達的效率層面為了正確性必須適當放棄復雜性。且有句老話說的好,Ruby In Rails 才是語言,而Ruby只是這個語言的工具!所以除了Ruby In Rails,還是選擇Python。
原文鏈接:http://www.zhihu.com/question/19552194
討論一:
Ruby 和 Python 太相似了,取舍大部分都是個人喜好上的原因。比如我就覺得 Python 的 “There is only one way to do it.” 比 Ruby 的 “There are many ways to do it.” 要好,這不光是考慮團隊協作的問題,更重要的是自己能很快明白自己三個月前寫的沒有任何注釋的代碼是在干什么。當然也有很多人覺得自由和靈活要比可讀性來的重要,所以我說這個是個人喜好的原因。
客觀上的 Ruby 比 Python 的優勢我想到的有這么幾個:
Block 應該是語言層面上 Ruby 比 Python 更酷的地方,Python 的匿名函數(lambda function)制約太多,屬于雞肋(BFDL GvR 不認可函數式編程的許多方面)。
OS X 上的話,Ruby 比 Python 最重要的優勢可能是 MacRuby (http://www.macruby.org/) 的存在。我大膽猜測以后 MacRuby 將成為 Objective-C 之外(如果不是完全替代的話)的蘋果官方語言。MacRuby 除了能更加方便快捷的創建 Cocoa 應用外,ruby block 使得利用 OS X 的 Grand Central Dispatch 變得容易,在以后的多核、混合核(CPU+GPU)應用上非常重要。
劣勢:
Ruby 的硬傷之一在于性能。官方實現 Ruby 1.9 比 CPython 遜色不少。另外 Python 擁有諸如 Numpy, Psyco, PyPy, Cython 等多種性能倍增的途徑,相比之下 Ruby 想要提高性能的途徑則非常有限。
Ruby 的硬傷之二在于第三方包。Ruby 傳入英語世界并大規模流行起來的時間不長,大部分的第三方包都和 Web 相關,Web 領域外的包數量遠遠不及 Python。特別是在科研等方面的區別非常明顯,很多學科領域都有基于 Python 的成熟應用,而幾乎找不到 Ruby 的相關包。這除了歷史淵源,也和 Python 更加簡潔的語法(很多用 Python 做研究的人不是計算機專業的)以及前述的性能倍增器(主要是 Numpy 和 Scipy)有密切的關系。
討論二:
Michael wang,愛好廣泛的碼農
徐普、Xana Hopper、劉縉等人贊同 我發現一個有趣的現象,多年經驗的c++ 程序員多數都比較喜歡python ;而有多年經驗的java程序員多數都比較喜歡ruby, 2012-11-044 條評論海鷗,業余編程愛好者。
秋林、張西家、陳泓旭贊同 這兩個我都學了,談談自己的想法:Ruby拿過來,你就寫吧,每個人每個寫法,同一個問題,可以有n多寫法,無所謂孰優孰劣,達到目的就可以了。
Ruby最大的優勢就是純粹面向對象,例如對于一個string a,獲取長度,在ruby中很干脆,a.length 或者 a.size;在python中,需要len(a),對于有頑固面向對象思想人來說,python的寫法讓人受不了。
我個人也是業余愛好,使用的是windows系統,python相對來說對windows更友好,這是我自己實踐感覺出來的,django在windows下apache上的配置很簡單,ror想在windows上配置能把你折騰到死。
python的強制縮進可以讓你養成良好的編程習慣,也便于別人閱讀。同時python對于每一個問題,都有一個推薦做法,相對來說,一個人寫的程序,另外一個人可以輕易讀懂。
python有自己的哲學,python中文用戶組的“大道至簡”也是我個人比較喜歡的哲學。不要把簡單的問題復雜化,“如無必要,勿增實體”。
最后,兩者其實都是腳本語言,差不多,學會了一種,另外一種也很容易就學會了。 2011-05-232 條評論感謝分享收藏?沒有幫助?舉報
李路,http://knewone.com
王超、楊三金、王赟等人贊同 我個人的選擇是是Ruby和Lisp不要小看編程語言的能力和差異,ruby和python是完全不一樣的語言,就像python和perl,perl和php,只有實際寫過大量代碼做過設計構架的人,才知道一個更優美更適合建筑師(而非工程師)的編程語言能帶給自己什么。
討論三:
王骍,A Programmer 山海雍和、小天狼星、劉永輝 等人贊同
剛在G+上寫了篇帖子,貼一下。有些觀點和前面的觀點有所重復,請見諒。
正文如下:
本周的Pycoder's Weekly不錯,第一個Topic是:
“What are the advantages of Python over Ruby?”
這是Quora上的一個問答,網址在:
http://www.quora.com/What-are-the-advantages-of-Python-over-Ruby
Python和Ruby陣營之間似乎一直在爭論誰更好(貌似Ruby陣營的人們更狂熱些),不信可以試試google一下“Python Ruby”。上面這篇文章我目前還沒看,在看之前先說說我的個人看法:
Python優于Ruby的地方:
a) Python開發人員的背景豐富多彩,陣營規模很大,這直接導致了Python的各種lib比Ruby多很多很多很多
b) 和Ruby相反,Python的哲學是“做一件事情有且只有一種方法”(There should be one-- and preferably only one --obvious way to do it.)。Ruby的信徒會覺得這樣非常boring,但是我覺得這一點減輕了人們在開發時的認知負擔和選擇成本,對于提高開發效率是很有幫助的。同時,這個特點使得不同的人用Python寫出來的代碼不至于相差很大,這對于團隊合作也是很有用的。(這點也導致了Python中是有公認的Best Practice的,但是Ruby中就很難找到一個公認的Best Practice)
c) Python在面向對象上做的并不好,其實是把面向過程和面向對象雜糅起來了。(隨著Python 3的發展相信這點會有所改觀)我個人雖然感覺這樣不太好,但是實際用的時候就會發現,不強調面向對象其實能夠減輕程序員的認知負擔,寫起代碼來會比較隨心所欲,對于c程序員來說也更容易接受。(好吧,如果你覺得這點是Python的缺點,那么其實你也是對的~)
d) Python開始慢慢走進大學一年紀的教科書,可以預見,未來的Python開發者陣營會繼續不斷壯大。(當然Ruby的陣營也會越來越大)
e) Python解釋器,特別是CPython,目前比現有的Ruby解釋器快很多。這點Ruby的發明人Matz也是很想再重新寫個Ruby的虛擬機,但是苦于要做的事情很多,不知道什么時候能完成。Ruby的運行效率目前來看實在太慢了些。(當然程序運行效率和代碼是如何寫的也有很大關系,想讓Ruby程序盡可能快的話,除了一般的程序優化方法外,還要注意要多用built-in的東西,因為它們是用c寫的,運行快)
f) Python的語法比較簡單,容易上手。
說了這么多Python優于Ruby的地方,現在再來說說我覺得Ruby優于Python的地方:
a) 第一個印入我的腦海的優點是:有趣!當你開始慢慢學會使用Ruby后,你就會覺得Python的代碼真TM是死板的不能再死板了。這是因為Ruby從Perl中繼承的一條哲學是和Python完全相反的:“每一件事情總是有多種做法”(Having more than one way to do the same thing)。所以程序員的創造力就完全被激發出來了。當你看到某個問題的一種前所未見又十分優雅的解決方案時,你會有一種混雜著強烈喜悅的驚訝的——寫(優美的)Ruby能夠激發人的靈感。
b) Matz在設計Ruby的時候就想方設法讓Ruby成為一個“人性化”的語言,力求使Ruby程序員感覺到使用Ruby是一件愉悅的事情。你能從Mixin、程序塊、元編程、極具包容性的語法等等當中獲得一種喜悅。
c) 純粹的面向對象,極其強大的元編程功能。Ruby是純粹的面向對象。CSDN的范凱曾經說過:“你學習了Ruby以后,你就會發現,原來Java/C++所謂的面向對象就是TMD的山寨版本的面向對象,原來面向對象還可以這樣玩啊”(http://robbin.iteye.com/blog/969154)。Ruby的元編程能力還有寬松的語法使得使用Ruby可以很輕松的開發DSL(Domain Specific Language),這一點Python是搞不定的。
d) Ruby on Rails!要不是DHH開發出了RoR不知道現在還會有多少人在用Ruby。毋庸置疑,RoR是快速Web開發的神器。為什么RoR那么牛?有一個很重要的原因就是RoR將Ruby的元編程能力發揮到了極致,“甚至到了一種變態的程度”(Matz語,見《松本行弘的程序世界》http://book.douban.com/subject/6756090/ P.S.想要了解Ruby設計思想的話此書一定要讀一讀,起碼是部分章節)
e) Ruby吸收了很多語言(Lisp、Smalltalk等等)的特性,對于程序員來說了解一下Ruby對于開闊思路是很有幫助的,它能幫助你更好的看清你之前一直使用的語言的限制之處在哪。
暫時就想到這么多,應該還有很多補充的空間。我使用Python和Ruby的時間也很短,所以還是多多參考些Python和Ruby雙料大牛們的意見吧~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~待續!!!
總結
以上是生活随笔為你收集整理的Ruby. Vs . Python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程行业里面的新行话
- 下一篇: 港交所上市条件