CP4E 筆錄:
|
先從我身上這件 Python 汗衫說起。 這件衣服是我的兄弟所設計的。 他同時也設計了其他的 Python 衣物。
他是做平面設計的而並不是一名程式員, 但他學會了 Python 並介紹給一群設計人員。
這些人很多時間都在使用電腦但並不是編程人員, 他們發現 Python 可以很好地用在他們日常的工作之上。
|
言歸正傳。 CP4E (Computer Programming For Everybody) 是一項研究計劃。 它的課題是一般人使用編程語言的可行性。 普通人都覺得編寫程式是很難的事。 但事實上只要你有合適的工具, 編寫程式並不比閱讀, 書寫更難。
|
許多人都同意將來大部份辦公桌上都會置有一台電腦, 我認為一般人掌握了編程技巧比單純地拼揍基本元件更能有效地發揮電腦的功能。 我遇過一位計程車司機, 他自己弄了一套電子地圖系統來方便在鬧市裏找行車路線。 他使用的只是普通的手提電腦和衛星定位系統, 加起來約 250 美金。 這和 Python 的關係不大, 但證實了掌握編程的力量所帶來的創造力。 在不久的將來, 具備類似電腦功能的產品將無處不在: 口袋中、 桌子上、 電玩、 冰箱甚至烤箱中。 大部份這樣的產品是由專家所設計的。 然而無論多好的專家設計也不可能完全滿足用戶的願望 (更多時是用戶的古怪狂想)。 目前許多程式提供的所謂選單、 設定、 對話方塊其實只是在假裝提供貼心的設計。 這些被叫做小精靈的東西往往是在幫倒忙。 我相信讓下游用家得到一定的技術才是更好的解決之法, 讓他們自己來製作自己想要的工具, 這才是真正的個人化。 真正的用戶友善並不只局限在用戶友善的介面上, 也並不只局限在各種功能的設計上, 它應包括一個友善的設定環境使用戶感到自由、 自在、 自得其中。
|
總的來說, 我認為創造是一件好事, 而提供進行創造的工具是很重要的。
|
接下來我們來看看, 編程是否真是很因難。 以目前的情況來看的確如此。 就算是行內人, 也會經常寫出很糗的程式碼。 但這反映的只是現在的編程工具太難了, 而不是編程自身的概念。
|
拿學校來做例子。 以前我們教的是 Pascal , 後來改成了 C++, 為的是追求摩登、 為的是把它加到自己的履歷表中。 但教學的結果郤是很不想理的, 可悲的是有很多本來對電腦程式有抱有興趣的學生因為 C++ 太難而放棄了學科。
|
C++ 的複雜是出名的, 有時候連老師也會被弄糊塗。 就算在班級中教授的只是 C++ 的部份子集, 人們發現授課的重心往往轉移到瞭解該語言的一些特性而不是去瞭解一般性、 通適的編程概念。
|
有人會說 Java。 在我看來, 它仍是太難了。 一個很簡單的 "Hello World !" 程式要引入一堆標頭檔, 利用數個深奧的關鍵字。
這些關鍵字、 標頭檔所涉的理論要到課程的後期才會加以解釋。 Java 並非不好, 但作為初學者的入門教育來說它並不符合由淺入深的先後次序。
|
有人建議回到基本的入門軟件去。 當我們仔細審視手頭的軟件時發現它們都名符其實只能入門。 這些語言的用處除了可以寫幾個簡陋寒酸的例子外在真實世界一無所用。
|
我們的目標是令 Python 成為每個學編程的人的第一次接觸的語言。 我們不必讓每個人都懂 c++, 但每個人都應該有起碼的編程概念。
|
我們要建立新一代的編程工具, 開設新的課程, 編寫新的教育方案。 在這一切中, Python 的語言核心是一個正確的開始。 它所久缺的只是一個完整的綜合開發環境。 為讓大家更好的理解 Python 的功能, 下面有一些示範。 它們將帶出以下 Python 的幾個主題:
- 物件導向/面向對象/概念為本
- 高階
- 即譯運行
- 快速原型開發
- 和 Perl / PHP 相比較
- 可利用 c / c++ 進行擴展
- 可整合大型的系統
|
『作者示範了 range(), def function(), large integer, class, list, dict{} 等的使用』
|
為甚麼 Python 適合於教授編程?
- 它是繼承自 ABC: 在 80 年代由研究人員提出。 它被設計來做教育用途。 各種編程的概念如變量、 常量、 本地、 全局、 類別等都在該語言中清晰地呈現出來。
- 編寫格式: Python 程式要求以縮排來定不同的碼區。 沒有 C / C++ / Perl / PHP / Java 中的花括號使它的程式變得更容易看。 這樣編排和多數編程人員的習慣一致。
- 可擴允: 可用於解決真正的問題、 現實的問題。
- 跨平台: 在操作系統上 Python 可運行於 Solaris / IRIX / Mac / AIX / RISCOS / OS2 / BeOs / Windows / Palm / Windes CE 甚至 Cray 之上。 在軟體平台上, Python 實現了 C / Java (Jython) / .NET / Browser Plugin 等的實作。
- Python 被設計成一整套的工具箱。 各種檔案、 網絡、 軟硬件資訊、 主從架構、 記憶體管理、 多媒體等的操作全部可以由單一語言所調用。 教起來更加統一, 前後呼應。 所有學到的知識和技巧可以不斷累積, 組合。
- Python 是即譯執行的。 這免去了編譯的過程。 同時 Python 有互動的環境和強大的容錯除蟲功能。 這些對於學習新的概念非常有利。
|
Python 可以滿足學術界的要求。 它文句結構清晰易明, 教師可以專注於理論知識。 教授賦值條件、 對象繼承、 函式庫重用的重要性而不是忙著替學生除錯。 學會 Python 也可以為未來做準備。 和 Logo 相比, Logo 也是很簡單易教的。 Logo 也可以讓你明白變數、 迴圈和函數的道理, 但你學到的技巧在現實世界找不到用處。 Python 則不然, 它有著近 20 種的內建數據類型, 用戶可以在完全不知情之下自由的使用, 這符合學術上的優雅。 Python 程式看上去就像是描述算法的類程式碼, 然而它是可以執行的!
|
Python 有實際的用處。 人們用它來測試軟體、 開發大型系統、 建造原型。 它很適合用來推動 CP4E 計劃:
目的: 把創造的力量帶給終端用戶。
計劃:
- 在試點學校教授 Python
- 在大學中教授 Python
- 在社會上公開教授 Python
|
Python 的角色:
教物件的概念、 教編程的風格、 教常用的算法
提供有趣的範例, 如好玩的程式
提供具吸引力的範例, 如用很短的程式作奇妙的事, 使編程看來舉重若輕
提供互動環境, 用戶可以即時知道錯處發生的地方
提供自省的功能, 這使調控變得容易
|
現場問答:
|
問: PHP4 現在已推出了, 請問你會怎樣比較兩者的速度?
答: PHP4 是很快的語言。 它用在網站上是很好的。 但我從來沒有為 Python 的速度擔心過。 事實上有些利用 Python 的大型網站它們也表現的很好。
不過我想提出的是, 在任何埸合, 用訂造的工具來做特定的工作其效率必然是較高的。
然而 Python 所專注的是較一般性的應用, 它的對象比 PHP 更廣範, 它專注在普遍的電腦應用中如何提昇生產力。
|
問: 你如何看 Python 和 VisualBasic ?
答: VB 的介面是超一流的。 但是 Python 的語言是超一流的。 從程式語言的角度來看 VB 要遜多了。 VB 是單平台的、 封閉的、 很難擴允的。 除了它的介面外, Python 在任何方面都要領先。 但可幸的是 Python 單憑其語言本身的典雅美麗已可和 VB 相較高下。 將來 Python 有了好的綜合開發介面情況會更加明顯: 介面是很容易進步的, 但是語言本身則很難更改其框架。
|
** 完 **
|