Python vs Ruby:誰(shuí)是更好的Web開(kāi)發(fā)語(yǔ)言?
Python 和 Ruby 都是目前用來(lái)開(kāi)發(fā) websites、web-based apps 和 web services 的流行編程語(yǔ)言之一。
這兩種語(yǔ)言在許多方面有相似之處。它們都是高級(jí)的面向?qū)ο蟮木幊陶Z(yǔ)言,都是交互式腳本語(yǔ)言、都提供標(biāo)準(zhǔn)庫(kù)且支持持久化。但是,Python 和 Ruby 的解決方法卻千差萬(wàn)別,因?yàn)樗鼈兊陌l(fā)展歷程導(dǎo)致它們的語(yǔ)法和原理都大不相同。
那么要采用哪種語(yǔ)言來(lái)進(jìn)行編程就需要好好考慮了,因?yàn)槊糠N語(yǔ)言都是自己的優(yōu)點(diǎn)和缺點(diǎn)。而且這些優(yōu)缺點(diǎn)都會(huì)影響我們的決定。
基礎(chǔ)知識(shí)
Python 最初是作為科學(xué)領(lǐng)域的原型設(shè)計(jì)語(yǔ)言的,因?yàn)樗梢院苋菀邹D(zhuǎn)換成 C++ 語(yǔ)言。Python 發(fā)展很久之后才被***次用于網(wǎng)站開(kāi)發(fā)。而 Ruby 之所以流行就是因?yàn)榫W(wǎng)站開(kāi)發(fā),繼承自 Ruby 的 Rails 框架被開(kāi)發(fā)人員用來(lái)設(shè)計(jì)復(fù)雜的網(wǎng)站。
哪種編程語(yǔ)言更適合你的需要?下面對(duì)于每種語(yǔ)言都做一個(gè)概述來(lái)幫助你選擇:
方法:***的方法 VS 以人為本的語(yǔ)言
Python
Python 作為一種直接面向?qū)ο蟮木幊陶Z(yǔ)言。它主要的目的是對(duì)程序員來(lái)說(shuō)所有的事情都是很明顯的。在 Python 語(yǔ)言中做某件事情的時(shí)候,只有一種‘***’的辦法。這種原理導(dǎo)致 python 語(yǔ)言的代碼規(guī)范很?chē)?yán)格。
Python 的核心理念主要包括三條關(guān)鍵的分層原則:
- 顯示優(yōu)于隱式;
- 簡(jiǎn)單優(yōu)于復(fù)雜;
- 復(fù)雜優(yōu)于超復(fù)雜;
這種嚴(yán)格的原理導(dǎo)致 Python 語(yǔ)言是一種易讀且易學(xué)——這也就是為什么一部分碼農(nóng)說(shuō) python 語(yǔ)言是偉大的語(yǔ)言。對(duì)于,入門(mén)級(jí)的編程語(yǔ)言 Python 有很大優(yōu)勢(shì)。它的語(yǔ)法簡(jiǎn)單,幾乎不需要去記。因?yàn)樗拇a結(jié)構(gòu)很明朗,開(kāi)發(fā)者很容易知道一切從哪里來(lái),也很容易去調(diào)試。
Python 代碼的層次結(jié)構(gòu)是很明顯的一個(gè)特點(diǎn)。不同于其他編程語(yǔ)言,包括 Ruby,Python 語(yǔ)言使用空格進(jìn)行流程控制。代碼的縮進(jìn)決定了它執(zhí)行的意義。使用空格是 Python “顯示”原理的一個(gè)很典型的例子,一個(gè) Python 代碼的形狀決定了它的邏輯結(jié)構(gòu)和執(zhí)行順序。
Ruby
不同于 python ,Ruby 是“以人為本”的語(yǔ)言,是按照開(kāi)發(fā)者認(rèn)為的方式來(lái)運(yùn)行的,它的代碼讀起來(lái)更像是口語(yǔ)化的語(yǔ)言(像開(kāi)發(fā)者)而不是像其他語(yǔ)言一樣類(lèi)似于一種機(jī)器語(yǔ)言。Ruby 遵循“最小驚動(dòng)”原則,提供很多作相似事情的方法。這些相似的方法有多個(gè)名稱(chēng),使得很多開(kāi)發(fā)者感到困惑和沮喪。
不同于 Python,Ruby 語(yǔ)言使用了“模塊”,一級(jí)對(duì)象在程序中被當(dāng)做一個(gè)單元。事實(shí)上,Ruby 是一種面向?qū)ο缶幊痰恼Z(yǔ)言。一切皆為對(duì)象——甚至全局變量事實(shí)上都是對(duì)象空間中的對(duì)象。類(lèi)和模塊本身就是對(duì)象,函數(shù)和運(yùn)算符都是方法的對(duì)象。這種方式使得 Ruby 尤其強(qiáng)大,尤其是當(dāng)結(jié)合其他主要力量:函數(shù)式編程和 lambdas 表達(dá)式的使用。
除了模塊和函數(shù)式編程,Ruby 為編程者提供了許多特性包括分片、哈希、不哈希類(lèi)型以及可變字符串類(lèi)型。
Ruby 的追從者認(rèn)為它優(yōu)雅的編碼方式是它***的特點(diǎn)。同時(shí),Ruby 的“神奇”的功能和靈活性使得它很難追蹤 bug。
社區(qū): 穩(wěn)定與創(chuàng)新
盡管特性和編程哲學(xué)是選擇一個(gè)語(yǔ)言的首要驅(qū)動(dòng)因素,但是社區(qū)開(kāi)發(fā)者的力量仍然會(huì)扮演一個(gè)重要的角色。幸運(yùn)地是,Python 和 Ruby 都為自己有強(qiáng)大的社區(qū)而自豪。
Python
Python 的社區(qū)已經(jīng)包含一個(gè)巨大的 Linux 社區(qū)和學(xué)術(shù)社區(qū),因此它能提供很多學(xué)術(shù)(數(shù)學(xué)和自然科學(xué))上使用的案例。這種支持不僅給社區(qū)帶來(lái)了穩(wěn)定,還帶來(lái)了多樣性,這就導(dǎo)致了 Python 的增長(zhǎng)不僅限于在 web 開(kāi)發(fā)上。
Ruby
然而,Ruby 的社區(qū)從一開(kāi)始主要就聚焦在 web 開(kāi)發(fā)上。它在創(chuàng)新上往往比 Python 社區(qū)更快,但是這種創(chuàng)新也引起了更多的破壞。另外,它在多樣性上,還沒(méi)有達(dá)到 Python 的水平。
總結(jié)
對(duì)于 Web 開(kāi)發(fā),Ruby 有 Rails ,Python 有 Django 。 兩者都是強(qiáng)大的框架,所以當(dāng)談到 Web 開(kāi)發(fā)時(shí),你使用任何一種語(yǔ)言都不會(huì)出錯(cuò)。你的決定最終將歸結(jié)于你的經(jīng)驗(yàn)水平和偏好。
如果打算專(zhuān)注于構(gòu)建 Web 應(yīng)用程序,Ruby 是流行和靈活的,擁有一個(gè)建立在它之上的非常強(qiáng)大的社區(qū),始終處于研發(fā)的最前沿。
如果你對(duì)構(gòu)建 Web 應(yīng)用程序有興趣,并希望學(xué)習(xí)更加通用的語(yǔ)言,請(qǐng)嘗試 Python 。 你會(huì)得到一個(gè)多元化的社區(qū),并從其所應(yīng)用的各個(gè)行業(yè)中感悟到很多,并得到很多支持。