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

當前位置:首頁 > 科技  > 軟件

到底該不該使用Python?

來源: 責編: 時間:2023-08-14 22:00:40 352觀看
導讀作者 | JOS VISSER編譯 | 王瑞平最近,大家總在吐槽Python:“雖然它是一種不錯的語言,但不適用于專業領域。”前不久,我在LinkedIn上找到一篇帖子,主要建議初級開發人員應該學習哪種語言,以便獲得更好的工作機會,Python憑借出

作者 | JOS VISSERbLZ28資訊網——每日最新資訊28at.com

編譯 | 王瑞平bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

最近,大家總在吐槽Python:“雖然它是一種不錯的語言,但不適用于專業領域。”bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

前不久,我在LinkedIn上找到一篇帖子,主要建議初級開發人員應該學習哪種語言,以便獲得更好的工作機會,Python憑借出色的表現穩居第一。

bLZ28資訊網——每日最新資訊28at.com

圖片圖片bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

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

bLZ28資訊網——每日最新資訊28at.com

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

bLZ28資訊網——每日最新資訊28at.com

圖片圖片bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

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

bLZ28資訊網——每日最新資訊28at.com

雖然Python如此受歡迎,但它能否持續流行依舊是一個重大問題,很多用戶普遍認為,如果持續使用將會使行業倒退好幾年。bLZ28資訊網——每日最新資訊28at.com

1、局限:Python無法開發大型應用程序

bLZ28資訊網——每日最新資訊28at.com

Python對于開發大型應用程序不太友好,在工程化實踐中需要特殊的技術支持。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

“我曾用Python編寫過大型應用程序很多年。由于Python入門非常簡單,在編寫大型應用程序時就像用樂高積木構建核反應堆一樣。”原作者在文章中形象地比喻道。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

“但是,現在‘反應堆’已經運行很久,輻射泄漏到處都有,我們需要到處‘貼新磚’讓‘反應堆’持續運轉。”bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

實際上,目前唯一能做的就是將“反應堆”封裝在混凝土中讓它冷卻下來,然后再用合適的建筑材料構建出一個新的。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

認為“Python無法開發大型應用程序”的網友認為它“不太友好”,在工程化實踐中需要特殊技術支持。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

圖片圖片bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

也有反對者認為:在大型項目中,與影響更大的其它因素相比,編程語言的語法、語義、范式等幾乎無關緊要。團隊經驗和熟悉度、開發管理、流程、實踐、支持工具、文檔、語言生態系統、語言成熟度、管理支持等都會對項目結果產生更大的影響。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

另外,從技術層面來講,質疑Python無法開發大型編程語言只能反映提問者對相關開發缺乏了解。這些質疑一是源于Python的動態類型特性,使類型推斷變得困難,對代碼的靜態檢查和重構十分不利;二是由于Python代碼沒有編譯過程,因此缺少編譯時檢查錯誤機制。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

關于動態類型特性質疑,Python從3.3版本起就引入類型聲明,因此,只要遵循規范編寫代碼,類型推斷和代碼重構就不是問題。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

不久前,ChatGPT的問世也證明了Python可以寫出高性能、可擴展性強的大型分布式計算平臺—Ray。目前,這個平臺已匯聚超過1億的月活躍用戶。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

“糟糕的應用程序架構是絕大多數應用產生性能瓶頸的原因,而不應該由開發語言來背黑鍋。”有些評論者這樣認為。bLZ28資訊網——每日最新資訊28at.com

2、速度慢

bLZ28資訊網——每日最新資訊28at.com

誠然,Python與其它開發語言相比,在運行速度方面確實落后不少。究其根源,還是由于Python之父認為不需要過多關注Python的速度問題,認為它已經足夠快了。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

確實,對于99%以上的任務來說,Python的速度夠快,快到足以支撐早期Google和Dropbox。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

自那時起,Python的速度又有了顯著提升,但開發者仍要求Python運行得更快。因為,無論人們已經使用Python構建出算力多么驚人的計算平臺,它的計算能力在很多場景下依然更慢。bLZ28資訊網——每日最新資訊28at.com

3、功能差

bLZ28資訊網——每日最新資訊28at.com

當然,Python是一種靈活的和duck類型的語言:我們鍵入代碼、保存它,然后僅在運行時才能根據輸入的數據確定語句始終有效、有時有效還是根本不可能實現。 bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

此外,你在用Python編寫程序時,只能部分控制進入該函數的數據,需要嚴格檢查所有輸入的數據。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

更糟糕的是,Python的duck式輸入方式可能會引入“可怕”代碼,這會帶來麻煩。bLZ28資訊網——每日最新資訊28at.com

4、錯誤百出

bLZ28資訊網——每日最新資訊28at.com

我在用Python編寫大型應用程序的這些年里,經歷過一些可怕的事情;如果這些應用程序是用理性的、安全的語言編寫的,這些事就不會發生。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

