Python 之父談論 Python 的未來

tsteho發表於2016-07-09

作為一門已經開源25年、物件導向的動態語言,毫無疑問,Python近年來已經成為軟體開發者主要的工具。大家喜歡它對程式設計師的友好性以及其框架和庫豐富的生態系統。

InfoWorld:為了促進Python在移動計算領域出現,有什麼事正在進行當中?當你想到移動計算,你通常想到的是用於Android開發的Java、JavaScript、Swift以及Objective-C。

Van Rossum:移動計算對我們來說仍然是一個很難攻克的平臺。但是並不像瀏覽器平臺那麼糟糕,因為Python實際上能夠執行在所有品牌的智慧手機上。你只需要找到知道如何建立Python的版本的人就行了。

不幸的是,標準的CPython原始碼只能差不多,但是不完全,編譯成一個能夠正確地執行在一臺Android或者iPhone手機上的二進位制檔案。有很多人對於推動Python在移動計算領域出現、貢獻補丁和諸如一些你如何確認你是在一個Android平臺的小事感興趣。它正在前進,雖然並不如我所期望的那麼快。但話又說回來,我並不開發移動應用,因此我並不是很有動力去讓自己深入瞭解這些。但是我很高興看到正在發生的事。

InfoWorld:Python將來會在瀏覽器中扮演類似JavaScript的角色嗎,或者說這件事並不可能?

Van Rossum:這並不是我們的目標。

由於瀏覽器領域自身的結構,這真的很難有效地和JavaScript競爭。最好的方法就是將Python翻譯成JavaScript。但是通常由此產生的程式的執行速度比用原生的Python寫的程式慢,同時它的執行速度也將比用JavaScript寫的類似的程式慢。不過,仍然有一些關於將Python翻譯成JavaScript並且將它執行在瀏覽器中的令人激動的實驗。

InfoWorld:當我們談論JavaScript的時候,你對WebAssembly的印象如何?

Van Rossum: 這實際上或許會提高讓Python執行在瀏覽器上的可能。如果它是asm.js的替代品,那麼它基本上消除了JavaScript作為唯一一種在網路上使用的語言的侷限,同時它將JavaScript變成類似彙編的東西。就像當你寫Python程式碼,然而底層的Python解析器是用C語言寫的。而當你編譯C語言的程式碼、將它翻譯成機器碼,同時在這之間也涉及到一些組合語言。

如果我們不能在瀏覽器中消滅JavaScript,我們也許能讓JavaScript成為任何想要在瀏覽器中執行的事物的唯一的翻譯目標。那麼Python和其他語言,如Ruby或者PHP,能有效的被翻譯成底層的東西。

InfoWorld:你的意思是說WebAssembly給Python開發者提供了機會?

Van Rossum: 我認為是的。但那之前不得不經歷一個實驗階段,而那些覺得開發工具比製作應用程式更有趣的人獲得了一個弄清楚讓Python執行在WebAssembly上最好的方法是什麼的機會。

InfoWorld:當我在2012年採訪你的時候,Python因為它的效能而被指責。你那時告訴我它已經足夠快了。自從那時起,Python的效能提升的怎麼樣?

Van Rossum:Python3效能已經趕上來了。Python3比2012年的時候快了不少。另外,有特定的Python版本,如PyPy,仍然存在。有一些新版的Python直譯器旨在提高速度。

事實證明,有關Python效能的故事並不像人們講的那麼糟糕。因為Python大多數都是由C語言實現的,所以在做很多事情的時候,Python能夠和C語言執行的一樣快。對於大多數打算用Python來實現的事,我仍然堅信Python已經足夠快了。

InfoWorld:開發人員為了讓Python執行的更快,在Python3.x中有新增具體的特性嗎?

Van Rossum:我們沒有在Python3.x中新增新的特性。但在幕後,我們已經讓語言的各個方面得到了提升,像引用計數,我認為快了一些。所有的這些只是一些微調,但是使用者並不會注意到差異。並沒有像“用一個不同的方式寫你的程式碼,然後它變得更快”這類建議。那沒有必要。

InfoWorld: 你剛才提到過PyPy。你對像PyPy或者Futhark這樣的專案的印象是怎樣的?Futhark自動生成Python程式碼和其他語言的程式碼作為GPU程式碼的封裝。

Van Rossum: 後者我甚至都沒聽說過。類似那樣的事物通常是相當深奧的。它們是為那些正在做酷炫的、瘋狂的東西的人而存在,因此可能並不能被典型的Python程式設計師直接使用。

但是PyPy是相當成熟的。如果在一個有多種用途的Python程式中你對它的速度有迫切的需求,觀察用PyPy能否使得應用執行的更快是值得一試的。你可能遇到它執行的更慢的情況,因為你正在使用擴充模組,在擴充模組和你的Python程式碼之間來回切換時會略慢。

如果你正在做的大部分事依賴於擴充模組,CPython可能仍然是你該選擇使用的。

InfoWorld:你對所有這些湧現在Python生態系統中的Python框架和類似Futhark這樣的事物的發展感到吃驚嗎?

Van Rossum: 每個人都想成為勝利隊伍的一員。如果你瞭解下關於Python每年有多少個會議,有多少人來到像PyCon和EuroPython這樣的大型會議,你會發現Python似乎是在通往成功的道路上。它無處不在,這令人感到興奮。對於那些能夠為了他們專門的專案而尋找場地的人,無論他們使用Python作為一個起點、一門支援語言還是一種靈感,我都不感到吃驚。

InfoWorld:為什麼Python如今如此受歡迎?在語言人氣指數上,像Tiobe, PyPL, GitHub, and RedMonk這類平臺,它都做得很好。

Van Rossum:因為Python是容易學習,容易使用,社群是如此開放和樂於助人。

InfoWorld: 你說過你是負責Python的人,但是有很多貢獻者。你和貢獻者分別佔多少?

Van Rossum:關於這一點,在最近的5年或者更久之前,大多數來自於其他人。我偶爾給些我認為一個具體的想法能不能被接受的建議,通常是有關某些可能新添的語法。當涉及到庫的時候,我很少刻意去幹涉。有時候,我不得不告訴人們停止爭論,通過一些妥協設法找到一個方法。

對於社群,我的目標是它能夠自我維持,那麼我能夠完全退休或者休一趟長假。我希望並期望Python能夠從其它語言或者某些活動領域吸收新的想法來演變自身。

我想要指出的一件事是關於SciPy and NumPy的舉動。這些人正在介紹Python作為Matlab的替代物。它是開源的,它是更好的,他們能夠改變它。他們正在將Python帶到一個我從來沒有預料到的領域。他們也建立了像Jupiter Notebooks這樣能夠在瀏覽器中顯示互動式的Python介面的事物。在那個領域有許多難以置信的酷炫的作品正在誕生。

相關文章