學習物件的語言
2003 年 5 月 23 日
如果我想教導人們物件導向,我應該使用哪種語言?
在過去幾年,用於學習物件的首選語言是 Java。使用 Java 有許多很好的理由。
- 它廣為人知
- 它使用基於 C 的語法,而這正成為主流風格。
- 免費的高品質開發環境廣泛可用
- 了解 Java 有助於找到工作
基於這些原因,我當然不會勸阻使用 Java(儘管我要指出,C# 也具備這些屬性,因此會是一個可行的替代方案。)然而,我不會只使用 Java。Java/C#/C++ 展示了一種特定的 OO 程式設計風格,如果你要向人們介紹 OO,我想展示一個替代方案會很好。
我會考慮的替代方案是 Ruby 和 Python。兩者都是動態類型語言,而我認為在靜態和動態類型中都有經驗是有用的。兩種語言都非常有用 - 有許多任務可以用快速腳本輕鬆自動化,而我認為每個開發人員都應該至少具備一種袖珍腳本語言。
你應該選擇哪一種並不是那麼重要。就我個人而言,我會選擇 Ruby。儘管 Python 使用更廣泛(且可用),但 Ruby 在其 OO 中更純粹(如果你正在學習 OO,這很有用),對我來說感覺明顯更乾淨。Ruby 也有區塊:能夠輕鬆地將程式碼塊創建為物件。區塊是一個強大的程式設計工具,可以教授許多關於程式碼結構的想法,這些想法很難用其他方式掌握 - 並為函數式語言提供了一個切入點。
許多人可能會問「Smalltalk 呢?」我對此表示同情,因為 Smalltalk 仍然是我最喜歡的程式設計體驗。但是腳本語言的優點在於,它是一個專業程式設計師會定期使用的東西,而即使像我這樣的 Smalltalk 愛好者,也已經好幾年沒有啟動一個映像了。
所有這些引發了另一個問題 - 你是否應該使用程式語言來教授 OO。另一種方法是討論原則,也許用 UML 來說明。我堅信你應該主要使用一種語言,以便人們可以用它來做事。對我來說,軟體設計很像數學。雖然你可以透過閱讀或聆聽來獲得淺薄的理解,但你只有透過實作才能真正理解它。因此,要真正理解 OO,你真的必須建立一些東西 - 並受到鼓勵以不同的方式嘗試它,秉持 PragDave 的 Katas 的精神。