*在幾年前的一個例子中,我設法說服組織用Rust重寫系統,效果非常不錯!bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

實際上,我曾多次在社區中發布用Python編寫的大型應用程序新版本,結果卻立即被錯誤“吞噬”;這些錯誤都是由Python代碼異常導致的。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

*Python的捍衛者會說,這不是語言的缺陷,而是代碼審查和測試方法的缺陷。bLZ28資訊網——每日最新資訊28at.com

*他們錯了!理論上,測試方法主要是查看每一行代碼并檢查每個輸入和場景,但實際上這并不可能!bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

好的編程語言的特點之一是:你不必檢查和測試內存中每個相關位置的排列;如果必須詳盡地檢查和測試每個“a=b+c”,程序將可能永遠無法應用于實踐。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

我會經常查看Python函數,并想了解是否有人實際調用了它們以及攜帶了哪些參數。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

我也經常不得不“求助”代碼庫的全文搜索功能尋找調用位置;不幸的是,即便沒有輸出任何結果,當我刪除相應函數時,程序依然會崩潰;就算程序沒有立即崩潰,也無法判斷程序是否會在某種情況下崩潰。bLZ28資訊網——每日最新資訊28at.com

5、分叉進程,耗盡內存

bLZ28資訊網——每日最新資訊28at.com

用Python的另一個問題是內存。我的筆記本電腦有10個CPU內核,其中,Python應用程序大約占用1.2個。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

這該怎么辦呢?幸運的是,我可以在Python中使用分叉工作進程的功能處理請求,確保所有核心都能正常使用。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

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

bLZ28資訊網——每日最新資訊28at.com

分叉工作進程還有另一個影響:Python使用引用計數法擊敗了寫時復制。為控制引用計數,保存只讀變量的內存塊也被寫入,從而耗費了一定的內存。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

解決這個問題的有效方法是:讓編譯器對所有由主進程創建和由worker進程繼承的變量使用參考數值,而不必觸及到具有該參考數值的引用計數。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

這是超級聰明的解決方案,但我認為應該沒這個必要。如果你需要破解編譯器才能讓Python為你所用,那這種語言又有什么用呢?bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

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

6、將Python替換成GO

bLZ28資訊網——每日最新資訊28at.com

當我對Python忍無可忍之時就會轉向Go,它使用起來幾乎與Python同樣容易、安全,還能快速構建系統并生成高度優化的二進制本機代碼文件。bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

雖然Go也并不是完美的,但是,如果你想可靠和快速地編寫代碼,并在代碼失控時可以調試和重構,Go比Python好很多!bLZ28資訊網——每日最新資訊28at.com

bLZ28資訊網——每日最新資訊28at.com

參考資料:

https://www.zhihu.com/question/321166662/answer/2937406779?utm_id=0bLZ28資訊網——每日最新資訊28at.com

https://www.zhihu.com/question/321166662/answer/2937406779bLZ28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: CSS 如何改變網格布局偶數行的排序?

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

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術,可以幫助我們寫出更加優雅、泛用的函數。本文將首先介紹柯里化和反柯里化的概念、實現原理和應用
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • OPPO、vivo、小米等國內廠商Q2在印度智能手機市場份額依舊高達55%

    7月20日消息,據外媒報道,研究機構的報告顯示,在全球智能手機出貨量同比仍在下滑的大背景下,印度這一有潛力的市場也未能幸免,出貨量同比也有下滑,多家廠
  • 聯想的ThinkBook Plus下一版曝光,鍵盤旁邊塞個平板

    ThinkBook Plus 是聯想的一個特殊筆記本類別,它在封面放入了一塊墨水屏,也給人留下了較為深刻的印象。據有人爆料,聯想的下一款 ThinkBook Plus 可能更特殊,它
  • 與兆芯合作 聯想推出全新旗艦版筆記本電腦開天N7系列

    聯想與兆芯合作推出全新聯想旗艦版筆記本電腦開天 N7系列。這個系列采用兆芯KX-6640MA處理器平臺,KX-6640MA 處理器是采用了陸家嘴架構,16nm 工藝,4 核 4 線
Top 主站蜘蛛池模板: 墨脱县| 平武县| 新兴县| 婺源县| 通许县| 嫩江县| 永济市| 濮阳县| 营山县| 韶山市| 托里县| 宜兰市| 灵川县| 嘉善县| 美姑县| 兰考县| 班戈县| 紫金县| 出国| 思茅市| 吉首市| 潼关县| 建湖县| 普格县| 巫溪县| 册亨县| 西乌| 南阳市| 大悟县| 台湾省| 论坛| 金华市| 云阳县| 烟台市| 盐城市| 临武县| 南乐县| 德化县| 遵义市| 万宁市| 梅州市|