主流腳本編程語言大比拼 優缺點一目瞭然

過去這一年的時間裏,我買了很多書,查了不少資料,能夠算是認真的學習了幾種主流的腳本語言,由於我一直想搞一個好用的自動化工具,來方便咱們的系統維護。 雖然這個願望尚未達成,可是在這個過程當中,仍是學到了不少東西。今天下午,跟同事們聊天時,說到了腳本語言,這是比較可貴的,也正好借這個契機,把個人 一些見解說一說,有不妥和錯誤的地方,請你們多指正。java

主流腳本編程語言大比拼 優缺點一目瞭然

爲何選擇腳本語言python

爲何選擇腳本語言,可能每一個人面對的實際狀況都不同。語言自己沒有好壞之分,只有合適或者不合適。所以,我所謂的選擇主要是根據應用須要來選擇,並不是根據語言的好壞或者使用者的習慣。就我本身的狀況來講,很長一段時間裏,若是須要程序來輔助完成工做時,我都會選擇Java程序員

先 簡單說說Java,Java是企業應用當之無愧的統治者。可是,近幾年隨着你們對開發語言認識的轉變,Java已經讓愈來愈多的人感到不滿,取而代之的是 腳本語言的迅速崛起。一個例子是,Java 7在最初的功能規劃時,呼聲最高的是「閉包」,而「閉包」偏偏是腳本語言最具特點的功能之一。在使用諸如Java,C之類的語言時,咱們不得不面對各類復 雜的數據類型、設計模式和大量看起來沒用但又不能缺乏的代碼。而對腳本語言來講,這些問題都是天生就不存在的。如今,開發講究敏捷,注重效率,對於一個企 業來講,開發工做首先要考慮的就是成本,敏捷開發正是下降成本最有效的手段之一,而腳本語言,又是實現敏捷開發的一條可行之路。web

有人說Java已經out了,但我並不這麼以爲,我我的認爲Java仍然是最好的跨平臺方案。如今咱們已經不能單純把Java看作一門語言,它已經成爲一個事實上的平臺。構建在Java平臺之上的優秀的Java替代產品,也已經獲得你們的普遍支持和承認,如groovy、scala等等。我相信,Java仍然有它的生命力,而它的生命力可能也要得益於腳本語言。shell

說了半天廢話,仍是要回到我選擇腳本語言的話題上。個人初衷很簡單,我要找一個非Java平臺的,C語言的替代品。爲何?第一,Java不是萬能的,好比它作不了ICMP Ping;第二,C語言學習曲線過長,C程序的部署難度較高;第三,上述的腳本語言的全部優點。數據庫

本着以上幾個原則,我學了幾個流行的腳本語言,他們是:Perl、Python、Ruby,固然後來我也學習Java平臺上的腳本語言,如Jython(Python的Java實現)、JRuby(Ruby的java實現)、Groovy。下面我想就這幾個腳本語言,來作一個簡單的比較,但願你們在選擇腳本語言時,能有更多的參考。編程

腳本語言的比較設計模式

腳本語言的比較,可能比較凌亂,但我想側重如下幾個方面:學習曲線,語言自己的特點、跨平臺的能力、國際化的能力,以及它在應用領域的份額。閉包

Unix/Linux Shell框架

首選仍是要提一提Unix/Linux Shell(包括awk、 sed),它也是腳本語言,而且多是咱們平常使用最多的。我我的感受,shell更適合作流程化的系統管理工做,而對於邏輯較爲複雜的應用級產 品,shell的開發和維護難度都至關高。帶有我的情感的說,shell的學習難度大於大多數主流腳本語言,這和它的語法特色,調試、運行環境等等都有關 系。所以,平常流程化的系統管理工做,shell仍然是一個不錯的工具,除此以外,相信你們還有更好的選擇。

Python/Jython

Python最大的魅力之一,就是簡單易學,一個新手能夠短時間內(有人說是十分鐘,我認爲幾天是徹底可能的)就寫出高質量而且實用的程序,它甚至被稱爲非計算機專業人士學習編程的最好選擇。Python的功能強大,標準庫的豐富程度,估計連Java也可望不可即。Python適合作系統管理,但這並非說它不能作大型應用程序。Python應用的成功案例,已經數不勝數,尤爲是在科學計算領域更是獨樹一幟。Python是一門優秀的面嚮對象語言,但更多的Python程序員,喜歡Python面向過程的部分。我我的感受,Python的OO不如Ruby,由於不夠完全,但這也正是Python支持者更愛它的地方。

