首先看看不同編程語(yǔ)言之間的真實(shí)區(qū)別:
常用的編程語(yǔ)言都是各有千秋,各自都有自己的優(yōu)點(diǎn)。比如:
- C語(yǔ)言可以編寫(xiě)操作系統(tǒng)的貼近硬件的語(yǔ)言,適合開(kāi)發(fā)那些追求運(yùn)行速度、充分發(fā)揮硬件性能的程序。
- Python是用來(lái)編寫(xiě)應(yīng)用程序的高級(jí)編程語(yǔ)言。它的定位是“優(yōu)雅”、“明確”、“簡(jiǎn)單”,盡量寫(xiě)容易看明白的代碼,盡量寫(xiě)少的代碼。
01 Python到底是一種什么樣的語(yǔ)言?
- 一種解釋型語(yǔ)言:開(kāi)發(fā)過(guò)程中沒(méi)有編譯這個(gè)環(huán)節(jié),能省下不少時(shí)間與精力。
- 一種交互式語(yǔ)言:可以在一個(gè)Python提示符,直接互動(dòng)執(zhí)行寫(xiě)你的程序。
- 面向?qū)ο蟮恼Z(yǔ)言:支持面向?qū)ο蟮娘L(fēng)格或代碼封裝在對(duì)象的編程技術(shù)。
- 是初學(xué)者的語(yǔ)言:支持廣泛的應(yīng)用程序開(kāi)發(fā)。
我舉個(gè)例子:比如說(shuō)要編寫(xiě)一個(gè)電子郵件客戶端。
- 如果先從最底層開(kāi)始編寫(xiě)網(wǎng)絡(luò)協(xié)議相關(guān)的代碼,那估計(jì)一年半載也開(kāi)發(fā)不出來(lái)。
- 高級(jí)編程語(yǔ)言通常會(huì)提供一個(gè)比較完善的基礎(chǔ)代碼庫(kù),覆蓋了網(wǎng)絡(luò)、文件、GUI、數(shù)據(jù)庫(kù)、文本等大量?jī)?nèi)容,能直接調(diào)用。
也就是說(shuō),用Python這種高級(jí)編程語(yǔ)言,針對(duì)電子郵件協(xié)議的SMTP庫(kù),針對(duì)桌面環(huán)境的GUI庫(kù),在已有的代碼庫(kù)的基礎(chǔ)上開(kāi)發(fā),一個(gè)電子郵件客戶端幾天就能開(kāi)發(fā)出來(lái)。
除了內(nèi)置的庫(kù)外,Python還有大量的第三方庫(kù),也就是別人開(kāi)發(fā)的,供你直接使用的東西。當(dāng)然,如果你開(kāi)發(fā)的代碼通過(guò)很好的封裝,也可以作為第三方庫(kù)給別人使用。
02 Python適合開(kāi)發(fā)哪些類(lèi)型的應(yīng)用?
- 首選是網(wǎng)絡(luò)應(yīng)用,包括網(wǎng)站、后臺(tái)服務(wù)等等。
許多大型網(wǎng)站都是用Python開(kāi)發(fā)的,例如YouTube、Instagram,還有國(guó)內(nèi)的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美國(guó)航空航天局)都大量地使用Python。
- 其次是許多日常需要的小工具,包括系統(tǒng)管理員需要的腳本任務(wù)等等;
- 另外就是把其他語(yǔ)言開(kāi)發(fā)的程序再包裝起來(lái),方便使用。
03 Python的優(yōu)缺點(diǎn)有哪些?
3.1 Python的優(yōu)點(diǎn)
- 1.易于學(xué)習(xí):Python有相對(duì)較少的關(guān)鍵字,結(jié)構(gòu)簡(jiǎn)單,學(xué)習(xí)起來(lái)更加簡(jiǎn)單。
- 2.易于閱讀:Python代碼定義的相對(duì)于其他的代碼更加的清晰。
- 3.易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的。
- 4.廣泛的標(biāo)準(zhǔn)庫(kù):Python的最大的優(yōu)勢(shì)之一是豐富的庫(kù),跨平臺(tái)的,在UNIX,Windows和Macintosh兼容很好。
- 5.互動(dòng)模式:互動(dòng)模式的支持,可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語(yǔ)言,互動(dòng)的測(cè)試和調(diào)試代碼片斷。
- 6.可移植:基于其開(kāi)放源代碼的特性,Python已經(jīng)被移植(也就是使其工作)到許多平臺(tái)。
- 7.可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫(xiě)一些不愿開(kāi)放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調(diào)用。
- 8.數(shù)據(jù)庫(kù):Python提供所有主要的商業(yè)數(shù)據(jù)庫(kù)的接口。
- 9.GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用。
- 10.可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。
3.1 Python的缺點(diǎn)
第一個(gè)缺點(diǎn)就是運(yùn)行速度慢,和C程序相比非常慢。
因?yàn)镻ython是解釋型語(yǔ)言,你的代碼在執(zhí)行時(shí)會(huì)一行一行地翻譯成CPU能理解的機(jī)器碼,這個(gè)翻譯過(guò)程非常耗時(shí),而C程序是運(yùn)行前直接編譯成CPU能執(zhí)行的機(jī)器碼,所以非常快。
但是大量的應(yīng)用程序不需要這么快的運(yùn)行速度,因?yàn)橛脩舾靖杏X(jué)不出來(lái)。
舉個(gè)例子:
開(kāi)發(fā)一個(gè)下載MP3的網(wǎng)絡(luò)應(yīng)用程序,C程序的運(yùn)行時(shí)間需要0.001秒,而Python程序的運(yùn)行時(shí)間需要0.1秒,慢了100倍,但由于網(wǎng)絡(luò)更慢,需要等待1秒,你想,用戶能感覺(jué)到1.001秒和1.1秒的區(qū)別嗎?
第二個(gè)缺點(diǎn)就是代碼不能加密。
如果要發(fā)布你的Python程序,實(shí)際上就是發(fā)布源代碼,這一點(diǎn)跟C語(yǔ)言不同,C語(yǔ)言不用發(fā)布源代碼,只需要把編譯后的機(jī)器碼(也就是你在Windows上常見(jiàn)的xxx.exe文件)發(fā)布出去。
要從機(jī)器碼反推出C代碼是不可能的,所以,凡是編譯型的語(yǔ)言,都沒(méi)有這個(gè)問(wèn)題,而解釋型的語(yǔ)言,則必須把源碼發(fā)布出去。
這個(gè)缺點(diǎn)僅限于你要編寫(xiě)的軟件需要賣(mài)給別人掙錢(qián)的時(shí)候。好消息是目前的互聯(lián)網(wǎng)時(shí)代,靠賣(mài)軟件授權(quán)的商業(yè)模式越來(lái)越少了,靠網(wǎng)站和移動(dòng)應(yīng)用賣(mài)服務(wù)的模式越來(lái)越多了,后一種模式不需要把源碼給別人。
再說(shuō)了,現(xiàn)在如火如荼的開(kāi)源運(yùn)動(dòng)和互聯(lián)網(wǎng)自由開(kāi)放的精神是一致的,互聯(lián)網(wǎng)上有無(wú)數(shù)非常優(yōu)秀的像Linux一樣的開(kāi)源代碼,我們千萬(wàn)不要高估自己寫(xiě)的代碼真的有非常大的“商業(yè)價(jià)值”。那些大公司的代碼不愿意開(kāi)放的更重要的原因是代碼寫(xiě)得太爛了,一旦開(kāi)源,就沒(méi)人敢用他們的產(chǎn)品了。
當(dāng)然,Python還有其他若干小缺點(diǎn),請(qǐng)自行忽略,就不一一列舉了。