Python 作為一門教學語言,應該退休了!

jopen 9年前發布 | 18K 次閱讀 Python
 

在過去的十年里,如果有人正在為初學者尋找一種編程語言的話,我的標準建議是 Python。但是現在,我的這個想法已經發生了變化。

誠然,Python 依然是一門很好的編程語言。它讓你集中精力解決問題,而不是關注架構之類的東西 - 那些有一定經驗的開發者,似乎已經忘記和背棄了編程學習的初衷 - 思維模式的重要性。Python 這門語言將自己很好地融入背景之中,我們無需過多解釋其功能特性及其編程方法學,我們只需聚焦于如何生成一個音符,如何計算所在跑道的運動軌跡,或者,為 撲克或骰子游戲編寫一個自動的玩家程序。

然后直到有一天,一名學生一臉無辜地問道:“如果我們不想通過命令行運行這個撲克牌模擬器,我應該怎樣做才能將其跑在一個窗體中呢?”

這是一個難以解釋的棘手問題,涉及很多各種各樣的 Python 圖形化開發工具包(GUI toolkits)。事實上, Guido (Python 之父 )每隔幾年就會面臨同樣的問題,每次他都需要重新評估一下 TkInter 是否適合 IDLE - Python 自帶的 IDE。

一周之后,另一個問題將會出現:“怎樣才能編寫一個具有圖形化界面的簡單游戲呢?”

好吧,是該深入研究一下這個主題的時候了。 Pyglet 看起來很有希望,只是它從2012年起就沒有更新過了。還有一些更專業的圖形化庫,如 SplatGL ,但是它太新了,應用案例也太少。 PyGame 似乎非常流行,甚至還有一本書和它配套。好吧,我們就從學習 PyGame 開始入手吧。

一個月后,更多問題顯現:“我怎樣才能把這個我給我朋友編寫的游戲展現給他呢?或者說,有沒有一種辦法,可以將這個游戲裝在我的手機上,這樣的話,我就可以直接將其展現給學校的朋友們,而且他們根本無需安裝?”

呃...

所有這些問題已經讓我慢慢放棄了把 Python 作為首推教學語言的想法。盡管只能輸出單色文本的命令行終端算法腳本依然非常重要,但是你真的需要區分什么是必要的以及什么是人們真正想要的。是的,你可 以找到一些附加的程序包,但是你能確定它們真的經得起真實項目的考驗嗎?或者,這些程序包明天還會繼續得到支持嗎?

非桌面技術平臺的興盛進一步加劇了這種復雜性,對此,我表示極大的同情。我學習 Erlang 語言的目的就在于,希望遠離 C 和 C++,以使我能夠在一個更高的層次上思考。我已經很好地證明了這一點 - 我現在可以將這種純函數編程風格嫻熟地應用在游戲開發領域。但不幸的是,iPhone 冒了出來,在這個平臺上,Erlang 根本不是一個合理的選擇。

考慮到這些因素,我現在首推的教學語言就是 JavaScript。我知道,我知道,它的確非常古怪。但從整體來看,JavaScript 是一門優雅且現代的編程語言。更重要的是,它恰好位于隨處可見的跨平臺開發工具之上 - 無論是布局、版式還是渲染。想要顯示用戶界面元素、圖片、或者文本嗎?可以直接使用 HTML。想要做一些與圖形或者動畫相關的事情嗎?那就使用 canvas 吧。

我期待著一些對這種思維模式轉變的批評和建議,至少在一定程度上,這將有助于人們選擇適宜的編程語言。我希望你們的批評和意見不應該涉及 JavaScript 語言的缺點,因為我的重要參考依據不是語言特性、類型系統,或者語法,我的重點在于這種語言是否得到了現代 Web 瀏覽器的原生支持。

作者: James Hague ,程序員,視頻游戲開發公司 Volition 首席設計師。

原文: Retiring Python as a Teaching Language

感謝:Qingniu 幫助審閱并完成校對。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!