日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

到底該不該使用Python?

來(lái)源: 責(zé)編: 時(shí)間:2023-08-14 22:00:40 328觀看
導(dǎo)讀作者 | JOS VISSER編譯 | 王瑞平最近,大家總在吐槽Python:“雖然它是一種不錯(cuò)的語(yǔ)言,但不適用于專業(yè)領(lǐng)域。”前不久,我在LinkedIn上找到一篇帖子,主要建議初級(jí)開(kāi)發(fā)人員應(yīng)該學(xué)習(xí)哪種語(yǔ)言,以便獲得更好的工作機(jī)會(huì),Python憑借出

作者 | JOS VISSERw7f28資訊網(wǎng)——每日最新資訊28at.com

編譯 | 王瑞平w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

最近,大家總在吐槽Python:“雖然它是一種不錯(cuò)的語(yǔ)言,但不適用于專業(yè)領(lǐng)域。”w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

前不久,我在LinkedIn上找到一篇帖子,主要建議初級(jí)開(kāi)發(fā)人員應(yīng)該學(xué)習(xí)哪種語(yǔ)言,以便獲得更好的工作機(jī)會(huì),Python憑借出色的表現(xiàn)穩(wěn)居第一。

w7f28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

 其它證據(jù)同樣表明:Python確實(shí)太受歡迎了!近日,TIOBE編程社區(qū)公布了“2023年8月編程語(yǔ)言排行榜”。

w7f28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)顯示:Python依然排名第一,占比13.33%;C語(yǔ)言緊隨其后,排行第二,占比11.41%;C++位列第三,占比10.63%,與C語(yǔ)言差距為0.78%。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

此外,Java和C#分別排在第四和第五位,占比分別為10.33%和7.04%。JavaScript在本月依然保持榜單第六位,占比為3.29%。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

雖然Python如此受歡迎,但它能否持續(xù)流行依舊是一個(gè)重大問(wèn)題,很多用戶普遍認(rèn)為,如果持續(xù)使用將會(huì)使行業(yè)倒退好幾年。w7f28資訊網(wǎng)——每日最新資訊28at.com

1、局限:Python無(wú)法開(kāi)發(fā)大型應(yīng)用程序

w7f28資訊網(wǎng)——每日最新資訊28at.com

Python對(duì)于開(kāi)發(fā)大型應(yīng)用程序不太友好,在工程化實(shí)踐中需要特殊的技術(shù)支持。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

“我曾用Python編寫過(guò)大型應(yīng)用程序很多年。由于Python入門非常簡(jiǎn)單,在編寫大型應(yīng)用程序時(shí)就像用樂(lè)高積木構(gòu)建核反應(yīng)堆一樣。”原作者在文章中形象地比喻道。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

“但是,現(xiàn)在‘反應(yīng)堆’已經(jīng)運(yùn)行很久,輻射泄漏到處都有,我們需要到處‘貼新磚’讓‘反應(yīng)堆’持續(xù)運(yùn)轉(zhuǎn)。”w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際上,目前唯一能做的就是將“反應(yīng)堆”封裝在混凝土中讓它冷卻下來(lái),然后再用合適的建筑材料構(gòu)建出一個(gè)新的。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

認(rèn)為“Python無(wú)法開(kāi)發(fā)大型應(yīng)用程序”的網(wǎng)友認(rèn)為它“不太友好”,在工程化實(shí)踐中需要特殊技術(shù)支持。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

也有反對(duì)者認(rèn)為:在大型項(xiàng)目中,與影響更大的其它因素相比,編程語(yǔ)言的語(yǔ)法、語(yǔ)義、范式等幾乎無(wú)關(guān)緊要。團(tuán)隊(duì)經(jīng)驗(yàn)和熟悉度、開(kāi)發(fā)管理、流程、實(shí)踐、支持工具、文檔、語(yǔ)言生態(tài)系統(tǒng)、語(yǔ)言成熟度、管理支持等都會(huì)對(duì)項(xiàng)目結(jié)果產(chǎn)生更大的影響。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

另外,從技術(shù)層面來(lái)講,質(zhì)疑Python無(wú)法開(kāi)發(fā)大型編程語(yǔ)言只能反映提問(wèn)者對(duì)相關(guān)開(kāi)發(fā)缺乏了解。這些質(zhì)疑一是源于Python的動(dòng)態(tài)類型特性,使類型推斷變得困難,對(duì)代碼的靜態(tài)檢查和重構(gòu)十分不利;二是由于Python代碼沒(méi)有編譯過(guò)程,因此缺少編譯時(shí)檢查錯(cuò)誤機(jī)制。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