惋惜的是,Python在企業應用領域沒能有更大的突破,近幾年更有被後起之秀Rails(Ruby的WEB框 架)拋在身後的意思。但這並不說明Python在企業應用方面不成熟(豆瓣網是離咱們最近的Python案例),若是有興趣,你們能夠了解Python社 區最具人氣的WEB框架Django,也能夠去看看簡單到讓人難以置信的WEB框架webpy。Python在短短几年內就成爲六大主流開發語言之一,絕 對不是蓋的!

Jython是Python的Java實現,它是IBM WebSphere服 務器官方指定的管理語言。我選擇jython是看重了jdbc訪問數據庫的便捷。但惋惜的是,jython對中文支持很是很差,多是python自己的 複雜度較高,jython團隊的活躍度也比較低,總之Jython要走的路還很漫長,至少我認爲當前版本,還不具有投入生產開發的能力。

Ruby/JRuby

Ruby 是腳本語言的後起之秀,它的成功要得益於殺手級框架Rails,Rails社區早就喊出了幹掉Java的口號,雖然這種口號沒有什麼實際意義,但 Rails的確已經成爲眼下最爲煊赫一時的企業應用框架。我我的花了幾個月的時間學習Rails,雖然沒有實際的開發經驗,但Rails敏捷開發上的突出 表現,的確是當仁不讓的,這也是它能迅速竄紅的主要緣由吧。

拋開Rails框架,仍是來講Ruby。Ruby的語言特點是純面向對象,語法 以魔幻著稱(它吸取了Perl、Python等腳本語言的大量優秀元素)。所以它的學習曲線要高於Python,可是學成之後可能會寫出很是優雅的代碼。 美中不足是Ruby還年輕,它的標準庫還不夠豐富,成熟的第三方庫也相對較少,但這些狀況會隨着時間的推動逐漸改變。

Ruby徹底能夠勝任系統管理的須要,固然,若是開發WEB程序,Rails更是不二的選擇。

JRuby 是Ruby的Java實現,也是最先被Sun官方接收的Java平臺腳本語言(後來還有Jython)。JRuby與Ruby的兼容性很是高,團隊也很是 活躍。若是想在Java平臺上使用腳本語言,除了Java原生的Groovy,我推薦JRuby,這也是個人選擇。

Perl

提 到Perl可能不少人會想到CGI,我我的可能更多的會聯想到文本處理,事實上,Perl設計之初的主要用途的確是在文本中提取信息。Perl像 Python同樣,是目前最久經考驗,且成熟度最高的腳本語言之一,它有着大量的用戶羣和忠實的粉絲,所以我說Perl的壞話就比較心虛一點:)

坦 白的說,我不太喜歡Perl,可能像大多數不喜歡Perl的人同樣,Perl語法讓人不太習慣,有人說Perl的語法醜陋,可能有些誇張,但這能說明一些 問題。Perl社區至少也應該認可一點:Perl是一門比較難上手的語言。這並非說,你短時間內掌握不了Perl,而是你短時間內寫不出真正像樣的東西。另 外,Perl不是面嚮對象語言,固然,不少人並不看重這一點,但這並非什麼優勢。

Perl適合作系統管理,我以爲它跟shell很像。在其餘應用領域,尤爲是internet方面,

Perl都有不俗的表現。Perl很是優秀,仍是那句話,語言沒有好壞,只有合適不合適。

Groovy

如 果你正在爲「熱愛Java平臺」和「厭惡Java語法」的事情糾結,Groovy可能就是最好的選擇。Groovy能夠說是Java平臺的原生腳本語言, 與Java完美結合,它自己不提供標準庫,徹底使用Java的API庫。在Rails成功以後,Groovy社區也出現了Grails框架,用來抗衡 Rails。Groovy自己也吸取了Ruby大量的經典語法,熱愛Java的人,能夠選擇Groovy。

腳本語言的缺點和將來

目前你們公認的,腳本語言的主要缺陷仍是性能問題,固然這可能取決於不少因素,問題是有多少狀況下,性能問題纔是致命的。從EJB的崩潰,Spring的興起到Java遭受質疑,Rails取得成功,都說明,你們在面對不一樣規模的應用時,已經很是理智了。我相信可以真正服務於咱們的技術,纔能有好的前景,腳本語言的明天是無限光明的!

相關文章
相關標籤/搜索