ruby和python該學那一個?


都學


這是今年的一個演講,演講者強調了ruby的創造性,也就是更靈活。

python學習難度小一些,不過如果有老師的話,ruby也不難,自學要難一些。

ruby的語法多,不過常用的也不多,我覺得會有一些學習困擾,因為初學者不知道重點在哪裡。

不妨花一周時間兩個都學三天,畢竟這個口味只有自己知道吧。


可以都去學習一下,然後自己決定側重學哪個。

你在這問沒啥用, Rubyist當然是推薦你學Ruby了, Pythoner也當然是推薦你學Python了, 問了和沒問題有啥區別。


先說觀點:你自己要先想明白學這些script語言的目標是什麼,目標不同答案也不同。

講一下我個人的感受(perl ruby python)經歷,供你參考:

0.) 在學校時,對 perl ruby python 都走馬觀花的了解了一下,初步印象是

perl 就是一堆雜草,印象像個建築工地上的村姑(沒歧視含義,只談形象)

python 印象就是個呆板凝滯的工科眼鏡女

ruby感覺就像一個才貌雙全校花和熱情似火的hot girl的結合體

1.)畢業第一份工作主要做backend的相關工作,主要是C++ 也用一些Java。

自己為了把一些手動工作進行自動化,寫了一些腳本,開始是bash,

  後來發bash稍微複雜點超級坑爹,為此還玩過bashdb,後來實在受不了

決定換個腳本,基於 0 提到的印象,決定以ruby作為script的首選,工作中邊學邊用,

ruby用下來感覺是非常high。

2.)後來參與了一個產品線的整合,跨部門合作,涉及多個BU,接觸各種Unix/Linux環境。

很多時候這些環境都是既有產品的標準,是不准許去安裝其他軟體的。

多數都沒有安裝ruby,shell也都是不同的,python有的有有的沒有。

但是但是,perl每個機子上都有!!甚至以硬體為主的BU使用的嵌入式Linux中也帶了perl。

為了方便做一些輔助工作,無奈只能學了一陣子perl。

當時的目標就是:當一個更好的shell script用。

說到這裡推薦一本書:Manning: Minimal Perl 非常好

有時候直接在shell用管道吧command結合perl結合在一塊形成一個命令行串的效果非常好。

如果是把perl當一個更好的shell script用,寫那種30~50行臨時腳本的話,perl真的非常不錯。

3.)隨著工作的調整,以及自己接觸範圍的不斷擴大,發現非常的開源程序主要支持的腳本

都是python:vim,gdb,protocol buffer, opencv,rabbitmq(印象中rabbitmq 源代碼編譯過程中先用python生產erlang的介面文件),連C++最執著的boost社區提供的腳本介面也是python的。總之,python被大多數軟體作為支持script時的首選。逐漸切身的感覺python是script的最主流的廣泛選擇。

4. 一直做後端開發,想玩玩web,接觸了php,rails一路下來發現都不喜歡,感覺flask最對口味。

後來使用ipython後,感覺python真方便。但是仍然對ruby有一些念念不忘。然而,當我接觸到數據處理以後,接觸到 numpy,scipy,scikit-learn,scikit-image,ipython-notebook ,cython等等這些工具以後,我感覺徹底放下ruby了。如果涉及數據處理的話,以目前python在數據處理方面的優勢造成的馬太效應,ruby恐怕很難有機會追趕python了。以後會把python作為主要腳本語言,準備仔細學學。

以上是大概整個折騰過程。回到問題本身,你自己要先想明白目標是什麼。

如果就是當幾十行的小腳本處理臨時輔助任務用用,平時也和命令行結合直接在shell中敲,那麼perl也不錯,ruby好像也可以. 搜一下one line perl 或者 one line ruby。

如果是要寫一定腳本處理任務,而且這個腳本不是臨時性的,環境也能控制,喜歡很酷的coding感覺,喜歡玩玩元編程之類的那麼肯定選擇ruby。

除此以外就選擇python吧,python就是汪洋大海 :)


運維or做gui就python

web開發就ruby


python做一件事情,可能只有一兩條路且大多數人寫出來的代碼都差不多。

ruby做一件事情,完全取決於你的腦洞大小。