關(guān)于動(dòng)態(tài)類型特性質(zhì)疑,Python從3.3版本起就引入類型聲明,因此,只要遵循規(guī)范編寫代碼,類型推斷和代碼重構(gòu)就不是問(wèn)題。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

不久前,ChatGPT的問(wèn)世也證明了Python可以寫出高性能、可擴(kuò)展性強(qiáng)的大型分布式計(jì)算平臺(tái)—Ray。目前,這個(gè)平臺(tái)已匯聚超過(guò)1億的月活躍用戶。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

“糟糕的應(yīng)用程序架構(gòu)是絕大多數(shù)應(yīng)用產(chǎn)生性能瓶頸的原因,而不應(yīng)該由開(kāi)發(fā)語(yǔ)言來(lái)背黑鍋。”有些評(píng)論者這樣認(rèn)為。w7f28資訊網(wǎng)——每日最新資訊28at.com

2、速度慢

w7f28資訊網(wǎng)——每日最新資訊28at.com

誠(chéng)然,Python與其它開(kāi)發(fā)語(yǔ)言相比,在運(yùn)行速度方面確實(shí)落后不少。究其根源,還是由于Python之父認(rèn)為不需要過(guò)多關(guān)注Python的速度問(wèn)題,認(rèn)為它已經(jīng)足夠快了。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

確實(shí),對(duì)于99%以上的任務(wù)來(lái)說(shuō),Python的速度夠快,快到足以支撐早期Google和Dropbox。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

自那時(shí)起,Python的速度又有了顯著提升,但開(kāi)發(fā)者仍要求Python運(yùn)行得更快。因?yàn)椋瑹o(wú)論人們已經(jīng)使用Python構(gòu)建出算力多么驚人的計(jì)算平臺(tái),它的計(jì)算能力在很多場(chǎng)景下依然更慢。w7f28資訊網(wǎng)——每日最新資訊28at.com

3、功能差

w7f28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然,Python是一種靈活的和duck類型的語(yǔ)言:我們鍵入代碼、保存它,然后僅在運(yùn)行時(shí)才能根據(jù)輸入的數(shù)據(jù)確定語(yǔ)句始終有效、有時(shí)有效還是根本不可能實(shí)現(xiàn)。 w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

此外,你在用Python編寫程序時(shí),只能部分控制進(jìn)入該函數(shù)的數(shù)據(jù),需要嚴(yán)格檢查所有輸入的數(shù)據(jù)。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

更糟糕的是,Python的duck式輸入方式可能會(huì)引入“可怕”代碼,這會(huì)帶來(lái)麻煩。w7f28資訊網(wǎng)——每日最新資訊28at.com

4、錯(cuò)誤百出

w7f28資訊網(wǎng)——每日最新資訊28at.com

我在用Python編寫大型應(yīng)用程序的這些年里,經(jīng)歷過(guò)一些可怕的事情;如果這些應(yīng)用程序是用理性的、安全的語(yǔ)言編寫的,這些事就不會(huì)發(fā)生。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

*在幾年前的一個(gè)例子中,我設(shè)法說(shuō)服組織用Rust重寫系統(tǒng),效果非常不錯(cuò)!w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際上,我曾多次在社區(qū)中發(fā)布用Python編寫的大型應(yīng)用程序新版本,結(jié)果卻立即被錯(cuò)誤“吞噬”;這些錯(cuò)誤都是由Python代碼異常導(dǎo)致的。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

*Python的捍衛(wèi)者會(huì)說(shuō),這不是語(yǔ)言的缺陷,而是代碼審查和測(cè)試方法的缺陷。w7f28資訊網(wǎng)——每日最新資訊28at.com

*他們錯(cuò)了!理論上,測(cè)試方法主要是查看每一行代碼并檢查每個(gè)輸入和場(chǎng)景,但實(shí)際上這并不可能!w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

好的編程語(yǔ)言的特點(diǎn)之一是:你不必檢查和測(cè)試內(nèi)存中每個(gè)相關(guān)位置的排列;如果必須詳盡地檢查和測(cè)試每個(gè)“a=b+c”,程序?qū)⒖赡苡肋h(yuǎn)無(wú)法應(yīng)用于實(shí)踐。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

