最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

編程界主流腳本編程語(yǔ)言的比較和選擇

 更新時(shí)間:2015年05月07日 12:47:44   投稿:junjie  
這篇文章主要介紹了編程界主流腳本編程語(yǔ)言的比較和選擇,本文分析了Unix/Linux Shell、Python/Jython、Ruby/JRuby、Perl、Groovy等腳本語(yǔ)言的優(yōu)缺點(diǎn),幫助您快速了解各大語(yǔ)言,需要的朋友可以參考下

 過(guò)去這一年的時(shí)間里,我買(mǎi)了不少書(shū),查了很多資料,可以算是認(rèn)真的學(xué)習(xí)了幾種主流的腳本語(yǔ)言,因?yàn)槲乙恢毕敫阋粋€(gè)好用的自動(dòng)化工具,來(lái)方便我們的系統(tǒng)維護(hù)。雖然這個(gè)愿望還沒(méi)有達(dá)成,但是在這個(gè)過(guò)程中,還是學(xué)到了很多東西。今天下午,跟同事們聊天時(shí),說(shuō)到了腳本語(yǔ)言,這是比較難得的,也正好借這個(gè)契機(jī),把我的一些看法說(shuō)一說(shuō),有不妥和錯(cuò)誤的地方,請(qǐng)大家多指正。

為什么選擇腳本語(yǔ)言

       為什么選擇腳本語(yǔ)言,可能每個(gè)人面對(duì)的實(shí)際情況都不一樣。語(yǔ)言本身沒(méi)有好壞之分,只有合適或者不合適。因此,我所謂的選擇主要是根據(jù)應(yīng)用需要來(lái)選擇,并非根據(jù)語(yǔ)言的好壞或者使用者的習(xí)慣。就我自己的情況來(lái)說(shuō),很長(zhǎng)一段時(shí)間里,如果需要程序來(lái)輔助完成工作時(shí),我都會(huì)選擇Java。

       先簡(jiǎn)單說(shuō)說(shuō)Java,Java是企業(yè)應(yīng)用當(dāng)之無(wú)愧的統(tǒng)治者。但是,近幾年隨著大家對(duì)開(kāi)發(fā)語(yǔ)言認(rèn)識(shí)的轉(zhuǎn)變,Java已經(jīng)讓越來(lái)越多的人感到不滿,取而代之的是腳本語(yǔ)言的迅速崛起。一個(gè)例子是,Java 7在最初的功能規(guī)劃時(shí),呼聲最高的是“閉包”,而“閉包”恰恰是腳本語(yǔ)言最具特色的功能之一。在使用諸如Java,C之類(lèi)的語(yǔ)言時(shí),我們不得不面對(duì)各種復(fù)雜的數(shù)據(jù)類(lèi)型、設(shè)計(jì)模式和大量看起來(lái)沒(méi)用但又不能缺少的代碼。而對(duì)腳本語(yǔ)言來(lái)說(shuō),這些問(wèn)題都是天生就不存在的?,F(xiàn)在,開(kāi)發(fā)講究敏捷,注重效率,對(duì)于一個(gè)企業(yè)來(lái)說(shuō),開(kāi)發(fā)工作首先要考慮的就是成本,敏捷開(kāi)發(fā)正是降低成本最有效的手段之一,而腳本語(yǔ)言,又是實(shí)現(xiàn)敏捷開(kāi)發(fā)的一條可行之路。

       有人說(shuō)Java已經(jīng)out了,但我并不這么覺(jué)得,我個(gè)人認(rèn)為Java仍然是最好的跨平臺(tái)方案?,F(xiàn)在我們已經(jīng)不能單純把Java看做一門(mén)語(yǔ)言,它已經(jīng)成為一個(gè)事實(shí)上的平臺(tái)。構(gòu)建在Java平臺(tái)之上的優(yōu)秀的Java替代產(chǎn)品,也已經(jīng)得到大家的廣泛支持和認(rèn)可,如groovy、scala等等。我相信,Java仍然有它的生命力,而它的生命力可能也要得益于腳本語(yǔ)言。

       說(shuō)了半天廢話,還是要回到我選擇腳本語(yǔ)言的話題上。我的初衷很簡(jiǎn)單,我要找一個(gè)非Java平臺(tái)的,C語(yǔ)言的替代品。為什么?第一,Java不是萬(wàn)能的,比如它做不了ICMP Ping;第二,C語(yǔ)言學(xué)習(xí)曲線過(guò)長(zhǎng),C程序的部署難度較高;第三,上述的腳本語(yǔ)言的所有優(yōu)勢(shì)。

       本著以上幾個(gè)原則,我學(xué)了幾個(gè)流行的腳本語(yǔ)言,他們是:Perl、Python、Ruby,當(dāng)然后來(lái)我也學(xué)習(xí)Java平臺(tái)上的腳本語(yǔ)言,如Jython(Python的Java實(shí)現(xiàn))、JRuby(Ruby的java實(shí)現(xiàn))、Groovy。下面我想就這幾個(gè)腳本語(yǔ)言,來(lái)做一個(gè)簡(jiǎn)單的比較,希望大家在選擇腳本語(yǔ)言時(shí),能有更多的參考。