--------

ruby在語法設計上規避了python很多不能說失敗但是很不爽的設計。

比如python是靠縮進來安排代碼塊的,在嵌套 if 的複雜語句下很容易搞出bug。還有類屬性是無法完全對外隱藏的,容易引發安全性問題,可能造成別人不小心修改你了屬性導致BUG,你還花了半天檢查自己的代碼,這事我碰到了好幾次。

再就是ruby代碼可以寫的很裝B,很有一種極客感神秘感,雖然這事不一定在任何情況下都是好事。


Ruby照理來講應該更讓程序員享受工作。

但就我個人二把刀的經歷而言,這兩種語言用起來差不多。

扔硬幣吧。


哪個給你的第一印象好就學哪個,兩種語言的差異沒你想像的那麼大。


你在糾結用什麼語言是因為你一個都不愛。放棄吧。用clojure!


個人認為,Ruby在web開放方面很強大,可以用Rails框架快速上手,後期還可以用JRuby撐得起性能。Python在我先前的工作中只起到了輔助工具的作用,不過現在我也可以用Ruby來做一些輔助的事情,

另外,Ruby是純面向對象的,其中也包含了FP的一些重要元素,以及大量令人眼前一亮的語法糖。利用這些特性,Ruby能幫助你更專註的解決實際問題,而不再去糾結語言細節。

最後,我選擇Ruby,一方面出於愛好,另一方面是工作需要。你可以抽空感受一下兩種語言,然後再做決定。


為了自己寫的爽: ruby

為了好找工作: python

有代碼潔癖: ruby

有反日癖: python


ruby創造性更強,也就是更靈活。

python學習難度小一些,不過如果有老師的話,ruby也不難,自學要難一些。

如果周圍沒有熟人大牛,可以到培訓機構去學習ruby,

作為ruby工程師,我依然推薦學ruby,這是一個非常有創造性,非常自由的編程語言,寫起來更自在更開心一些,且更裝B。


看你幹什麼了,如果只是為了寫一些小工具,那python就挺好,語法少一些,簡潔易懂,不用學太多東西,就能開搞了

話說ruby語法太魔幻了,要是喜歡這些特性的人會很推崇,我反正是懶得學,我有選擇強迫證,要是實現一個東西有兩個方法,我指定會去搜哪個方法好


簡單幾句話概括,ruby語言可以最直接反應程序員的能力,而Python不行

Python寫出來的大同小異,很多人會不尊重Python之禪去寫嵌套而難讀的代碼,但是py絕對不會限制使用者的思維,想寫什麼就可以寫出來。ruby中,不光可讀性高,代碼的信息量大的恐怖,還擁有性能外最強大的庫。ruby代碼是程序員的腦洞堆砌的。rails框架的信息量是大部分程序完全無法比擬的。當熟悉精通元編程的時候,ruby的強大完全是py望塵莫及的。(說白了我是ruby廚。但這段話比較客觀

學py圖方便,學rb圖能力。看看你喜歡哪一類


人生苦短,我用Python。


python 玩了一年多寫了各種爬蟲flask 是時候玩玩ruby了 啊哈哈哈


最好都學。必須要選的話。選ruby


都可以,兩者在做web開發方面都有很多成熟的框架。不過個人建議,可以去看看Ruby的Rails框架。Rails是很多web端開發精髓思想的集大成者。雖然現在別的語言也都有了類似於Rails的框架,但是我覺得作為先驅者和引導者,Rails是有很大的學習意義的。


我認為兩個都可以學。

這兩種語言都不乏優秀的項目; 使用的場景也差不多。通常是可以互換的。他們之間的差別是編程語言「品味」之間的差別,都學了才好體驗。

學習順序看具體情況。

如果很在意學習速度的話就先學Python。因為上手容易。

如何有的是時間就可以直接學習 Ruby。它有更高級的語言特徵,所以會難一點。


看工作需求


python


推薦閱讀:

python中的協程(yield)內部是怎麼實現的?python和lua在yield的實現原理上有什麼區別?
如何向不懂 Python 的人介紹 Python?
Mac下搞 Python 開發用什麼 IDE?

TAG:編程語言 | Ruby | Python |