奧推網

選單
科技

Python 雖已登峰,但尚未造極!

本文來自 CSDN 策劃的《2022 年技術年度盤點》欄目。本欄目將圍繞程式語言、開源、雲計算、人工智慧、架構服務、資料庫、晶片、開發工具等核心技術領域,特邀一線技術專家親臨分享自身的技術實踐,藉此希望能夠為更多的行業從業者帶來一些借鑑與思考,更好地把握技術的未來發展趨勢。

與此同時,基於以上技術領域,《2022-2023 中國開發者大調查》也重磅啟動,歡迎掃描下方二維碼,參與人人都在使用的「基礎軟硬體」的問卷調研,更有 iPad 等精美大禮等你拿!

在本篇文章中,來自北京火石鎮網路科技 CEO 卞安, 將從應用領域和開發工具鏈的維度展開,分享 Python 語言在軟體工具層面面臨最新現狀與挑戰,探討開發者助力 Python 突破自身的機遇所在。

作者 | 卞安 責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

一轉眼,又到年底了。2022 年的 12 月,註定是我們人生記憶最為深刻的一個月。

一方面,發著高燒看世界盃決賽中梅西帶著球隊一波三折,最終如願奪冠,我們一邊感慨青春的逝去,一邊鼓勵自己早日康復,期待更好的自己。

另一方面,TIOBE 2022 年 12月的程式語言排行榜上,Python 終於再一次拿下冠軍,衛冕成功,且一直保持著高速的增長,令人矚目。

作為一個 Python 工具軟體的作者,今天,我來聊一聊 Python 奪冠路上的喜和憂……

我致力於 Python 開發工具的這三年

三年前,當我得知 C 語言以微弱優勢擊敗 Python 成為 2019 年度 TIOBE 程式語言排行榜冠軍的新聞時,我正在用 C++ 開發遊戲。那則新聞突然讓我有點驚訝,“Python?是那個十幾年前用過的指令碼語言麼?”

“天吶,就是這樣一個當初只是在遊戲中作為指令碼嵌入語言的東西,竟然這麼受歡迎”。也是從這天起,我開始學習 Python,並在這個過程中嘗試不斷地建設 Python 開發工具軟體。

三年後的今天,看著 Python 的成長,說實話,我很欣慰。因為在我的眼裡,它不只是一門語言,更帶來了一種鼓舞,讓我看到,作為一名程式設計師,應該怎麼堅持自己的理想。

畢竟,距離 1991 年 Python 誕生已經過去 31 年了。當年的我,還青春年少,戴著紅領巾和同學們嬉鬧玩耍。而現在的我,踏過不惑之年的臺階,兩鬢已經生出白髮。

我感慨時光匆匆,回顧前半生,曾幾何時,我把「約翰。卡馬克」當作偶像,立志於做最好的遊戲程式設計師,並十年如一日的學習和研究,但終歸,技術的大潮滾滾而來,又洋洋而去,能在程式設計師這個崗位上,做到主程式,甚至是技術總監、業內大拿,終歸是需要點天賦的,但能夠成就大事,就不簡簡單單是一個人的問題,更多的是心態、團隊、環境、家庭、運氣等多方面的因素。

即便我們努力如初。但在時間的無情打擊之下,我們,是否守得住這美好的初心?

Python 過去這一年

2022 年,Python 風聲水起。

一定程度上,Python 在這一年裡的發展,得益於 AI 的影響力,使得目前在程式設計教學普及方面,Python 成了廣大學生和科研工作者所最希望掌握的技能之一。而這種熱度也正在一步步的從科研院校擴散到各行各業的開發者領域。

除此之外,10 月份正式釋出的

在 Python 之父 Guido van Rossum 的帶領下,未來仍有巨大的效能提升空間。

知名的 Python 發行版 Anaconda 開發商也釋出了可在瀏覽器中執行的 Python——PyScript。

應該說,如果你不能掌握一點 Python 技能,在當下這個時間點,是有點不合時宜的。

但是,冷靜下來,對 Python 這門語言進行評價,也很難說就都是讚美之詞。畢竟,僅僅是表面上的一些問題,就困擾了許多人。如果只是一味的相信 AI 的未來而認為掌握 Python 就能夠成就高薪就業,更是不現實的。

使用 Python 的理想與現實

首先,Python 目前仍然很少作為主流的前端開發語言。

原因很簡單,就三個字:“不靠譜”。比如:

在現實中創業者最扎堆的移動 App 開發領域,主流的開發語言仍然是蘋果端的 Objective-C、Swift 和安卓端的 Java,暫沒聽說過誰用 Python;

在桌面應用軟體領域,前有 Microsoft Visual C++、C# 在 Windows 系統上開發的各類工具軟體,後有JavaScript、TypeScript 結合 Electron 開發的各類跨平臺應用,而 Python 卻經常陷入到底能做出多複雜介面的討論中;

在 Web 端領域,Python 雖然具備在服務端進行大型網站開發的能力,但卻很少參與前端開發。

少了這些開發崗位的加持,Python 自然是難以在企業應用開發市場討得一杯羹。

其次,作為專業程式設計師看來,Python 語言雖然簡單易學,開發效率高,但在現代軟體企業產品的研發中,缺乏高效而完整的開發工作流軟體支撐。

比如說,我們在遊戲行業中習慣於使用 Unity 或 CocosCreator 來開發一款遊戲,從專案的搭建、場景擺放、函式繫結,再到除錯執行、打包多平臺輸出,都具有所見即所得的科學良好的工作流程支援。

