極速下載站 —— 提供優(yōu)質(zhì)軟件下載服務,感受全新的極速下載體驗!

最近更新 | 軟件專題 | 軟件分類 | 軟件排行

您的位置:極速下載站資訊首頁軟件教程軟件資訊 → PYTHON解說器將被重構?

PYTHON解說器將被重構?

時間:2019-07-28 15:38:03  作者:Dorise  瀏覽量:53

大家好!小編在大學的時候?qū)W過C語言,但感覺太難了,學的馬馬虎虎,我們經(jīng)常說Python,那么Python是什么?其實Python就是一個編程語言,現(xiàn)在,全世界差不多有600多種編程語言,但流行的編程語言也就那么20來種,總的來說,這幾種編程語言各有千秋。C語言是可以用來編寫操作系統(tǒng)的貼近硬件的語言,所以,C語言適合開發(fā)那些追求運行速度、充分發(fā)揮硬件性能的程序。而Python是用來編寫應用程序的高級編程語言。

圖:

PYTHON解說器將被重構?圖1

在7 月 22 日,Python 之父 Guido 在 Medium 上發(fā)表了他的第一篇博文《PEG Parser》。在該文中,Guido 說他正在考慮運用 PEG Parser 替代現(xiàn)有的類 LL(1) Parser(名為pgen),來重構 Python 解說器。原因是現(xiàn)在的 pgen 約束了 Python 語法的自由度,使得一些語法難以完成,也讓當時的語法樹不行整齊,必定程度上影響了語法樹的表意,不能最好地體現(xiàn)設計者的目的。

那 PEG Parser 和現(xiàn)有的 LL(1) Parser 有什么區(qū)別呢?能夠這樣簡略地了解,PEG 語法解說器在解析語法的時分,會一次性加載全部代碼,所以解說器能夠根據(jù)任意位置的符號來判別語法的語義。而現(xiàn)在的 LL(1) Parse 解析語法的時分只會向前檢測一個符號,來猜測語義,導致部分語法有二義性的體現(xiàn),進而約束了Python言語的語法定義方式。當然,一次性加載全部代碼,也意味著 PEG Parser 需要更大的內(nèi)存來運轉。

說當時解說器約束了 Python 的語法完成,很多同學可能沒有明顯的感觸,所以 Guido 又舉了一個例子:在 Python3.8 之前,下面這段代碼都是能夠正常運轉的,而不像我們直觀感觸的第二行代碼應該報錯。

圖:

PYTHON解說器將被重構?圖3

這就是 Python 解說器處理不了帶來的后遺癥。這也導致 Python 團隊不得不在代碼里添加一些不受歡迎的“特例”來處理這些邊緣情況。

圖:

PYTHON解說器將被重構?圖4

Guido 說,Python 剛呈現(xiàn)的時分,內(nèi)存還很貴,運用 LL(1) Parser 是非常合理的。不過在現(xiàn)在這個內(nèi)存以 G 為單位的時代,解說器多添加幾百k甚至上兆的內(nèi)存消耗,現(xiàn)已底子不算什么了。所以是時分運用更抱負的 PEG Parser 來重構 Python 解說器了。

圖:

PYTHON解說器將被重構?圖5

最后,也是我們最關心的問題,這個重構會對 Python 言語的開發(fā)者形成什么影響呢?Guido 說,應該是沒有影響的,底層重構不會影響 Python 的語法。

看來,不管是多么成功的項目,也存在著因為時代的約束而留傳的一些令人不快的問題,完美的設計和完成,歷來不是一蹴而就的呀~

相關資訊