在 How to Think Like a Computer Scientist 這本書裡提到,電腦專家的養成過程中,學習化解問題 (Problem Solving) 是重要的能力之一,它包括下列的步驟:
1. 具體地描述問題
2. 發揮創意地尋找解決方法
3. 清楚明確地表達解決方法
學習程式語言正是練習化解問題的絕佳機會,程式語言也為更深層的電腦歷險打開了窗。
工欲善其事,必先利其器,想快速學好程式語言,當然也要選個好工具。
推薦學習 Python 程式語言,因為具備下列的優點:
- 易學易安裝
- 開放源碼免費在各式環境執行
- 原始碼易讀易管理
學習 Python 該有哪些相關先備知識? 物件觀念,shell 環境的操作,以及檔案系統結構,都是重要的項目,另外,C 語言的基本觀念與技巧,也會有助於 Python 的學習,比如說,使用 “C tutorial” 為關鍵字詞到搜尋引擎找資料。這些簡單的先備知識,有助於學習其他多種程式語言,值得一併認識。
程式語言的學習方法,其原則與日常語言極其相似。
「應用於日常生活」及「依樣畫葫蘆」,是兩條值得採用的好原則。
在生活裡尋找程式語言的應用機會,能讓語言學習增添動機與樂趣,模仿前人的程式範例,可省茫然摸索的時間浪費,日久自然能有舉一反三之效。
Python 語言的延革
* 1991 年由 Guido van Rossum 在荷蘭阿姆斯特丹 CWI 研究中心工作時所創作及發展。
* 1995 年到 2000 年之間,作者 Guido 先後在美國 CNRI 研究中心及 BeOpen.com 工作,並發展 Python 1.5 及 1.6 版本。
* 經由 Zope 公司的主要協助,2001 年之後 Python Software Foundation 成立,軟體開發的領導人仍為 Guido。
* 早期 Python 以 C 語言為基底撰寫而成,目前則有以 Java 語言為基底的 Jython 及架構在 .NET 的 IronPython 版本。
* Guido van Rossum 在 2005 年底成為 Google 公司雇員,該公司將 Python 程式語言列為程式員的三大官方語言之一。
Python 語言的特色
* 易學易用 (Easy Learning)
* 語法結構清晰 (Clear Syntax and Structure)
* 物件導向式 (Object Oriented)
* 直譯式、交談式 (Interpreted, Interactive)
* 跨平台 (Cross Platform)
* 延伸與內嵌 (Extended and Embedded)
* 開放源碼 (Open Source)
其優點有
* 適於入門學習。語法簡易而直覺,接近自然語言,入門後又可輕鬆地接續 C、Java 等語言的學習。
* 完整的函式庫及模組支援。常見的程式設計需求,利用內建資料型別及函式庫就能有效滿足,還可援用網路上豐富的模組與應用程式。
* 適於大型專案開發。從設計哲學及語法結構開始,就要求程式員撰寫清晰可讀的原始碼,大幅提昇其維護性。
* 資料處理能力佳。已內建 Regular Expression 及 Unicode 支援。
* 容易結合其他語言及工具。例如 C、Java、.Net 等語言及環境,還有 Eclipse、wxPython、SPE IDE 等工具。
* 生產力及執行效率能有最好平衡。採用 bytecode 格式及 virtual machine 運作機制,另外可用 C 語言等系統語言,將效率瓶頸的程式區段改寫。
應用實例有
* 教學環境: MIT 新生程式入門及 OLPC 計畫選用 Python 為預設語言。
* 入口網站服務: Google, YouTube, Yahoo! 網站的關鍵服務以 Python 語言開發。
* 動畫軟體: Maya, Blender 語言擴充介面支援 Python 語言。
* 圖形介面及動畫遊戲: wxPython, PyGame 是協助創作的好工具。
* 郵遞論壇: mailman 程式以 Python 語言寫成。
* 網頁應用伺服與開發框架: Zope, Django, TurboGears 是主要的範例。
* 安裝程式: Red Hat Linux 開機安裝程式及 Gentoo 套件管理。
* 檔案點對點分享工具: BitTorrent 工具程式以 Python 語言開發。
直譯器提供一個交談式環境,使用者可以輸入指令,直譯器則會在螢幕上顯示執行結果,包括錯誤時的訊息,讓使用者即時體驗 Python 的運作方式,就像面對一位有問必答的老師。
從 Python 的下載網址 http://www.python.org/download/ 可以找到所有版本的檔案,包括各式平台的執行檔及原始碼檔案。
在 Windows 環境中,選取執行 IDLE (Python GUI) 或 Python (command line) 可進入 Python 交談式操作介面。「>>>」是提示符號,代表 Python 已經就緒,使用者可以輸入指令。
2007/07/06
2007/06/07
Computer Literacy
「如果學習與資訊相關,那麼資訊技術的演進,也必然對教育領域有所影響。」
Michael Tobis 在 Python in Education 一文中,強調資訊技術與教育的密切關係,並嘗試刻畫資訊素養 (computer literacy) 的面貌。一般的電腦訓練,著重在市場產品的操作與適應,經常造成「學完被綁」的結果,也就是只會某種應用軟體的某一版本,換個軟體或換個版本,可能就得重新學習的窘況。
資訊素養能否成為教育體系裡的一環,也就是培養國民近用數位公共財的基本能力,就像學習數理英文一樣? 這並不是一個學科增加與否的問題,而是問我們: 怎樣能保障國民的資訊近用權? 怎樣形塑二十一世紀數位公民的面貌與定位?
Michael Tobis 在 Python in Education 一文中,強調資訊技術與教育的密切關係,並嘗試刻畫資訊素養 (computer literacy) 的面貌。一般的電腦訓練,著重在市場產品的操作與適應,經常造成「學完被綁」的結果,也就是只會某種應用軟體的某一版本,換個軟體或換個版本,可能就得重新學習的窘況。
資訊素養能否成為教育體系裡的一環,也就是培養國民近用數位公共財的基本能力,就像學習數理英文一樣? 這並不是一個學科增加與否的問題,而是問我們: 怎樣能保障國民的資訊近用權? 怎樣形塑二十一世紀數位公民的面貌與定位?
2007/05/19
Zope Testing and Debugging
想要進行 Zope 測試或偵錯工作,可先參考 Zope Developer's Guide 第八章的內容,提示 Unit Testing, ZEO, debug method, pdb 的操作方式,利用這些技巧,可以進一步控制 Plone 之類的軟體,撰寫像 add_plone_site(), install_product(), set_default_skin() 來批次完成設定值,可參考 Team Development with Plone/Zope/ZEO/Subversion/ipython 的說明。
2007/05/16
Plone Tip on Private Folder
從 Make a complete folder structure private 看來的撇步。在 Plone site 若 private folder 裡有 visible sub-folder 或 visible content 的話,一般訪客是可以藉由搜尋功能發現 private folder 的存在。想讓 private folder 底下所有內容都找不到,必須修改 workflow 裡的 Access contents information 和 View 權限。此一方法同樣適用於 Poi Tracker 這類的外掛模組。如果想讓整個網站只限登入會員能讀到,請依照 Creating a private Plone Site 的說明修改。如果想讓部份內容由特別群組存取,請依照 Restricting access to folders with "shared" users 的說明修改。
2007/05/12
Prototyping with ArchGenXML
Tim Knapp 五月初在台北的演講中,秀了 ArchGenXML 操作方式,只要把 UML 圖完成,網頁應用程式的雛型也就跟著完成與更新,過程中只需要設定參數值,完全不需要寫程式碼,非常適合快速開發的場合。想在 Plone 裡利用 ATContentTypes 衍生新的應用程式,需要先準備好開發環境,包括 ArchGenXML 和 UML 設計工具,例如 ArgoUML 或 Poseidon CE 等。透過 google ArchGenXML 可以找到許多文件。
2007/05/10
Problem Solving with Python
繼去年五六月在南港高中辦過 Python 教學課程,今年五月也有機會到中山大學進行 Python 小型課程。整個活動是三場系列性質的演講,稱為「自由文化與自由軟體研討會」,由洪朝貴老師與中山大學教育研究所楊所長共同發起,在高雄市教育局的支持下完成。我的講題是「長線投資的電腦學習策略: 以跨平台的 python 及 regexp 為例」,其實就是利用三小時,教 Python 程式語言入門,場地在電腦教室,鼓勵學員能夠親手體驗 Python 的易學易用。看到學員能從無到有,學會 while 與 for 迴圈,並完成九九乘法表的列印,感到甚是欣慰。可惜自己沒弄熟 Python 應用 regular expression 的方法,將來還得加強這部份的教學內容。
2007/05/07
The software is an artifact of the community
Jon Stahl 提到 Paul Everitt 講過 The software is an artifact of the community 這句話,啟發很大。沒有了解軟體背後的社群,就難以了解軟體的內涵,社群文化,以原始碼作為傳承型式,體現的不只是一套軟體,同時也是關係脈絡、協商機制、分工合作的智慧結晶。快樂的黑客才能不斷創造,健康的社群才能演化好的軟體。
Subscribe to:
Posts (Atom)