CocosCreator 的元件化開發工作流

對於 C 和 C++,微軟公司上世紀就推出了 VC++ 開發工具;Java 也有 IntelliJIDEA 和 Eclipse IDE,這些優秀的 IDE 支援背後,實際上是巨頭企業對於開發者生態圈流量入口的掌握,更是幫助開發者掌握和使用一門語言的良好流程理念的踐行。

在上面的排行榜中,我們也可以看到,“Visual Basic”這個早已經遠離主流開發領域的程式語言,現如今依然能夠排到第 6 名,而眾所周知,“Visual Basic”是視覺化程式設計工具中非常優秀的典範。拖拽式的控制元件建立加上非常簡單的事件函式對映,對開發者掌握如何面向物件的介面程式設計開發起到了深刻的影響,也成為之後十數年大量應用開發工具和遊戲編輯器借鑑的物件。

其實,我們現在在開發中所困擾的大部分問題,本質上是屬於開發整合工具的不夠完善,如果有一套科學、良好的整合開發工具作為底層支撐,那麼我相信,這些問題實際上是不存在的。

但 Python 的問題,在於當初它誕生時的開發需求,經過三十年的變化,與現在是完全不同的。作者 Guido van Rossum 最初設計 Python 是將其當作一門教學語言。可以說,直到現在,Python 的基本面仍然還更像是一個教學語言一樣,通俗易懂、簡單上手,記事本開啟就能寫,寫完儲存直接就能執行。

不過在這個理念之下,更多專業的工程化的東西就省略了,比如良好的專案管理、豐富的除錯功能、實時的效能監控等。

我們不能責怪作者,只能說時代在新的階段,賦予了 Python 新的生機,而在新的環境下,原有的外圍輔助工具已經落後了。雖然當下我們有了PyCharm、VSCode等優秀的開發工具,但這類工具的主體仍然沒有脫離程式碼程式設計器的層面,並沒有在開發流程上做到完整的覆蓋。我認為這也是目前限制 Python 從小型軟體轉向大中型軟體開發中不可缺少的一環。

筆者目前正在致力於開發基於 Python 語言的全棧式開發工具軟體產品《PyMe》,希望透過視覺化的方式,幫助 Python 開發者快速搭建應用軟體專案,並可一鍵打包成桌面和安卓應用

最後,在本具備良好支援的 2D 和 3D 跨平臺圖形渲染領域,Python 未能實質上開疆擴土。

遊戲,曾經是很多程式語言發展的重要推手,一旦沾上游戲,基本上這門程式語言可以穩定地佔據一定的開發者市場。比如 C#,因作為 Unity 的主要開發語言,而被大量的遊戲開發者們使用;LUA,因為能夠高效的執行和簡潔的設計,成為遊戲中最主要的指令碼語言,十多年來,雖然 LUA 仍然只能作為另一門主要開發語言的指令碼補充,但仍然廣受歡迎;C++,更是長期作為遊戲伺服器開發的不二之選。

現實來看,用 Python 開發遊戲,不見得是個好的選擇,因為它執行效率太低了,無法滿足高速渲染和執行邏輯的要求,但是有一個很有趣的現象,就是很多的學生和非專業開發者,卻使用 Pygame 或 PyOpenGL 來嘗試開發 RPG 或一些小遊戲。

掌握基本的 Python 程式設計,已經成了很多非專業開發人員的一個技能,而在這個世界上,如此眾多的學生和非專業開發者,往往在學習語言的過程中,嘗試做一些小遊戲,或有意,或無意地娛樂自己或他人。

而 Python,是他們唯一的武器。

只是,卻沒有太多子彈。

Python 開發者經常使用一個基於 SDL 的圖形庫 Pygame 來開發一些小遊戲,但 Pygame 發展到現在,卻連基本的 Spine 動畫支援庫也沒有,以及基本的 UI 庫也沒有。做一個遊戲專案,只能手擼一切。

B 站上的“使用 Python 和 Pygame 開發《星露穀物語》”教程經常在 Python 遊戲開發者群被提及,彷彿學會 Pygame,就能開啟遊戲製作的大門。

而 PyOpenGL 作為 OpenGL 在 Python 上的展現,一樣缺這少那,大多數人連畫出個方塊都覺得費勁。

可能很多開發者會說:“Python 又不是為了專門做遊戲用的,這不重要吧?”,但是我想說,遊戲開發的能力用不用和有沒有是兩碼事,對於廣大的圖形學與機器學習交叉學科,如果 Python 具備完善的開發能力和工具支撐,對於學生和科研人員來說,則可以更加專注於核心問題的探索,而不是浪費時間去學習 C++ 和繁瑣的各種開發工具和環境配置,無疑可以大大加快相關學科的發展。

寫在最後

筆者正在開發中的基於 PyOpenGL 的 3D 場景編輯器,目前還比較簡陋。

不過,羅馬也不是一天建成的,我由衷的相信,在這個過程中,不管是 Python 的作者,或者是其背後的微軟公司,以及廣大的開發者群體,都會不斷的貢獻自己的聰明才智,把 Python 的問題一點點解決掉,隨著 Python 各方開發力量的不斷投入,Python 的未來,將不僅僅侷限於科研和教學,而在更加廣泛的工程專案中,還會有更加巨大的可挖掘潛力。

畢竟,人生苦短,我用 Python 嘛!

歡迎掃描下方二維碼,

參與《2022-2023 中國開發者大調查》問卷,

更有 iPad 等精美大禮等你拿!