python、ruby、perl技術特點各有什麼不同?

本人是國內計算機碩士剛畢業,所以是JAVA出身,對Python有粗淺的了解(掌握都不能算),而ruby、perl這樣的腳本語言更是從未使用過。現在想利用工作之餘,自學一些新技術,但是從事編程的朋友都知道:每一種語言的特點是不同的,特別是腳本語言有比較強的應用性,魯棒性在不同功能里有強弱,所以借這個題,請知乎上的大神不吝分享自己的經驗,給我這樣的初學者一些指點。謝謝!


蟹妖~

Perl內置的對象設施極端簡陋,實際上只是把對象引用綁定到名字空間。因此也極端靈活。不過正常人大都用Moose。

感覺Perl的模塊質量不如Python高,特別是圖表繪製和科學計算。

Perl有map、grep等類似於函數式編程的設施,它是lazy eval的。List::Util引入了更多的類似設施,比如reduce。

現在用Python的比用Perl多。

Ruby不太了解。


三個語言各有特色:Python簡潔清爽,Perl充斥著各種黑魔法,Ruby則有機的結合了這兩者,並發展出了自己的特色

Python除了最開始可能不太適應的縮進語法之外,其他的都設計的中規中矩。勉強算是支持函數式風格,但是匿名函數限制有點多,寫起來難受。

雖然沒有統一的包管理工具,不過還好甭管哪個都能正常用。

Perl最明顯的就是sigil和各種慣用法了。如果你不小心的話可能就會被一些默認約定給坑了。另外值得一說的是Perl強行區分了值和引用的,這一點雖然增加了語言複雜度和學習難度,但多少也避免了「手動boxing」問題。

還有,對於Perl來說,CPAN簡直就是一個發掘不完的寶藏。

Ruby很屌的一個是各種神奇的介面,另一個就是對象模型。前者比如Enumerable模塊,影響了從prototype.js到underscore等庫的設計;比如標準庫自帶的un,可以把某些庫當作程序來用。後者的影響更是深,甚至造就了RoR這種大殺器,為此還有人專門出了一本書來講解Ruby元編程技術。

另外,緊湊的語法和block,讓Ruby可以很輕鬆地實現各種DSL來方便程序開發。

就是這樣。

==========================

沒太詳細看題目就回答了,請見諒。

魯棒性

桌面級應用更推薦Python,因為PyQt跟PyGtk也算是經過實踐檢驗的框架了。

Web服務,在Ruby和Python中二選一,看口味吧。

系統管理,鑒於三者都有堅實的後盾做支持,Perl/Ruby/Python三選一,看口味吧。

只是學來增長見識Ruby和Perl二選一。

用來學習設計思想和更高層面的東西,就選Ruby吧。

如果跟上面的需求都不合,就選Perl吧。

以上。


