自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python和Ruby:流行動(dòng)態(tài)腳本語(yǔ)言之特點(diǎn)對(duì)比

開(kāi)發(fā) 開(kāi)發(fā)工具
Python和Ruby是兩個(gè)語(yǔ)法上十分相像的動(dòng)態(tài)腳本語(yǔ)言,不過(guò)又各有特點(diǎn)。本文列出了Python和Ruby的一些不同之處,并認(rèn)為Rails適合構(gòu)建Web應(yīng)用,Python則比較適合后端運(yùn)算。

最近幾年以來(lái),動(dòng)態(tài)腳本編程語(yǔ)言在國(guó)內(nèi)的得到了越來(lái)越多的普及應(yīng)用,其中Python和Ruby更是佼佼者,經(jīng)常拿來(lái)被比較,我覺(jué)得兩者倒是各有特點(diǎn):

51CTO編輯推薦:Ruby入門(mén)教程與技巧大全 

一、Python從語(yǔ)法上來(lái)說(shuō)更質(zhì)樸一些,而Ruby更性感一些

Python的語(yǔ)法相對(duì)其他腳本語(yǔ)言來(lái)說(shuō),沒(méi)有太多花巧的地方,顯得比較死板一點(diǎn),其實(shí)從Python強(qiáng)制代碼縮進(jìn)也可以看出來(lái)Guido設(shè)計(jì)語(yǔ)言的取向。語(yǔ)法死板的一面就是不容易玩出來(lái)更性感的東西,比方說(shuō)Rails這樣的框架,另外Python也無(wú)法做DSL這樣的事情,但是語(yǔ)法死板的另一面就是比較規(guī)范,相對(duì)來(lái)說(shuō),更加適應(yīng)軟件開(kāi)發(fā)的工程性要求,更容易組織大規(guī)模的團(tuán)隊(duì)進(jìn)行開(kāi)發(fā)。

Ruby的語(yǔ)法非常靈活,Matz設(shè)計(jì)ruby的出發(fā)點(diǎn)也是為了coding for fun,因此可以用ruby玩出來(lái)很多花樣,運(yùn)用足夠的技巧,可以用Ruby寫(xiě)出來(lái)逼近自然語(yǔ)言的DSL,對(duì)于程序員來(lái)說(shuō),玩ruby確實(shí)充滿了樂(lè)趣。Rails能在ruby社區(qū)誕生,而不是Python社區(qū)誕生絕對(duì)和編程語(yǔ)言有直接的關(guān)系。不過(guò)ruby語(yǔ)法靈活的另一面就是編程實(shí)現(xiàn)風(fēng)格的多樣性,這對(duì)于大規(guī)模團(tuán)隊(duì)的協(xié)作和管理是一個(gè)挑戰(zhàn)。

二、Python的解析器實(shí)現(xiàn)更成熟,第三方庫(kù)質(zhì)量高

Ruby1.9解析器盡管已經(jīng)有了很大的性能提升和很多新的功能,但是從源代碼實(shí)現(xiàn)的角度來(lái)說(shuō),基本上是通過(guò)在Ruby1.8源代碼上打patch來(lái)增加功能的。從源代碼的結(jié)構(gòu)來(lái)說(shuō),Ruby的實(shí)現(xiàn)太古老了,Ruby擴(kuò)展起來(lái)比較困難,只能不斷打patch。這也是為什么現(xiàn)在Ruby社區(qū)涌現(xiàn)出來(lái)那么多新的Ruby解析器實(shí)現(xiàn)的原因。從很大程度上來(lái)說(shuō),這制約了Ruby的發(fā)展速度。相對(duì)而言,Python解析器更成熟,也比較穩(wěn)定。

在第三方類(lèi)庫(kù)的數(shù)量上來(lái)說(shuō),Ruby并不比Python少,但是高性能高質(zhì)量久經(jīng)考驗(yàn)的第三方類(lèi)庫(kù)Python要明顯比Ruby多,事實(shí)上很多Ruby的第三方類(lèi)庫(kù)都不太成熟,因此這也很大程度上制約了Ruby的發(fā)展。

三、Python的應(yīng)用領(lǐng)域非常廣泛,而Ruby目前主要局限在在Web領(lǐng)域

Python應(yīng)用的領(lǐng)域非常廣泛,除了web開(kāi)發(fā)以外,還被廣泛用在服務(wù)器后端的高性能服務(wù)器實(shí)現(xiàn),服務(wù)器后端的各種密集運(yùn)算,全文檢索,各種文本處理,系統(tǒng)管理等等,另外桌面應(yīng)用領(lǐng)域wxPython也是一個(gè)很成熟的跨平臺(tái)GUI框架。對(duì)于某些特殊的應(yīng)用,比方說(shuō)調(diào)用操作系統(tǒng)內(nèi)核API,Python也可以完成的很好,比方說(shuō)大量小文件的實(shí)時(shí)同步方案,就是用Python直接調(diào)用Linux Kernel的inotify特性來(lái)實(shí)現(xiàn)的。所以可以說(shuō)Python是軟件開(kāi)發(fā)領(lǐng)域的瑞士軍刀,什么事情都可以做。

