Python會在什麼時候被其他語言取代
Python經過了幾十年的努力才得到了程式設計社群的賞識。自2010年以來,Python得到了蓬勃發展,並最終超越了C、C#、Java和JavaScript。
但是,這種趨勢將持續到什麼時候?何時Python會被其他語言取代?被取代的原因又是什麼呢?
對於Python被淘汰出局的確切日期有很多猜測,它可能會像科幻小說一樣成為過去。在本文中,我將討論促成Python大面積普及的優勢,以及將來導致它隕落的弱點。
促成Python流行的因素
透過Stack Overflow發展趨勢就可以洞悉Python的成功。考慮到StackOverflow的規模,我們可以認為這是衡量程式語言流行度的一個很好的指標。
儘管在過去幾年中,R語言的發展一直處於平穩狀態,很多其他程式語言已開始穩步下降,但Python的增長似乎勢不可擋。在所有StackOverflow的問題中,帶有“python”標籤的佔到了14%,而且這種趨勢還在上升。其中的原因有很多。
Python是一種古老的語言
Python於90年代問世。這不僅意味著Python有足夠的時間成長,而且還擁有了一個龐大的支援社群。
因此,如果你在使用Python進行程式設計時遇到任何問題,只需上網搜尋就可以得到答案。因為總是會有人在這之前就遇到了這個問題,併為此撰寫了一些有用的資料。
對初學者很友好
Python對初學者友好的原因不僅僅是因為它已經存在了數十年,予以程式設計師足夠的時間編寫出色的教程,而且還因為Python的語法非常易於理解。
首先,無需指定資料型別。你只需宣告一個變數即可,Python會根據上下文判斷這個變數是整數、浮點數、布林值還是其他型別。對於初學者來說,這是一個巨大的優勢。如果你有過使用C++程式設計的經歷,那麼就會懂得只因為你錯把浮點數定義成了整數,就導致程式無法透過編譯有多麼難受了。
此外,比較Python和C++程式碼,不難發現Python有多麼易於理解。儘管C++在設計時考慮到了英語,但與Python程式碼相比,閱讀C++的程式碼還是相當坎坷。
用途廣泛
由於Python已經存在了很長時間,因此開發人員為之開發出了各色的軟體包。如今,無論遇到什麼問題,你都可以找到相關的軟體包。
- 想處理數字、向量和矩陣?那麼就來試試 NumPy 吧。
- 想進行技術和工程的計算?那麼就來試試 SciPy 吧。
- 想操作和分析大資料?那麼就來試試 Pandas 吧。
- 想學習人工智慧?為什麼不試試 Scikit-Learn 呢。
無論你需要進行哪方面的計算任務,都可以找到相關的Python軟體包。由於過去幾年中機器學習的迅猛發展,Python已經站在了時代發展的最前沿。
Python的缺點,這些缺點是否致命?
透過上述討論,你可以想象在很長一段時間內Python的發展都勢不可擋。然而,Python也逃不開一切技術的命運,它也有自己的弱點。接下來,我將逐個介紹Python的重大缺陷,並評估這些缺陷是否致命。
速度
Python很慢,非常非常慢。平均而言,使用Python完成某個任務所需的時間是使用任何其他語言的2–10倍。
其中的原因有很多。其中之一是因為Python是動態型別的,別忘了你不需要像其他語言一樣指定資料型別。這意味著記憶體的耗費非常大,因為在任何情況下程式都需要為每個變數保留足夠的空間。而巨大的記憶體使用量必然需要耗費大量的計算時間。
另一個原因是Python一次只能執行一個任務。這是靈活的資料型別帶來的結果,Python需要確保每個變數只有一個資料型別,而並行程式可能會在這一點上出問題。
相比之下,普通的Web瀏覽器一次可以執行十幾個不同的執行緒。當然其中還涉及別的因素。
但最終所有的速度問題都不打緊。因為電腦和伺服器的價格越來越低,我們談論的也只不過是幾分之一秒的問題。終端使用者並不真正在乎他們的應用載入需要0.001還是0.01秒。
範圍
最初,Python是動態作用域。這基本上意味著,為了評估表示式,編譯器首先需要搜尋當前塊,然後依次搜尋所有呼叫函式。
動態作用域的問題在於,每個表示式都需要在所有上下文中進行測試,這很繁瑣。這就是為什麼大多數現代程式語言都使用靜態作用域。
Python曾嘗試過渡到靜態作用域,但搞砸了。通常,內部作用域(例如函式中的函式)能夠檢視和更改外部作用域。在Python中,內部作用域只能看到外部作用域,但不能更改。因此引發了很多混亂。
Lambdas
儘管Python非常靈活,但Lambdas的使用還是有一定的侷限性。Lambda只能是Python中的表示式,而不能是語句。
另一方面,變數宣告和語句始終是語句,這意味著它們不能使用Lambda。
在Python中,表示式和語句之間的區別相當隨意,這是其他程式語言都沒有的問題。
空白
在Python中,你需要使用空白和縮排來表示不同級別的程式碼。這種格式具有視覺吸引力,而且易於理解。
其他程式語言(例如C++)都需要依賴大括號和分號。儘管這可能在視覺上沒有那麼強的吸引力,而且對初學者不夠友好,但可以提高程式碼的可維護性。在大型專案中,這種方式更為妥當。
Haskell等新興的程式語言解決了這個問題:它們依賴空白,但同時也為那些希望不用空白的人提供了另一種語法。
移動開發
我們目睹了從桌上型電腦向智慧手機的轉變,很明顯,我們需要強大的語言來構建移動軟體。
然而,使用Python開發的移動應用並不多。這並不意味著Python無法開發移動應用,你可以試試看一個名為 Kivy 的 Python 包。
但是,Python的設計被沒有考慮到移動裝置。因此,即使Python可以應付基本的任務,但我們最好還是選擇專門為移動應用程式開發而建立的語言。廣泛用於移動程式設計的語言包括:React Native、Flutter、Iconic和Cordova。
我們需要明確的是,膝上型電腦和臺式計算機已經存在很多年了。然而,由於移動裝置的使用已然超越了桌面裝置,因此我們肯定地說,學習Python不足以成為經驗豐富的全方面開發人員。
執行時錯誤
Python不需要首先編譯,然後再執行。相反,它會在每次執行時編譯,因此所有程式設計上的錯誤都會在執行時顯示出來。這會導致效能下降、浪費時間,而且還需要進行大量測試。
對於初學者來說,這未必是壞事,因為測試可以教會他們很多知識。然而,對於經驗豐富的開發人員而言,必須使用Python除錯複雜的程式很令人頭疼。效能欠缺是Python最大的問題。
Python什麼時候會被取代?
如今,程式語言市場上湧現了新的競爭力量:
- Rust提供了與Python相同的安全性——不會意外覆蓋任何變數。但是,它透過所有權和借用的概念解決了效率的問題。根據StackOverflow Insights,Rust是近幾年最受歡迎的程式語言。
- Go 與 Python 一樣非常適合初學者。語言本身非常簡單,維護程式碼更加簡單。此外,有趣的是,Go開發人員是市場上收入最高的程式設計師之一。
- Julia是一種非常新的語言,可與Python正面競爭。Julia填補了大規模技術計算的空白:以前,人們通常都需要使用Python或Matlab編寫程式碼,然後再使用C++庫修補整個程式,因為C++庫是大規模必不可少的。如今,人們可以使用Julia,而不必在兩種語言之間掙扎。
儘管市場上還有其他語言,但Rust、Go和Julia 可以彌補Python的弱點。所有這些語言在即將到來的技術中都有出色的表現,最典型的就是人工智慧。儘管它們的市場份額仍較小,但根據StackOverflow的資料顯示,這些語言的發展呈現出明顯的上升趨勢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2704141/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 六星教育:Python為什麼這麼火?未來它將會被什麼語言取代?Python
- python語言與其他語言有什麼不同?Python
- Python語言與其他語言有什麼不同?優勢介紹Python
- 為什麼Python要比其他語言更受喜歡?Python
- Python對比其他語言有什麼優劣勢?Python
- Python和其他流行的程式語言有什麼區別?Python
- TCP會被UDP取代麼?TCPUDP
- Python對比其他語言有什麼好處?Python就業怎麼樣?Python就業
- Python這麼火,它與其他程式語言有什麼區別?Python
- Python是什麼語言?Python底層語言是什麼?Python
- python什麼時候縮排Python
- Python為啥這麼牛?跟其他語言相比究竟有什麼優勢?Python
- python語言是什麼Python
- Python的類什麼時候用Python
- go與其他語言有什麼區別?學習go語言怎麼樣Go
- SoftReference 到底在什麼時候被回收 ? 如何量化記憶體不足 ?記憶體
- shiro 什麼時候會進入 doGetAuthorizationInfo() ?
- Go語言什麼時候該使用指標 與 指標使用分析Go指標
- Cookie 是否會被取代Cookie
- 為什麼機器學習會選擇Python語言?機器學習Python
- 什麼時候會傳送options請求
- mysql什麼時候會發生file sortMySql
- MySQL什麼時候會使用內部臨時表?MySql
- Python語言怎麼樣?為什麼學Python?Python
- try{}裡有一個return語句,那麼緊跟在這個try後的finally{}裡的code會不會被執行,什麼時候被執行?
- python中什麼時候使用自定義類Python
- 請問display:inline-block在什麼時候會顯示間隙?inlineBloC
- 現在 opencv 對其他語言支援如何?OpenCV
- C++中什麼時候用move,什麼時候用forward?C++Forward
- Python是什麼語言?有什麼優劣勢?Python
- 為何Python會被選用為駭客語言呢?Python
- 什麼時候需要自動化什麼時候用自動化?
- 什麼是程式語言,什麼是Python直譯器Python
- 什麼時候釋出
- 什麼時候能解脫
- 美國公司年審時間是在什麼時候的?
- python爬蟲是什麼?為什麼用python語言寫爬蟲?Python爬蟲
- 為什麼機器學習會選擇Python語言?很簡單!機器學習Python