腳本語(yǔ)言的比較

腳本語(yǔ)言的比較,可能比較凌亂,但我想側(cè)重以下幾個(gè)方面:學(xué)習(xí)曲線,語(yǔ)言本身的特色、跨平臺(tái)的能力、國(guó)際化的能力,以及它在應(yīng)用領(lǐng)域的份額。

Unix/Linux Shell

        首選還是要提一提Unix/Linux Shell(包括awk、sed),它也是腳本語(yǔ)言,并且可能是我們?nèi)粘J褂米疃嗟?。我個(gè)人感覺(jué),shell更適合做流程化的系統(tǒng)管理工作,而對(duì)于邏輯較為復(fù)雜的應(yīng)用級(jí)產(chǎn)品,shell的開(kāi)發(fā)和維護(hù)難度都相當(dāng)高。帶有個(gè)人情感的說(shuō),shell的學(xué)習(xí)難度大于大多數(shù)主流腳本語(yǔ)言,這和它的語(yǔ)法特點(diǎn),調(diào)試、運(yùn)行環(huán)境等等都有關(guān)系。因此,日常流程化的系統(tǒng)管理工作,shell仍然是一個(gè)不錯(cuò)的工具,除此之外,相信大家還有更好的選擇。

Python/Jython

       Python最大的魅力之一,就是簡(jiǎn)單易學(xué),一個(gè)新手可以短期內(nèi)(有人說(shuō)是十分鐘,我認(rèn)為幾天是完全可能的)就寫(xiě)出高質(zhì)量并且實(shí)用的程序,它甚至被稱(chēng)為非計(jì)算機(jī)專(zhuān)業(yè)人士學(xué)習(xí)編程的最好選擇。Python的功能強(qiáng)大,標(biāo)準(zhǔn)庫(kù)的豐富程度,估計(jì)連Java也望塵莫及。Python適合做系統(tǒng)管理,但這并不是說(shuō)它不能做大型應(yīng)用程序。Python應(yīng)用的成功案例,已經(jīng)數(shù)不勝數(shù),尤其是在科學(xué)計(jì)算領(lǐng)域更是獨(dú)樹(shù)一幟。Python是一門(mén)優(yōu)秀的面向?qū)ο笳Z(yǔ)言,但更多的Python程序員,喜歡Python面向過(guò)程的部分。我個(gè)人感覺(jué),Python的OO不如Ruby,因?yàn)椴粔驈氐?,但這也正是Python支持者更愛(ài)它的地方。

        可惜的是,Python在企業(yè)應(yīng)用領(lǐng)域沒(méi)能有更大的突破,近幾年更有被后起之秀Rails(Ruby的WEB框架)拋在身后的意思。但這并不說(shuō)明Python在企業(yè)應(yīng)用方面不成熟(豆瓣網(wǎng)是離我們最近的Python案例),如果有興趣,大家可以了解Python社區(qū)最具人氣的WEB框架Django,也可以去看看簡(jiǎn)單到讓人難以置信的WEB框架webpy。Python在短短幾年內(nèi)就成為六大主流開(kāi)發(fā)語(yǔ)言之一,絕對(duì)不是蓋的!

       Jython是Python的Java實(shí)現(xiàn),它是IBM WebSphere服務(wù)器官方指定的管理語(yǔ)言。我選擇jython是看重了jdbc訪問(wèn)數(shù)據(jù)庫(kù)的便捷。但可惜的是,jython對(duì)中文支持非常不好,可能是python本身的復(fù)雜度較高,jython團(tuán)隊(duì)的活躍度也比較低,總之Jython要走的路還很漫長(zhǎng),至少我認(rèn)為當(dāng)前版本,還不具備投入生產(chǎn)開(kāi)發(fā)的能力。

