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

Jodoo發表於2015-12-17

在過去十年裡,如果有人正在為初學者尋找一種程式語言的話,我的標準建議是 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 幫助審閱並完成校對。

原載: 明珠夜話

相關文章