Python 何時會被取代?

1240

如下是譯文:python

Python通過了幾十年的努力才獲得了編程社區的賞識。自2010年以來,Python獲得了蓬勃發展,並最終超越了C、C#、Java和JavaScript。程序員

可是,這種趨勢將持續到何時?什麼時候Python會被其餘語言取代?被取代的緣由又是什麼呢?編程

對於Python被淘汰出局的確切日期有不少猜想,它可能會像科幻小說同樣成爲過去。在本文中,我將討論促成Python大面積普及的優點,以及未來致使它隕落的弱點。瀏覽器

1240

促成Python流行的因素安全

經過Stack Overflow發展趨勢就能夠洞悉Python的成功。考慮到StackOverflow的規模,咱們能夠認爲這是衡量編程語言流行度的一個很好的指標。服務器

儘管在過去幾年中,R語言的發展一直處於平穩狀態,不少其餘編程語言已開始穩步降低,但Python的增加彷佛勢不可擋。在全部StackOverflow的問題中,帶有「python」標籤的佔到了14%,並且這種趨勢還在上升。其中的緣由有不少。app

Python是一種古老的語言機器學習

Python於90年代問世。這不只意味着Python有足夠的時間成長,並且還擁有了一個龐大的支持社區。編程語言

所以,若是你在使用Python進行編程時遇到任何問題,只需上網搜索就能夠獲得答案。由於老是會有人在這以前就遇到了這個問題,併爲此撰寫了一些有用的資料。ide

對初學者很友好

Python對初學者友好的緣由不只僅是由於它已經存在了數十年,予以程序員足夠的時間編寫出色的教程,並且還由於Python的語法很是易於理解。

首先,無需指定數據類型。你只需聲明一個變量便可,Python會根據上下文判斷這個變量是整數、浮點數、布爾值仍是其餘類型。對於初學者來講,這是一個巨大的優點。若是你有過使用C++編程的經歷,那麼就會懂得只由於你錯把浮點數定義成了整數,就致使程序沒法經過編譯有多麼難受了。

此外,比較Python和C++代碼,不難發現Python有多麼易於理解。儘管C++在設計時考慮到了英語,但與Python代碼相比,閱讀C++的代碼仍是至關坎坷。

用途普遍

因爲Python已經存在了很長時間,所以開發人員爲之開發出了各色的軟件包。現在,不管遇到什麼問題,你均可以找到相關的軟件包。

想處理數字、向量和矩陣?那麼就來試試 NumPy 吧。

想進行技術和工程的計算?那麼就來試試 SciPy 吧。

想操做和分析大數據?那麼就來試試 Pandas 吧。

想學習人工智能?爲何不試試 Scikit-Learn 呢。

不管你須要進行哪方面的計算任務,均可以找到相關的Python軟件包。因爲過去幾年中機器學習的迅猛發展,Python已經站在了時代發展的最前沿。

1240

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最大的問題。

1240

Python何時會被取代?

現在,編程語言市場上涌現了新的競爭力量:

Rust提供了與Python相同的安全性——不會意外覆蓋任何變量。可是,它經過全部權和借用的概念解決了效率的問題。根據StackOverflow Insights,Rust是近幾年最受歡迎的編程語言。

Go 與 Python 同樣很是適合初學者。語言自己很是簡單,維護代碼更加簡單。此外,有趣的是,Go開發人員是市場上收入最高的程序員之一。

Julia是一種很是新的語言,可與Python正面競爭。Julia填補了大規模技術計算的空白:之前,人們一般都須要使用Python或Matlab編寫代碼,而後再使用C++庫修補整個程序,由於C++庫是大規模必不可少的。現在,人們可使用Julia,而沒必要在兩種語言之間掙扎。

儘管市場上還有其餘語言,但Rust、Go和Julia 能夠彌補Python的弱點。全部這些語言在即將到來的技術中都有出色的表現,最典型的就是人工智能。儘管它們的市場份額仍較小,但根據StackOverflow的數據顯示,這些語言的發展呈現出明顯的上升趨勢。

現在,Python無處不在,咱們還須要五年甚至更長的時間,纔有可能看到Python被新語言所替代。

就目前而言,咱們很難判斷哪一種語言有可能替代Python,是Rust、Go、Julia抑或是其餘的新語言。但鑑於Python體系結構中最基本的性能問題,其終將難逃被人替代的命運。

相關文章
相關標籤/搜索