Python對(duì)Ruby:誰(shuí)在Web開(kāi)發(fā)領(lǐng)域更勝一籌?
譯文【51CTO.com快譯】Python與Ruby已經(jīng)成為目前網(wǎng)站、Web應(yīng)用以及Web服務(wù)開(kāi)發(fā)的***編程語(yǔ)言選項(xiàng)。
事實(shí)上,這兩款語(yǔ)言擁有諸多相似之處——皆提供高級(jí)、面向?qū)ο缶幋a機(jī)制,提供交互式shell、標(biāo)準(zhǔn)庫(kù)以及持久性支持。但由于二者歷史起源不同,因此在語(yǔ)法與解決問(wèn)題的思路方面存在巨大差異。
至于具體選擇哪種語(yǔ)言,則需要視實(shí)際情況而定。畢竟每種語(yǔ)言皆有優(yōu)缺點(diǎn),適合自己才最重要。
基本情況
Python最初源自科學(xué)領(lǐng)域,可在配合適當(dāng)?shù)脑驮O(shè)計(jì)時(shí)輕松翻譯為C++形式。另外,Python在Web開(kāi)發(fā)領(lǐng)域擁有悠久歷史。而Ruby則在設(shè)計(jì)之初就***Web開(kāi)發(fā)使用,且Rails框架進(jìn)一步拓展了Ruby在開(kāi)發(fā)復(fù)雜網(wǎng)站方面的能力。
哪款編程語(yǔ)言最適合您的需求?下面我們將從幾個(gè)方面快速進(jìn)行判斷:
惟一***方式對(duì)接近人類語(yǔ)言
Python
Python采用直接方式進(jìn)行編程,其主要目標(biāo)在于盡可能明確地向程序員呈現(xiàn)一切。在Python中,每項(xiàng)任務(wù)只有惟一“***方式”。這種思路使其擁有嚴(yán)謹(jǐn)?shù)牟季帧?/p>
Python的核心理念包含三大關(guān)鍵性層級(jí)原則:
· 顯性優(yōu)于隱性
· 簡(jiǎn)單優(yōu)于復(fù)雜
· 復(fù)雜優(yōu)于繁雜
這意味著Python易于學(xué)習(xí)且其代碼易于閱讀,因此很適合新手程序員。另外,其語(yǔ)法非常簡(jiǎn)單且很少要求學(xué)習(xí)者死記硬背。明確的代碼結(jié)構(gòu)也讓開(kāi)發(fā)者能夠輕松了解各項(xiàng)元素來(lái)自哪里,從而簡(jiǎn)化了調(diào)試工作。
Python的這種層級(jí)原則在方方面面得到了體現(xiàn)。其利用空白實(shí)現(xiàn)流控制,這也成為其語(yǔ)法區(qū)別于其它大多數(shù)語(yǔ)言的主要表現(xiàn)。縮進(jìn)代碼的方式?jīng)Q定了其操作含義——這種對(duì)“空白”機(jī)制的使用表達(dá)了Python所堅(jiān)持的“明確”理念。
Ruby
相較于Python,Ruby專注于“人類語(yǔ)言”編程,其代碼在閱讀感受上更接近自然語(yǔ)言而非機(jī)器語(yǔ)言。Ruby遵循“最合預(yù)期”原則,且提供無(wú)數(shù)種方式實(shí)現(xiàn)同樣的效果。另外,類似的方法可以擁有多個(gè)名稱,這令很多開(kāi)發(fā)人員在學(xué)習(xí)中遇到了巨大的麻煩。
與Python不同,Ruby使用“塊”,即一個(gè)在程序中被視為一個(gè)單位的一級(jí)對(duì)象。事實(shí)上,Ruby將OOP(即面向?qū)ο缶幊?的概念發(fā)揮到了極限——一切皆為對(duì)象,甚至全局變量實(shí)際都是在ObjectSpace對(duì)象中進(jìn)行表達(dá)。這種特性使得Ruby在函數(shù)編程與使用lambda的情況下?lián)碛袕?qiáng)大的能力。
除了塊與函數(shù)編程外,Ruby還提供眾多其它特性,包括fragmentation、hashable以及unhashable類型,外加mutable字符串。
Ruby代碼的優(yōu)雅特性使其吸引到眾多粉絲的追捧,然而Ruby“魔幻”般的功能與靈活性也導(dǎo)致從業(yè)者很難發(fā)現(xiàn)其中的bug。
穩(wěn)定對(duì)創(chuàng)新
雖然語(yǔ)言本身的表現(xiàn)非常重要,但開(kāi)發(fā)者社區(qū)的實(shí)力也同樣關(guān)鍵。幸運(yùn)的是,Python與Ruby皆擁有龐大且活躍的技術(shù)社區(qū)。
Python
Python社區(qū)中包含規(guī)模可觀的Linux與學(xué)術(shù)社區(qū),因此能夠提供大量與數(shù)學(xué)及科學(xué)相關(guān)的用例。這種支持為該社區(qū)帶來(lái)了穩(wěn)定性與多樣性,且隨著Python在Web開(kāi)發(fā)領(lǐng)域的拓展,這種增長(zhǎng)還將不斷升級(jí)。
Ruby
Ruby社區(qū)則單純專注于Web開(kāi)發(fā),且更傾向于提供創(chuàng)新型成果。但必須承認(rèn),太過(guò)活躍的創(chuàng)新會(huì)導(dǎo)致舊有方案遭到破壞,且其在多樣性方面也不及Python的高度。
總結(jié)
在Web開(kāi)發(fā)領(lǐng)域,Ruby擁有Rails而Python擁有Django。二者皆為強(qiáng)大的框架,因此在進(jìn)行Web開(kāi)發(fā)時(shí)大家可以隨意選擇。您的最終決定將取決于您的經(jīng)驗(yàn)水平與理念偏好。
但如果您打算專注于Web應(yīng)用開(kāi)發(fā),那么Ruby更加流行且更為靈活。而憑借著強(qiáng)大的技術(shù)社區(qū),Ruby將始終處于發(fā)展的最前沿。
而如果您既希望構(gòu)建Web應(yīng)用,又希望學(xué)習(xí)一種更具普適性的語(yǔ)言,那么Python顯然更好。您將擁有更為多元化的社區(qū),且能夠從多個(gè)行業(yè)的從業(yè)者處獲取幫助及支持。
原文標(biāo)題:Python vs. Ruby: Which is best for web development? 原文作者:Tom Radcliffe
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】