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