Ruby、Perl、Python、Lua等語言相互之間都有哪些異同點?
現下的編程語言可以說是已經有幾百種了,不管編譯型語言(典型如C類語言)還是解釋性語言(典型如Python類語言)等,對於入門者來說都有一個繞不過去的坎兒:我該學哪一種好呢?
這個問題把利益關係去掉(也就是說不考慮所謂『學哪一種語言好賺錢』),只考慮它對學習者的意義的話,那就可以解釋成——這些語言自身都有什麼典型特點(它的出現是為了解決當時的時代背景下傳統語言暴露的什麼問題)?相互之間都有什麼相同和不同點?各自適合用來做什麼?分別不適合用來做什麼?鑒於@Scrat bai (奇怪問題里竟然不能@人)提到Go是編譯型語言和其他不同,那我不妨再分一下類:
1. Ruby、Perl、Python、Lua、Javascript等腳本語言。2. C/C++、C#、Go等編譯型語言。3. PHP等網頁語言(雖然嚴格說來PHP也可以用來寫桌面應用)就不用說了。4. Scala、Haskell、Lisp、Clojure、R等這些有在用的大牛也可以說一說......
按說可能很少有人能對所有語言都精通,那麼各位不妨主要談下自己最擅長的語言的特點以及你所認為的它相對其他語言的異同點。
如果像問題描述里說的那樣「把利益關係去掉」:
Perl 是可讀性最差的語言。但是語言本身也有一些優點。
Python 是這裡最差的語言。可以說 Python 的流行基於三點:第一是語言本身設計的還算 acceptable(但相對其它三種是最差的),第二是可讀性比 Perl 好,第三是出現的早並且迎合了當時急需的要求(有自動內存管理,無需編譯,處理字元串能力強)。
Ruby 可以看成是大幅借鑒了 Perl 的語言特性,也借鑒了 Scheme 的一些特性。可讀性也不錯。遺憾的是 VM 實現的性能比較差。
Lua 是這四種里最棒的語言。小缺點是語法比較 verbose。除此之外語言能力和 VM 實現都非常不錯。不過推崇 minimalist,do-it-yourself。標準庫不大。這也不算什麼缺點,只要你對自己的應用領域有所把握。如果沒有急需要完成的任務,Lua 是最適合學習的。我個人偏好設計哲學簡單明了,適用性廣的語言,所以c/go/python我都比較喜歡,c++/java都不是很感冒。但是出於工作需要,我能熟練地使用它們任何一種編寫大多數應用(全部精通倒不敢說,還沒到考不到的地步)。語言本身的特性是否健全對我來說不是最重要,能否持續高效的產出低bug少坑的工程代碼才是我考慮的最多的因素。
對個人來說,程序語言只分用起來爽和用起來不爽的兩種;對團隊合作來說,任何除了標準之外還需要強制定義一堆編程規範的語言都是蹩腳的,比如c++。不認為編程語言要追求健全、完美。
尤其是新近出現併流行的語言,好多是專門為某一工作開發的。對於這類語言,找到它們的用武之地就行了。
像python,本身並不突出,但做大數據分析時是相當方便的,個人認為這就夠了。@馮東,思考角度可能不太一樣。
精通一兩種主流語言之後,用別的語言都不是挑戰了。與其比較這些語言,還不如先去精通,
精通,不同於會用、了解、知道。沒有哪個好哪個壞,都有很多人用,就是個工具而已,主要是看怎麼用,在什麼場景用。你要入門就學C,全世界的大學不都是這麼乾的么。順道說一嘴,樓上說這個好那個棒的,和windows/linux互噴有什麼區別。
推薦閱讀: