Python正在慢慢失去魅力
自從1990年代初發(fā)布Python之后,它就引起了很多炒作。 當(dāng)然,編程社區(qū)至少花了20年的時(shí)間才意識(shí)到它的存在,但是自那時(shí)以來,它的普及程度已經(jīng)遠(yuǎn)遠(yuǎn)超過了C,C#,Java甚至Javascript。
盡管Python在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域以及某些程度上在科學(xué)和數(shù)學(xué)計(jì)算領(lǐng)域占據(jù)著主導(dǎo)地位,但與Julia,Swift和Java等較新的語言相比,它確實(shí)有其缺點(diǎn)。
是什么使Python如此流行?
Python迅猛發(fā)展的主要推動(dòng)力之一是它的易學(xué)性和強(qiáng)大的實(shí)用性,這使其對(duì)初學(xué)者以及因諸如C之類的語言的語法難以理解而回避編程的人非常有吸引力。 / C ++。
該語言從根本上廣泛強(qiáng)調(diào)代碼的可讀性。 憑借其簡(jiǎn)潔明了的語法,它使開發(fā)人員無需編寫大量的行代碼即可表達(dá)想法和概念(在C或Java等低級(jí)語言中就是這種情況)。 Python非常簡(jiǎn)單,可以與其他編程語言無縫集成(例如將CPU密集型任務(wù)卸載到C / C ++),這對(duì)多語言開發(fā)人員來說是一個(gè)額外的好處。
Python多功能性的另一個(gè)原因是企業(yè)(包括FAANG)以及無數(shù)小型企業(yè)對(duì)其的大量使用。 如今,您將找到一個(gè)Python軟件包,幾乎可以想到的所有內(nèi)容-對(duì)于科學(xué)計(jì)算,您已經(jīng)擁有Numpy,Sklearn(用于機(jī)器學(xué)習(xí))和Caer(用于計(jì)算機(jī)視覺)。
Python的弱點(diǎn)
很慢,很慢
這可能很容易。 速度通常被認(rèn)為是開發(fā)人員關(guān)注的重點(diǎn)之一,并且可能會(huì)持續(xù)不可預(yù)見的時(shí)間。
Python變慢的主要原因之一,實(shí)際上可以歸結(jié)為2 – Python被解釋為與編譯相反,最終導(dǎo)致執(zhí)行時(shí)間變慢; 以及它是動(dòng)態(tài)類型的(在執(zhí)行過程中,Python會(huì)自動(dòng)推斷變量的數(shù)據(jù)類型)。
實(shí)際上,這種" Python慢"的觀點(diǎn)在初學(xué)者中往往起很大作用。 對(duì),是真的。 但只是部分。
以TensorFlow為例,這是Python提供的機(jī)器學(xué)習(xí)庫。 這些庫實(shí)際上是用C ++編寫的,并且可以在Python中使用,有點(diǎn)像是圍繞C ++實(shí)現(xiàn)的Python"包裝器"。 Numpy甚至在一定程度上也是如此。
它有一個(gè)GIL(l)
Python速度緩慢的主要原因之一是存在GIL(全局解釋器鎖定),該功能一次只能執(zhí)行一個(gè)線程。 雖然這可以提高單線程的性能,但是它限制了并行性,在這種并行性中,開發(fā)人員必須實(shí)現(xiàn)多處理程序而不是多線程程序,以提高速度。
對(duì)于內(nèi)存密集型任務(wù)不是很好的
當(dāng)對(duì)象超出范圍時(shí),Python會(huì)自動(dòng)進(jìn)行垃圾回收。 它旨在消除C和C ++涉及的很多內(nèi)存管理復(fù)雜性。 由于指定數(shù)據(jù)類型的靈活性(或缺乏靈活性),Python消耗的內(nèi)存量可能會(huì)迅速爆炸。
此外,Python可能不會(huì)注意到的一些錯(cuò)誤可能會(huì)在運(yùn)行時(shí)彈出,最終使開發(fā)過程變慢了很多。
移動(dòng)計(jì)算的弱勢(shì)存在
從臺(tái)式機(jī)到智能手機(jī)的巨大轉(zhuǎn)變,很明顯,需要更強(qiáng)大的語言來構(gòu)建用于手機(jī)的軟件。 盡管Python在臺(tái)式機(jī)和服務(wù)器平臺(tái)上具有相當(dāng)大的代表性,但是由于缺乏強(qiáng)大的移動(dòng)計(jì)算處理能力,Python往往會(huì)在移動(dòng)開發(fā)方面失去優(yōu)勢(shì)。
近年來,在這一領(lǐng)域取得了許多進(jìn)步,但是這些新添加的庫甚至與強(qiáng)大的競(jìng)爭(zhēng)對(duì)手(如Kotlin,Swift和Java)并不接近。
其他語言的興起
最近,Julia,Rust和Swift等較新的語言突然出現(xiàn),它們借鑒了Python,C / C ++和Java的許多優(yōu)秀設(shè)計(jì)概念-Rust幾乎保證了運(yùn)行時(shí)的內(nèi)存安全性和并發(fā)性,并提供一流的 與WebAssembly的互操作性; Swift對(duì)LLVM編譯器工具鏈的支持幾乎與C一樣快,而Julia為I / O密集型任務(wù)提供了異步I / O,并且速度非常快。
結(jié)論
Python從未被構(gòu)建為優(yōu)秀的編程語言。 它從未被構(gòu)建為可以使用C / C ++和Java。 它被構(gòu)建為一種通用的編程語言,強(qiáng)調(diào)了人類可讀的,以英語為中心的語法,從而可以快速開發(fā)程序和應(yīng)用程序。
就像一天結(jié)束時(shí)的所有其他語言一樣,Python是一種工具。 有時(shí),它是很好的工具。 有時(shí)候不是。 通常,這"還好"。
那么,Python作為一種編程語言是否正在消亡?
我?guī)缀醪贿@么認(rèn)為。
它失去魅力了嗎?
啊,也許只是一點(diǎn)點(diǎn)。 一點(diǎn)點(diǎn)。