溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python的缺點(diǎn)有哪些

發(fā)布時(shí)間:2021-10-28 10:05:04 來源:億速云 閱讀:226 作者:iii 欄目:編程語言

這篇文章主要講解了“Python的缺點(diǎn)有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python的缺點(diǎn)有哪些”吧!

Python 是20世紀(jì)90年代發(fā)布的一種通用編程語言。

雖然 Python 語法簡潔,但它在第一個(gè)十年中并不為人所知,也沒有真正進(jìn)入開發(fā)人員的工作中。Perl 是首選的腳本語言,Java  已經(jīng)成為面向?qū)ο缶幊填I(lǐng)域的主流。當(dāng)然,任何語言的成熟都需要時(shí)間,只有當(dāng)它比現(xiàn)有的工具更適合開發(fā)任務(wù)時(shí)才會被采用。

對于Python來說,這一時(shí)間最早出現(xiàn)在21世紀(jì)初,那時(shí)人們開始意識到它比 Perl 更容易學(xué)習(xí),并且提供了與其他語言的互操作性。

這個(gè)發(fā)現(xiàn)讓非常多開發(fā)人員將 Python 集成到他們的應(yīng)用程序中。Django 的出現(xiàn)最終導(dǎo)致了 Perl 的滅亡,Python  開始獲得了更多的發(fā)展契機(jī)。雖然流行程度還比不上比Python更新的 Java 和 JavaScript。

快進(jìn)到現(xiàn)在,根據(jù)2019年 StackOverflow 開發(fā)者調(diào)查,Python 已經(jīng)超越 Java 成為第二流行的編程語言。

Python 是最近十年發(fā)展最快的編程語言。Python  的流行與20世紀(jì)10年代大數(shù)據(jù)的出現(xiàn)以及機(jī)器學(xué)習(xí)和人工智能的發(fā)展密不可分。企業(yè)迫切需要一種能夠幫助管理大規(guī)模數(shù)據(jù)和科學(xué)計(jì)算任務(wù)的低門檻快速開發(fā)語言。Python  非常適合這些領(lǐng)域的挑戰(zhàn)任務(wù)。

除了這些有利因素之外,Python 是一種支持動態(tài)類型的解釋語言。更重要的是,它得到了 Google 的支持,Google  投資開發(fā)了Python的深度學(xué)習(xí)框架 Tensorflow,這讓 Python 得以成為數(shù)據(jù)分析、可視化和機(jī)器學(xué)習(xí)的首選語言。

然而,雖然機(jī)器學(xué)習(xí)和人工智能的需求還在不斷增長,但是 Python 不會一直都站在巔峰,它也會有老去的一天。像每種編程語言一樣,Python  也有自己的弱點(diǎn)。這些弱點(diǎn)讓 Python 很容易被更適合企業(yè)需求的編程語言所取代。雖然已經(jīng)有 R 語言了,但是 Swift、Julia 和 Rust  等較新語言的出現(xiàn)實(shí)際上對當(dāng)前的數(shù)據(jù)科學(xué)之王構(gòu)成了更大的威脅。

Rust 還在努力追趕著各大機(jī)器學(xué)習(xí)社區(qū)的步伐,因此,我相信 Swift 和 Julia 將是推翻 Python 并最終統(tǒng)治數(shù)據(jù)科學(xué)的語言。

Python缺乏類型安全性,速度非常慢

所有的好東西都是有代價(jià)的,Python的動態(tài)類型特性也不例外。動態(tài)類型化可以在不定義類型的情況下,讓快速編寫代碼變得更加容易,但是,這會增加代碼運(yùn)行時(shí)產(chǎn)生  BUG 的風(fēng)險(xiǎn),特別是當(dāng)代碼庫大小增加時(shí),開發(fā)人員在生產(chǎn)環(huán)境中運(yùn)行代碼時(shí)會更加艱難。編譯器很容易發(fā)現(xiàn)的 BUG,在 Python  中反而無法識別,這樣就會產(chǎn)生開發(fā)障礙,最終導(dǎo)致大規(guī)模應(yīng)用程序的開發(fā)過程放慢。

更糟糕的是,與編譯的代碼不同,Python 的解釋器在執(zhí)行時(shí)要分析每一行代碼。與其他語言相比,不僅導(dǎo)致開銷變大,還大大降低了程序的性能。

Julia 可以讓你避免這些問題。盡管它是動態(tài)類型的,但它有一個(gè)實(shí)時(shí)編譯器。JIT 編譯器要么在執(zhí)行前生成機(jī)器代碼,要么使用先前存儲的緩存編譯,這能讓  Julia 與靜態(tài)類型語言一樣具有優(yōu)秀的性能。更重要的是,它有一個(gè)稱為多分派的關(guān)鍵特性,類似于 OOPs  的函數(shù)重載,雖然只能在運(yùn)行程序的時(shí)候有用。多分派的強(qiáng)大之處在于它能夠處理不同的參數(shù)類型,而無需創(chuàng)建單獨(dú)的函數(shù)名或嵌套的 if  語句。這個(gè)功能不僅可以幫助開發(fā)人員編寫更加緊湊的代碼,也是數(shù)值計(jì)算的一大勝利,因?yàn)榕c Python  有所不同,我們可以輕松地通過擴(kuò)展解決方案來處理所有類型的參數(shù)。