正是由于Ruby解析器和Ruby類(lèi)庫(kù)的制約,Ruby的應(yīng)用主要局限在Web開(kāi)發(fā)領(lǐng)域,目前Ruby的應(yīng)用還無(wú)法延伸到web開(kāi)發(fā)領(lǐng)域以外的很多地方。據(jù)說(shuō)豆瓣早期就考慮過(guò)Ruby on Rails,但是因?yàn)镽uby不能做其他事情,而Python可以大包大攬,最后放棄Ruby選擇了Python。

四、在Web領(lǐng)域Ruby是王者

隨著互聯(lián)網(wǎng)應(yīng)用更進(jìn)一步滲透到軟件開(kāi)發(fā)的各個(gè)領(lǐng)域,其實(shí)web開(kāi)發(fā)占整個(gè)軟件行業(yè)開(kāi)發(fā)的比重也是越來(lái)越大。盡管Ruby在其他領(lǐng)域很受制約,但是在Web開(kāi)發(fā)領(lǐng)域就是絕對(duì)的王者了。Rails框架的領(lǐng)先程度已經(jīng)遠(yuǎn)遠(yuǎn)甩開(kāi)了任何一個(gè)潛在的競(jìng)爭(zhēng)對(duì)手十萬(wàn)八千里。因此盡管Ruby可能有這樣那樣的問(wèn)題,但是說(shuō)到Web開(kāi)發(fā),Rails幾乎就是無(wú)可爭(zhēng)議的唯一選擇。

而Python盡管十分全面,卻偏偏在web開(kāi)發(fā)領(lǐng)域不彰,web框架雖然眾多,卻沒(méi)有一個(gè)真正可以挑大梁,Django雖然在Python社區(qū)比較流行,但很多方面也有缺陷?,F(xiàn)在的互聯(lián)網(wǎng)應(yīng)用往往都是多種語(yǔ)言混合編程,Ruby在Web以外的缺陷也可以用其他語(yǔ)言來(lái)彌補(bǔ)。

五、Python的包管理不如Ruby

盡管Python的第三方類(lèi)庫(kù)更高質(zhì)量更成熟,但是Python社區(qū)缺乏Ruby Gem這樣一個(gè)良好的包管理軟件和包發(fā)布的網(wǎng)站。因此應(yīng)用的構(gòu)建顯得不如Ruby那么方便,那么人性化。特別是在類(lèi)庫(kù)的版本升級(jí)上,就會(huì)遇到很多麻煩,不如Ruby Gem那么簡(jiǎn)單。

不過(guò)總的來(lái)說(shuō),Python和Ruby還是相似度極高的兩種編程語(yǔ)言,即使兩種編程語(yǔ)言都學(xué)習(xí)一下也不會(huì)浪費(fèi)太多時(shí)間。如果我個(gè)人選擇的話,會(huì)首選用Rails來(lái)構(gòu)建web應(yīng)用,再根據(jù)情況選擇Python或者Java處理一些服務(wù)器后端的運(yùn)算。總之,未來(lái)還是一個(gè)混合編程的時(shí)代,我們需要多了解一些編程工具,然后根據(jù)需要看菜吃飯才行。

本文來(lái)自robbin的博客:《記上海Python社區(qū)聚會(huì),談Python和Ruby》。

【編輯推薦】

  1. Ruby和Python的語(yǔ)法比較
  2. Ruby使用心得匯總:尋找高效的實(shí)現(xiàn)
  3. Ruby on Rails入門(mén)之道
  4. Ruby on Rails開(kāi)發(fā)的五點(diǎn)建議
  5. 淺談Ruby和JRuby的學(xué)習(xí)
責(zé)任編輯:yangsai 來(lái)源: robbin的博客
相關(guān)推薦

2012-07-16 11:23:18

LinuxWindows腳本語(yǔ)言

2009-04-03 09:16:22

PHPRubyPython

2009-06-14 21:54:37

動(dòng)態(tài)語(yǔ)言Java腳本API

2011-08-24 13:32:17

2010-03-25 16:31:55

Python代碼

2011-08-25 14:26:40

LUA數(shù)據(jù)文件

2009-12-23 09:23:17

Groovy 1.7

2012-02-13 10:03:31

編程開(kāi)發(fā)

2010-02-24 14:04:32

Python腳本語(yǔ)言

2010-07-16 12:52:35

JVMJVM腳本語(yǔ)言Groovy

2010-02-26 09:33:51

Python腳本

2017-09-13 15:37:53

2010-02-26 13:03:31

Python腳本語(yǔ)言

2009-06-10 08:41:15

Linux腳本語(yǔ)言

2011-08-22 18:00:53

Lua語(yǔ)言

2014-06-19 10:48:18

RubyPython

2012-06-02 01:41:00

GroovyJVMJava

2015-02-09 09:51:06

2011-08-25 10:40:21

Lua游戲

2011-08-22 16:59:28

Lua
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)