我會(huì)經(jīng)常查看Python函數(shù),并想了解是否有人實(shí)際調(diào)用了它們以及攜帶了哪些參數(shù)。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

我也經(jīng)常不得不“求助”代碼庫(kù)的全文搜索功能尋找調(diào)用位置;不幸的是,即便沒(méi)有輸出任何結(jié)果,當(dāng)我刪除相應(yīng)函數(shù)時(shí),程序依然會(huì)崩潰;就算程序沒(méi)有立即崩潰,也無(wú)法判斷程序是否會(huì)在某種情況下崩潰。w7f28資訊網(wǎng)——每日最新資訊28at.com

5、分叉進(jìn)程,耗盡內(nèi)存

w7f28資訊網(wǎng)——每日最新資訊28at.com

用Python的另一個(gè)問(wèn)題是內(nèi)存。我的筆記本電腦有10個(gè)CPU內(nèi)核,其中,Python應(yīng)用程序大約占用1.2個(gè)。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

這該怎么辦呢?幸運(yùn)的是,我可以在Python中使用分叉工作進(jìn)程的功能處理請(qǐng)求,確保所有核心都能正常使用。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

不幸的是,分叉進(jìn)程的操作很快就耗盡了內(nèi)存,所以我決定在處理完一定數(shù)量的請(qǐng)求后自行終止分叉,然后由Linux進(jìn)行內(nèi)存管理。雖然這并不是Python本身的問(wèn)題,但Python使內(nèi)存管理變得更加糟糕。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

分叉工作進(jìn)程還有另一個(gè)影響:Python使用引用計(jì)數(shù)法擊敗了寫時(shí)復(fù)制。為控制引用計(jì)數(shù),保存只讀變量的內(nèi)存塊也被寫入,從而耗費(fèi)了一定的內(nèi)存。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

解決這個(gè)問(wèn)題的有效方法是:讓編譯器對(duì)所有由主進(jìn)程創(chuàng)建和由worker進(jìn)程繼承的變量使用參考數(shù)值,而不必觸及到具有該參考數(shù)值的引用計(jì)數(shù)。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

這是超級(jí)聰明的解決方案,但我認(rèn)為應(yīng)該沒(méi)這個(gè)必要。如果你需要破解編譯器才能讓Python為你所用,那這種語(yǔ)言又有什么用呢?w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

總之,Python使編寫可靠、易于維護(hù)和快速的代碼變得非常困難。w7f28資訊網(wǎng)——每日最新資訊28at.com

6、將Python替換成GO

w7f28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)我對(duì)Python忍無(wú)可忍之時(shí)就會(huì)轉(zhuǎn)向Go,它使用起來(lái)幾乎與Python同樣容易、安全,還能快速構(gòu)建系統(tǒng)并生成高度優(yōu)化的二進(jìn)制本機(jī)代碼文件。w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

雖然Go也并不是完美的,但是,如果你想可靠和快速地編寫代碼,并在代碼失控時(shí)可以調(diào)試和重構(gòu),Go比Python好很多!w7f28資訊網(wǎng)——每日最新資訊28at.com

w7f28資訊網(wǎng)——每日最新資訊28at.com

參考資料:

https://www.zhihu.com/question/321166662/answer/2937406779?utm_id=0w7f28資訊網(wǎng)——每日最新資訊28at.com

https://www.zhihu.com/question/321166662/answer/2937406779w7f28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5699-0.html到底該不該使用Python?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: CSS 如何改變網(wǎng)格布局偶數(shù)行的排序?

下一篇: SpringBoot獲取Request的三種方法!

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 主站蜘蛛池模板: 台中市| 黑龙江省| 长岛县| 沾益县| 巫溪县| 申扎县| 阿拉善盟| 耒阳市| 沐川县| 沂源县| 池州市| 邳州市| 敖汉旗| 大田县| 元氏县| 正阳县| 凤阳县| 江川县| 阿坝| 军事| 遂宁市| 屏边| 霸州市| 钟山县| 栾城县| 平阳县| 益阳市| 甘泉县| 奎屯市| 扎兰屯市| 建宁县| 左权县| 二连浩特市| 土默特左旗| 怀仁县| 钦州市| 溆浦县| 宁城县| 安图县| 广宁县| 安国市|