Ruby/JRuby

       Ruby是腳本語(yǔ)言的后起之秀,它的成功要得益于殺手級(jí)框架Rails,Rails社區(qū)早就喊出了干掉Java的口號(hào),雖然這種口號(hào)沒(méi)有什么實(shí)際意義,但Rails的確已經(jīng)成為眼下最為炙手可熱的企業(yè)應(yīng)用框架。我個(gè)人花了幾個(gè)月的時(shí)間學(xué)習(xí)Rails,雖然沒(méi)有實(shí)際的開(kāi)發(fā)經(jīng)驗(yàn),但Rails敏捷開(kāi)發(fā)上的突出表現(xiàn),的確是當(dāng)仁不讓的,這也是它能迅速竄紅的主要原因吧。

       拋開(kāi)Rails框架,還是來(lái)說(shuō)Ruby。Ruby的語(yǔ)言特色是純面向?qū)ο?,語(yǔ)法以魔幻著稱(chēng)(它吸收了Perl、Python等腳本語(yǔ)言的大量?jī)?yōu)秀元素)。因此它的學(xué)習(xí)曲線要高于Python,但是學(xué)成以后可能會(huì)寫(xiě)出非常優(yōu)雅的代碼。美中不足是Ruby還年輕,它的標(biāo)準(zhǔn)庫(kù)還不夠豐富,成熟的第三方庫(kù)也相對(duì)較少,但這些情況會(huì)隨著時(shí)間的推進(jìn)逐漸改變。

       Ruby完全可以勝任系統(tǒng)管理的需要,當(dāng)然,如果開(kāi)發(fā)WEB程序,Rails更是不二的選擇。

       JRuby是Ruby的Java實(shí)現(xiàn),也是最早被Sun官方接收的Java平臺(tái)腳本語(yǔ)言(后來(lái)還有Jython)。JRuby與Ruby的兼容性非常高,團(tuán)隊(duì)也非常活躍。如果想在Java平臺(tái)上使用腳本語(yǔ)言,除了Java原生的Groovy,我推薦JRuby,這也是我的選擇。

Perl
       提到Perl可能很多人會(huì)想到CGI,我個(gè)人可能更多的會(huì)聯(lián)想到文本處理,事實(shí)上,Perl設(shè)計(jì)之初的主要用途的確是在文本中提取信息。Perl像Python一樣,是目前最久經(jīng)考驗(yàn),且成熟度最高的腳本語(yǔ)言之一,它有著大量的用戶(hù)群和忠實(shí)的粉絲,因此我說(shuō)Perl的壞話就比較心虛一點(diǎn):)

       坦白的說(shuō),我不太喜歡Perl,可能像大多數(shù)不喜歡Perl的人一樣,Perl語(yǔ)法讓人不太習(xí)慣,有人說(shuō)Perl的語(yǔ)法丑陋,可能有些夸張,但這能說(shuō)明一些問(wèn)題。Perl社區(qū)至少也應(yīng)該承認(rèn)一點(diǎn):Perl是一門(mén)比較難上手的語(yǔ)言。這并不是說(shuō),你短期內(nèi)掌握不了Perl,而是你短期內(nèi)寫(xiě)不出真正像樣的東西。另外,Perl不是面向?qū)ο笳Z(yǔ)言,當(dāng)然,很多人并不看重這一點(diǎn),但這并不是什么優(yōu)點(diǎn)。

       Perl適合做系統(tǒng)管理,我覺(jué)得它跟shell很像。在其他應(yīng)用領(lǐng)域,尤其是internet方面,

       Perl都有不俗的表現(xiàn)。Perl非常優(yōu)秀,還是那句話,語(yǔ)言沒(méi)有好壞,只有合適不合適。

Groovy

       如果你正在為“熱愛(ài)Java平臺(tái)”和“厭惡Java語(yǔ)法”的事情糾結(jié),Groovy可能就是最好的選擇。Groovy可以說(shuō)是Java平臺(tái)的原生腳本語(yǔ)言,與Java完美結(jié)合,它本身不提供標(biāo)準(zhǔn)庫(kù),完全使用Java的API庫(kù)。在Rails成功之后,Groovy社區(qū)也出現(xiàn)了Grails框架,用來(lái)抗衡Rails。Groovy本身也吸收了Ruby大量的經(jīng)典語(yǔ)法,熱愛(ài)Java的人,可以選擇Groovy。