還有更好,那就是,Swift 作為一種靜態(tài)類型的語言,因其 LLVM(低級虛擬機(jī))編譯器而得到了高度優(yōu)化。LLVM 讓快速編譯成匯編代碼成為可能,這能讓  Swift 超高效運(yùn)行,達(dá)到了幾乎與 C 語言一樣快的速度。此外,Swift 擁有更好的內(nèi)存安全和管理工具,即自動引用計(jì)數(shù)。與 garbage  收集器不同,ARC 具有更高的確定性,因?yàn)橹灰糜?jì)數(shù)歸零,它就會回收內(nèi)存。

作為提供類型注釋的編譯語言,Swift 和 Julia 比 Python  更快,功能更強(qiáng)大。僅僅這一點(diǎn),可能就足以讓開發(fā)人員推薦它們,而不是使用較舊的語言,考慮很多其他因素。

Python在并行性方面有局限性

如果說慢不是 Python 很明顯的缺點(diǎn),那么這種語言在并行計(jì)算方面的局限性絕對是最明顯的缺點(diǎn)了。

簡而言之,Python 使用 GIL(全局解釋器鎖),它會通過阻止多個(gè)線程同時(shí)執(zhí)行,來提高單個(gè)線程的性能。該過程有一個(gè)很大的障礙:開發(fā)人員不能使用多個(gè)  CPU 核心來進(jìn)行密集的計(jì)算。

在此,我必須要同意一個(gè)觀點(diǎn),即在利用 Python 與 Tensorflow、PyTorch 等 C / C ++  庫的互操作性時(shí),我們目前已經(jīng)做得很好了。 但是 Python 包裝器并不能解決所有調(diào)試問題。當(dāng)檢查底層代碼時(shí),我們還是要依賴于 C 和 C ++。  從本質(zhì)上講,我們不能在低層次上利用 Python 的優(yōu)勢,這也是 Python 與眾不同之處。

這一因素很快將決定 Python 的衰落、Julia 和 Swift 的崛起。Julia 是一種專門用來解決 Python  缺點(diǎn)的語言。它主要提供三個(gè)特性:協(xié)同程序(異步任務(wù))、多線程和分布式計(jì)算,所有這些特性都顯示并發(fā)和并行編程有無限可能。這種結(jié)構(gòu)使 Julia 能夠以比  Python 更快的速度執(zhí)行科學(xué)計(jì)算和解決大數(shù)據(jù)問題。

另一方面,Swift 擁有開發(fā)移動應(yīng)用所需的所有工具,在并行計(jì)算方面沒有問題。

Swift和Julia都擁有Python的互操作性和強(qiáng)大的支持

雖然 Python  在速度、多線程和類型安全方面存在缺點(diǎn),但它擁有一個(gè)巨大的生態(tài)系統(tǒng),擁有大量的庫和包。在Python面前,Swift和Julia在機(jī)器學(xué)習(xí)領(lǐng)域仍然是嬰兒,他們擁有的庫數(shù)量非常有限。然而,它們與  Python 的互操作性彌補(bǔ)了 Julia 和 Swift 中缺少庫支持的不足。

Julia 不僅允許程序員使用 Python 代碼(反之亦然),還支持與 C、R、Java  以及幾乎所有主要編程語言的互操作性。這種多功能性肯定會給這種語言一個(gè)很好的推動,并增加它在數(shù)據(jù)科學(xué)家中被迅速采用的機(jī)會。

另一方面,Swift 通過 PythonKit 庫提供了與 Python  的互操作性。Swift(起源于蘋果)比較大的賣點(diǎn)是它得到了谷歌(Google)的大力支持,谷歌幾十年前就全力支持 Python。

另外,Swift 的創(chuàng)建者 chrislattner 現(xiàn)在正在谷歌的 AI brain 團(tuán)隊(duì)工作,這一事實(shí)表明 Swift 正在被培養(yǎng)成機(jī)器學(xué)習(xí)領(lǐng)域  Python 的替代者。Tensorflow 團(tuán)隊(duì)通過 S4TF 項(xiàng)目投資了 Swift,這進(jìn)一步證明了該語言不僅僅是 Python 的包裝器。相反,Swift  憑借其差異化的編程支持和像 C 一樣的低級工作能力,將有可能被用來取代底層的深度學(xué)習(xí)工具。

感謝各位的閱讀,以上就是“Python的缺點(diǎn)有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Python的缺點(diǎn)有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI