0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python語(yǔ)言將如何繼續(xù)發(fā)展?

馬哥Linux運(yùn)維 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師陳翠 ? 2018-10-05 09:13 ? 次閱讀

不管我們?nèi)绾蜗M鸓HP永遠(yuǎn)天下第一,亦或是Java永久無(wú)敵,更或者希望C語(yǔ)言永遠(yuǎn)是最好的語(yǔ)言。

然而,筆者今天搜索百度指數(shù)得知,Python的指數(shù),已經(jīng)高于Java和PHP的指數(shù)之和。

而Python的版本迭代也是嗖嗖的,那么新版本4.0和3.0究竟有什么區(qū)別呢?今天分享一篇Python軟件基金會(huì)的董事會(huì)成員、CPython的核心開(kāi)發(fā)人員Nick Coghlan的文章,希望你會(huì)感興趣。

筆者今天在百度指數(shù)的搜索結(jié)果

一些剛剛接觸Python思想的人,會(huì)提出無(wú)法向后兼容的修改建議,這些建議并沒(méi)有針對(duì),當(dāng)前合法的Python 3代碼,給出明確的移植方案,而他們偶爾會(huì)提及Python 4000的思想。畢竟,Python 3.0時(shí),我們?cè)试S了這類改動(dòng),為什么Python 4.0就不允許呢?

這樣的問(wèn)題我已經(jīng)聽(tīng)過(guò)很多次了(包括有人非常擔(dān)心地說(shuō):“你已經(jīng)讓向后兼容性遭到了一次破壞,我怎么知道你還會(huì)不會(huì)再來(lái)一次?”),我覺(jué)得我應(yīng)該把我的答案寫(xiě)下來(lái),將來(lái)有人問(wèn)及,我就可以讓他們來(lái)看這篇文章。

Python 4.0目前的期望是什么?

我目前的期望是:Python 4.0僅僅只是“Python 3.9之后的一個(gè)版本”。僅此而已。語(yǔ)言沒(méi)有深刻的變化,也沒(méi)有重大的向后兼容性問(wèn)題,從Python 3.9到4.0,應(yīng)該像從Python 3.3到3.4(或從2.6到2.7)一樣平安無(wú)事。我甚至希望在版本升遷之際,應(yīng)用程序的二進(jìn)制接口(PEP 384引入的功能),能夠保持穩(wěn)定。

按照目前的語(yǔ)言功能的發(fā)布速度(大約每18個(gè)月發(fā)布一次),這意味著我們可能會(huì)在2023年看到Python 4.0,而不會(huì)有Python 3.10了。

那么Python將如何繼續(xù)發(fā)展呢?

首先,也是最重要的,PEP流程沒(méi)有任何變化,仍將持續(xù)提出向后兼容的更改,并將添加新模塊(如asyncio)和語(yǔ)言功能(如yield from)等,以增強(qiáng)Python應(yīng)用程序能夠使用的功能。

隨著時(shí)間的推移,Python 3在功能方面,將領(lǐng)先Python 2越來(lái)越多,即使Python 2用戶,可以通過(guò)第三方模塊或Python 3的后向移植,獲得同等功能,也無(wú)法趕上Python 3的功能。

不同解釋器實(shí)現(xiàn)和擴(kuò)展的互相競(jìng)爭(zhēng),將繼續(xù)探索增強(qiáng)Python的不同方法,包括PyPy關(guān)于JIT編譯器生成和軟件事務(wù)內(nèi)存的嘗試,以及科學(xué)和數(shù)據(jù)分析社區(qū),對(duì)面向數(shù)組編程的探索(這種方式充分利用了,現(xiàn)代CPUGPU所提供的向量化功能)。

與其他虛擬機(jī)運(yùn)行時(shí)(如JVM和CLR)的集成,也有望隨著時(shí)間的推移,而改進(jìn),尤其是在教育領(lǐng)域取得的進(jìn)展,可能會(huì)讓Python作為更受歡迎的嵌入式腳本語(yǔ)言,在更大的應(yīng)用程序中運(yùn)行。

對(duì)于一些無(wú)法向后兼容的更改,PEP 387提供了一個(gè)合理的方法,該方法在Python 2系列中使用多年,并且今天仍然適用:即如果認(rèn)為某個(gè)功能,會(huì)引起很大的問(wèn)題,那么可以將其標(biāo)記為棄用,最終將其刪除。

但是,開(kāi)發(fā)和發(fā)布過(guò)程中,發(fā)生的許多其他更改,并不太可能在Python 3系列中被標(biāo)記為棄用:

? 這里主要強(qiáng)調(diào)一下Python包倉(cāng)庫(kù),這是CPython核心開(kāi)發(fā)團(tuán)隊(duì)和Python Packaging Authority通力協(xié)作的成果,而且Python 3.4+捆綁了pip的安裝程序,減少了向標(biāo)準(zhǔn)庫(kù)添加模塊的難度,即使你還不確定它們,足夠穩(wěn)定以適應(yīng)相對(duì)較慢的語(yǔ)言更新周期。

? “臨時(shí)API”概念(由PEP 411引入),可以在提供標(biāo)準(zhǔn)的向后兼容性保證之前,允許你設(shè)置“過(guò)渡期”來(lái)獲得更廣泛的回饋,從而有助于庫(kù)和API的構(gòu)建。

? 很多累積下來(lái)的遺留行為,在Python 3轉(zhuǎn)換過(guò)程中,得到了確實(shí)的解決,現(xiàn)在對(duì)Python和標(biāo)準(zhǔn)庫(kù)新增功能的要求,也比Python 1.x和Python 2.x時(shí)期要嚴(yán)格得多。

? “單一來(lái)源”的Python 2/3庫(kù)和框架,被廣泛接受,極大地鼓勵(lì)了在Python 3中使用“棄用功能文檔”,即使這些功能被新的、更好的功能替代。在這些情況下,文檔中設(shè)置的棄用通知,會(huì)建議新代碼應(yīng)當(dāng)使用的方法,但不會(huì)產(chǎn)生程序上的棄用警告。這樣一來(lái)現(xiàn)有代碼(包括支持Python 2和Python 3的代碼),可以保持不變(相應(yīng)的代價(jià)是:新用戶在面對(duì)維護(hù)現(xiàn)有代碼庫(kù)的任務(wù)時(shí),可能需要學(xué)習(xí)的內(nèi)容會(huì)稍微多一些)。

從英語(yǔ)到所有語(yǔ)言

還有一點(diǎn)值得一提的是,Python 3本來(lái)沒(méi)打算,像現(xiàn)在這樣具有破壞性。在Python 3中所有無(wú)法向后兼容的改變中,許多嚴(yán)重阻礙代碼移植的困難,都可以歸結(jié)為PEP 3100中的一點(diǎn)上:

? 讓所有字符串都變成Unicode,并且擁有單獨(dú)的bytes()類型。新的字符串類型將被稱為'str'。

PEP 3100匯總了Python 3中所有爭(zhēng)議性不大、從而沒(méi)有必要單獨(dú)建立PEP的改動(dòng)。這個(gè)特殊的變化,被認(rèn)為無(wú)爭(zhēng)議的原因是:因?yàn)槲覀兪褂肞ython 2的經(jīng)驗(yàn)表明,Web和GUI框架的作者是正確的,即作為應(yīng)用程序開(kāi)發(fā)人員明智地使用Unicode意味著,確保所有的文本數(shù)據(jù),都可以從二進(jìn)制盡可能地轉(zhuǎn)換為系統(tǒng)的文本操作,然后在輸出時(shí)轉(zhuǎn)換回二進(jìn)制。

遺憾的是,Python 2并不鼓勵(lì)開(kāi)發(fā)人員,以這種方式編寫(xiě)程序,這大大模糊了二進(jìn)制數(shù)據(jù)和文本之間的界限,并使開(kāi)發(fā)人員很難將兩者區(qū)分開(kāi),更不用說(shuō)代碼了。

因此,Web和GUI框架作者,必須告訴他們的Python 2的用戶“使用Unicode文本。否則你就會(huì)在處理Unicode輸入時(shí),遇到捉摸不定、難以跟蹤的bug”。

Python 3則不同:它在“二進(jìn)制”和“文本”之間,做了更大的分離,使得編寫(xiě)正常的應(yīng)用程序代碼更加容易,但也使得在那些二進(jìn)制和文本數(shù)據(jù)的區(qū)別,不那么清晰。

Python對(duì)Unicode的支持的這場(chǎng)革命,針對(duì)的是更大的關(guān)于計(jì)算文本操作移植的背景:從只有英文的ASCII(1963年正式定義),到“二進(jìn)制數(shù)據(jù)+編碼聲明”模型(包括20世紀(jì)80年代后期,引入的C/POSIX語(yǔ)言環(huán)境和Windows代碼頁(yè)系統(tǒng)),以及最初的16位Unicode標(biāo)準(zhǔn)版本(1991年發(fā)布)到相對(duì)全面的現(xiàn)代Unicode代碼點(diǎn)系統(tǒng)(1996年首次定義,每隔幾年都有一次最新的主要更新)。

為什么要提這一點(diǎn)?因?yàn)楦淖兊健澳J(rèn)使用Unicode”,是Python 3中最具有破壞性的、無(wú)法向后兼容的改動(dòng),而且與其他(更依賴于具體語(yǔ)言特性的)改動(dòng)不同,它只是如何表示和操作文本數(shù)據(jù)這項(xiàng)大范圍的改動(dòng)中的一小部分。

隨著Python 3轉(zhuǎn)換清除了一些語(yǔ)言特定的問(wèn)題,與Python早期相比,新的語(yǔ)言功能的門檻提高了很多,而且沒(méi)有任何波及業(yè)界的移植的規(guī)模,比得上目前正在進(jìn)行的,從“帶編碼的二進(jìn)制數(shù)據(jù)”到用于文本建模的Unicode的切換。

所以我并不覺(jué)得,以后會(huì)有任何改動(dòng),能像Python 3這樣,造成破壞向后兼容、并且需要并行支持期間。相反,我希望我們,能夠在正常的變更管理流程中,適應(yīng)任何未來(lái)的語(yǔ)言演變,任何無(wú)法以這種方式處理的提案,都會(huì)被拒絕,因?yàn)樗鼤?huì)給社區(qū)和核心開(kāi)發(fā)團(tuán)隊(duì),帶來(lái)高得令人無(wú)法接受的成本。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84378
  • Python編程語(yǔ)言
    +關(guān)注

    關(guān)注

    1

    文章

    13

    瀏覽量

    4050

原文標(biāo)題:為什么 Python 4.0 會(huì)與 Python 3.0 不同?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Python 語(yǔ)言發(fā)展簡(jiǎn)史

    Python是我喜歡的語(yǔ)言,簡(jiǎn)潔,優(yōu)美,容易使用。前兩天,我很激昂的向朋友宣傳Python的好處。“好吧,我承認(rèn)Python不錯(cuò),但它為什么叫Pyt
    發(fā)表于 09-28 10:14

    新手如何快速學(xué)Python編程語(yǔ)言?

      Python是一門語(yǔ)法簡(jiǎn)潔、功能強(qiáng)大、上手簡(jiǎn)單的計(jì)算機(jī)編程語(yǔ)言,根據(jù)TIOBE最新排名,Python已超越C#,與Java,C,C++成為全球4大流行語(yǔ)言之一?! ?/div>
    發(fā)表于 12-20 16:05

    為何Python運(yùn)行效率低?python語(yǔ)言入門

    Python是一款優(yōu)雅的編程語(yǔ)言,在人工智能、云計(jì)算、大數(shù)據(jù)飛速發(fā)展的今天,Python受到了社會(huì)各界的關(guān)注,從國(guó)內(nèi)的阿里、搜狐、知乎、騰訊、網(wǎng)易、土豆、新浪到國(guó)外的谷歌、Dropbo
    發(fā)表于 02-01 18:47

    python和別的語(yǔ)言比所具備的優(yōu)勢(shì)

    世界上的編程語(yǔ)言有600多種,但真正主流使用的也僅有二三十種,且隨著計(jì)算機(jī)的發(fā)展,新的語(yǔ)言在不斷的誕生,過(guò)時(shí)的語(yǔ)言也在不斷的被淘汰,因此,IT開(kāi)發(fā)人員應(yīng)與時(shí)俱進(jìn)學(xué)習(xí)主流編程
    發(fā)表于 04-13 14:57

    Python與其他編程語(yǔ)言有何不同?

    遷移到使用Python編程語(yǔ)言構(gòu)建的擴(kuò)展模塊。  其他編程語(yǔ)言不像Python那樣擁有豐富的支持庫(kù)。  4. Python快速
    發(fā)表于 09-16 15:54

    python適合做什么開(kāi)發(fā)_python未來(lái)發(fā)展怎么樣

    本文開(kāi)始介紹了pythonPython優(yōu)缺點(diǎn),其次闡述了python可以用來(lái)做什么開(kāi)發(fā),最后分析了Python語(yǔ)言在未來(lái)的
    發(fā)表于 04-26 16:32 ?8277次閱讀

    2019年機(jī)器學(xué)習(xí)將如繼續(xù)發(fā)展

    IDC報(bào)告顯示,預(yù)計(jì)機(jī)器學(xué)習(xí)工具和解決方案的企業(yè)級(jí)采用率將在本十年結(jié)束前達(dá)到65% - 并且支出將達(dá)到460億美元。平均而言,55%的企業(yè)CIO已將機(jī)器學(xué)習(xí)視為業(yè)務(wù)加速的核心優(yōu)先事項(xiàng)之一。本文重點(diǎn)介紹了2019年機(jī)器學(xué)習(xí)將如繼續(xù)發(fā)展。
    發(fā)表于 10-15 15:47 ?1722次閱讀

    為什么Python是人工智能最好的編程語(yǔ)言Python有什么優(yōu)勢(shì)

    人工智能是未來(lái)發(fā)展的一大趨勢(shì),在人工智能發(fā)展的同時(shí)也增大了Python發(fā)展空間,都說(shuō)Python是人工智能時(shí)代最好的編程
    發(fā)表于 10-23 16:42 ?15次下載

    Python語(yǔ)言發(fā)展歷程和特點(diǎn)

    無(wú)論是對(duì)于廣大學(xué)習(xí)者還是程序員,簡(jiǎn)單就擁有了最大的吸引力。既然都能實(shí)現(xiàn)同樣的功能,人們有什么理由不去選擇更加簡(jiǎn)單的開(kāi)發(fā)語(yǔ)言呢?例如,在運(yùn)行Python程序時(shí),只需要簡(jiǎn)單地輸入Python代碼后即可運(yùn)行,而不需要像其他
    的頭像 發(fā)表于 05-25 11:00 ?9552次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>語(yǔ)言</b>的<b class='flag-5'>發(fā)展</b>歷程和特點(diǎn)

    現(xiàn)在的Python語(yǔ)言有什么優(yōu)勢(shì)存在

    得益于大數(shù)據(jù)和人工智能技術(shù)的發(fā)展,目前Python語(yǔ)言的上升趨勢(shì)非常明顯,而且隨著產(chǎn)業(yè)互聯(lián)網(wǎng)時(shí)代的到來(lái),未來(lái)Python語(yǔ)言的應(yīng)用范圍會(huì)得到
    發(fā)表于 01-08 15:37 ?845次閱讀

    Python語(yǔ)言為什么可以得到廣泛的應(yīng)用

    Python語(yǔ)言目前是IT行業(yè)內(nèi)最為流行的編程語(yǔ)言之一,同時(shí)Python也是全場(chǎng)景編程語(yǔ)言之一,目前在Web開(kāi)發(fā)、大數(shù)據(jù)開(kāi)發(fā)、人工智能開(kāi)發(fā)和
    發(fā)表于 01-10 14:55 ?1558次閱讀

    Python并不是弱類型語(yǔ)言

    Python是弱類型?Python并不是弱類型,Python是動(dòng)態(tài)型強(qiáng)類型語(yǔ)言。
    的頭像 發(fā)表于 04-21 17:45 ?4815次閱讀
    <b class='flag-5'>Python</b>并不是弱類型<b class='flag-5'>語(yǔ)言</b>

    Python編程語(yǔ)言屬于什么語(yǔ)言

    Python編程語(yǔ)言屬于高級(jí)編程語(yǔ)言中的一種。它是一種通用、面向?qū)ο蟆⒔忉屝途幊?b class='flag-5'>語(yǔ)言。Python由Guido van Rossum于198
    的頭像 發(fā)表于 11-22 14:31 ?1337次閱讀

    python語(yǔ)言特點(diǎn)有哪些

    Python是一種高級(jí)編程語(yǔ)言,由Guido van Rossum于1991年首次發(fā)布。它具有許多獨(dú)特的特點(diǎn),這些特點(diǎn)使得Python在軟件開(kāi)發(fā)領(lǐng)域變得非常流行。以下是關(guān)于Python
    的頭像 發(fā)表于 11-29 14:29 ?1010次閱讀

    面向高效電機(jī)控制的無(wú)傳感器矢 量控制技術(shù)繼續(xù)發(fā)展

    面向高效電機(jī)控制的無(wú)傳感器矢 量控制技術(shù)繼續(xù)發(fā)展
    的頭像 發(fā)表于 01-04 10:56 ?520次閱讀
    面向高效電機(jī)控制的無(wú)傳感器矢 量控制技術(shù)<b class='flag-5'>繼續(xù)發(fā)展</b>