腳本語(yǔ)言的缺點(diǎn)和未來(lái)

      目前大家公認(rèn)的,腳本語(yǔ)言的主要缺陷還是性能問(wèn)題,當(dāng)然這可能取決于很多因素,問(wèn)題是有多少情況下,性能問(wèn)題才是致命的。從EJB的崩潰,Spring的興起到Java遭受質(zhì)疑,Rails取得成功,都說(shuō)明,大家在面對(duì)不同規(guī)模的應(yīng)用時(shí),已經(jīng)非常理智了。我相信能夠真正服務(wù)于我們的技術(shù),才能有好的前景,腳本語(yǔ)言的明天是無(wú)限光明的!

相關(guān)文章

  • 玩客云折騰記錄之編譯?ArmBian?系統(tǒng)

    玩客云折騰記錄之編譯?ArmBian?系統(tǒng)

    本文將介紹如何從零到一編譯?Armbian?系統(tǒng),適配這臺(tái)設(shè)備的代碼來(lái)源,并對(duì)玩客云小設(shè)備進(jìn)行刷機(jī)。為之后的折騰做一個(gè)前置準(zhǔn)備
    2022-02-02
  • 解決Jrebel用戶(hù)名中文導(dǎo)致用不了的問(wèn)題

    解決Jrebel用戶(hù)名中文導(dǎo)致用不了的問(wèn)題

    這篇文章主要介紹了解決Jrebel用戶(hù)名中文導(dǎo)致用不了的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-10-10
  • vscode中l(wèi)aunch.json和task.json配置教程(重要參數(shù)詳解)

    vscode中l(wèi)aunch.json和task.json配置教程(重要參數(shù)詳解)

    這篇文章主要給大家介紹了關(guān)于vscode中l(wèi)aunch.json和task.json配置(重要參數(shù)詳解)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Dreamweaver中如何設(shè)定文字大小、字體、顏色

    Dreamweaver中如何設(shè)定文字大小、字體、顏色

    這篇文章主要給大家介紹了關(guān)于Dreamweaver中如何設(shè)定文字大小、字體、顏色的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2007-06-06
  • WebStorm 11.0.4安裝圖文教程

    WebStorm 11.0.4安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了WebStorm 11.0.4安裝圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 有關(guān)微信的小程序和小游戲的區(qū)別

    有關(guān)微信的小程序和小游戲的區(qū)別

    這篇文章主要介紹了有關(guān)微信的小程序和小游戲的區(qū)別,本文通過(guò)圖文文字相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Loongnix安裝PyCharm Community 2020.2.3的教程詳解

    Loongnix安裝PyCharm Community 2020.2.3的教程詳解

    這篇文章主要介紹了Loongnix安裝PyCharm Community 2020.2.3的教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 一文助你搞懂參數(shù)傳遞原理解析(java、go、python、c++)

    一文助你搞懂參數(shù)傳遞原理解析(java、go、python、c++)

    這篇文章主要介紹了多種語(yǔ)言參數(shù)傳遞原理解析(java、go、python、c++),本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 前端遇到302重定向問(wèn)題處理方式及設(shè)置第三方Cookie研究

    前端遇到302重定向問(wèn)題處理方式及設(shè)置第三方Cookie研究

    這篇文章主要給大家介紹了關(guān)于前端遇到302重定向問(wèn)題處理方式及設(shè)置第三方Cookie研究的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 解析jetbrains IDE的插件加載不出來(lái)的問(wèn)題(IDEA、pycharm等)

    解析jetbrains IDE的插件加載不出來(lái)的問(wèn)題(IDEA、pycharm等)

    這篇文章主要介紹了解析jetbrains IDE的插件加載不出來(lái)(IDEA、pycharm等),本文給大家分享解決方案,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論

孙吴县| 锡林浩特市| 霸州市| 老河口市| 和田县| 邯郸县| 麻阳| 开化县| 大埔县| 长垣县| 通辽市| 台东县| 塔河县| 东阳市| 额尔古纳市| 密山市| 东辽县| 保亭| 小金县| 沂水县| 桂阳县| 昔阳县| 林芝县| 林州市| 伊金霍洛旗| 西乌珠穆沁旗| 汝州市| 永春县| 汾阳市| 拉萨市| 泾阳县| 灵山县| 利辛县| 遵义县| 文安县| 芜湖县| 民和| 西华县| 太保市| 新津县| SHOW|