Perl 在文本處理方面很強,因為它內置的正則表達式,用起來非常方便,且功能強大。加上無所不能的CPAN(請上http://metacpan.org 而不是http://www.cpan.com),基本上大部分你想要的都已經有做好的模塊給你用了。還有一點是上面沒有提到的,我認為Perl的模塊名字空間的設計是非常優秀的,一個模塊通過它的名字就可以大概知道它是做什麼的,模塊名字首字母大寫是普通模塊,小寫是特殊作用的pragma. 在搜索模塊的時候看的也非常明白 。 面向對象來說,原生的方法簡陋但很直接,在此基礎上生出的Moose, Moo, Mo 這些面向對象模塊使Perl的OO 非常強大。以及Inline 這種可以讓你直接在Perl裡面寫C或者Python等其他語言的代碼,總之Perl給我的感覺它是能幹活的語言,靈活,好玩,社區友好

但Perl在GUI圖形界面上並不是很強,如果你想做桌面應用,還是推薦Python 的PyQt, 其次 Python的 numpy, matplotlib等數學庫也發展的非常好,在這塊上要強過Perl。

Ruby不太清楚


三個語言裡面,Perl 最古老,其它兩個語言特別是Ruby 設計之初借鑒了Perl 的很多特點。

Python 給我的印象是 對於寫小的程序比較適合,注意模塊化,不要一個文件放太多的內容。

python的語法整潔,相關的庫應該也非常豐富,因為前幾年,Python很受歡迎,google的使用和推薦、國內的Python粉非常多。但是,Python給我的一個不好印象是,如果別人的代碼寫的很爛,而你要維護,那麼回很痛苦,比如你不小心改動了一個空格,導致對齊出問題,各種奇怪的錯誤就會拋出,所以我覺得,如果你是編程熟手,懂得軟體設計的一些技巧,那麼使用python 沒有問題。

Perl 語言發明於1987年,作者是Larry wall,一個語言學家兼SA、Perl 最初發明用來處理文本數據,所以它內置了正則表達式,而且Perl正則表達式的強大是其他語言無法比擬的(PCRE),絕大多數語言對正則的支持是在語言之外的lib中完成的,而perl則內置,而且搞笑,所以鼓勵你用正則。對於這門古老的語言,其生態系統自然已經非常的完整和豐富,在CPAN 模塊倉庫中,可以找到幾乎任何問題的解決方案,所以不用愁沒有模塊來完成工作。此外,Perl 的優點之一是,語法靈活,主張靈活性,而非Python的主張最優解決方案而帶來的規矩性,所以,你看到的Perl代碼是非常精簡的,簡練,快速地實現你的功能需求,從來不用擔心語言的語法規則阻擋了你的思維表達。perl 支持高階函數(high order perl 專門的一本書)內置了map、filter 等許多函數式編程風格的函數,使得你寫函數式的程序設計不是問題。Perl 的OO模塊也已經成熟,Moose等Modern perl風格的Perl使得OO 編程非常容易。Perl社區有很多大牛,比如libev的設計者等。最後放上一句話:「There is more than oneway to doing something」 這句名言,Perl 解放你的思維,從Perl社區你更能獲得這種氛圍的影響,讓思維更靈活。

Ruby 接觸不多。其語法同樣精簡,代碼量少,比Python更值得選擇。

建議你使用Perl。


三個都用過, 但是用的程度不一樣

perl 用的最多, 也最方便,但是現在市場上, 新公司新產品基本已經不用這個了, 一般都是些大公司老系統在用這個。特別靈活, 想怎麼用都行。 模塊和文檔比較齊全, 但是有時候模塊在不同的平台下兼容性問題挺多, 需要自己去調整。 perl最方便的是字元串處理了, 天生支持正則表達式。另外和unix系操作系統很親和。 至於面向對象方面, 確實差的比較多,上面說的Moose沒接觸過, 我一般都是直接bless,或者盡量避免面向對象。 當然我喜歡perl主要是因為perler的三大特性: 懶惰,傲慢以及急躁。聽起來是不是很風騷?總結一下, 學perl比較有逼格。

python 主要是用來玩的, 做題什麼的。 功能全面。 當然現在python在工作市場上也很火,主要是有幾個比較成功的公司吧。 然後什麼匿名函數, reduce函數等用起來也很有意思, 方便。 現在python的大中小牛也很多,我這個渣就不多評價了, 總之, 學python比較有樂趣。

ruby主要是用框架,語言特性不太熟。 只知道他的動態性特彆強。 Rails框架確實很強大, 感覺比Django好用。基本上是編程小白都能上手的框架了。 Ruby的學習曲線據說是入門易,精通難。 當然我只有一隻腳入門,所以不知道水有多深。 RoR是快速開發Web項目最佳的選擇。 但是國內用Ruby開發的比較成功的網站比較少,我知道的就是javaeye, tuan800吧,畢竟大型網站架構不是一個框架就能搞定的。 所以我也不知道學ruby有什麼。 或許如果你有很多網站原型需要開發, 可以學一學?


ruby元編程,用了你會愛上它


根據需求,選擇最方便的一個。有底子不怕學不會。


推薦閱讀:

數據科學入門篇3:數據處理利器Pandas使用手冊
一個編外

TAG:編程語言 | Ruby | Python | 編程 | Perl |