適合初學者的電腦程式語言— Python
Python 是一個跨平台的程式語言,具有簡潔而清楚、物件導向、可擴充性等特性。與其它文字形式的程式語言相比較,簡潔而清楚的特性更適合初學者學習。美國頂尖大學裡最常用的入門程式語言,以及許多計算機與網路的相關課程,都使用Python 來命題和實作。Python 也是許多知名網路服務在建置時所採用的語言,像Youtube、Dropbox、Instagram 等著名網路服務都採用Python。
Python特色
Python 具有以下的特性,適合想進入電腦程式設計領域及想了解電腦是如何運作的對象來學習:
簡潔而清楚:程式碼簡單易懂,強調用簡單且最好的方法來解決複雜的問題,閱讀程式碼應該像讀一本書一樣的容易,讓Python特有的風格清楚而明確的展現。簡潔的語法讓程式碼變多的時侯仍然容易維護,清楚的語法讓團隊合作時的整合工作更為容易。
跨平台:跨平台的特點讓Python 幾乎無所不在,在Windows, Mac OS,Linux及手機上都有對應的Python工具,讓學生學習Python後可以實際運用的效果加乘。實際運作上,系統管理者可以撰寫自訂的程式腳本(script),同時管理異質平台的伺服器主機也不會是問題。
物件導向:Python 具有物件導向的特點,學習這些重要的物件導向觀念,可以用人們喜歡定義問題的方式來撰寫程式和解決問題,讓程式更容易被理解和維護,同時也可以幫助學生理解其他電腦語言中的物件導向觀念,未來在學習更多程式語言時,觀念也可以收到觸類旁通的效果。
可擴充性:豐富的函式庫,讓Python在許多領域都具有出色的表現, 像是NumPy 和SciPy 協助科學領域的運算、Flask 和Django 簡化了網站架構及網頁設計的複雜度,甚至連Maker 喜歡的RaspberryPi 這種信用卡大小的電腦中,Python 都可以發揮多樣性的用途。Python 容易和C/C++ 程式碼結合,這點也讓許多強大實用的C/C++ 函式庫可以讓Python 開發者整合進來一起使用。
Python導入資訊教育
根據過往研究統計,目前高中、職的電腦課並不一定有電腦程式設計課程,如果有程式設計教學,重心大多數採用VB(Visual Basic)為主,少部份用C/C++/ASP等,VB教學強調視窗程式的設計,學習者易將重心放在視窗事件處理和使用者介面上,這樣往往花費太多學習時間,不容易聚焦在程式邏輯上,課程結束後多數以寫一個小的視窗程式當專題。Python從文字形式的程式語言出發,結合實用的資料型態,學生可以把重心放在如何使用電腦處理日常生活資訊,包含文字、數字等不同型態的資料,練習的重心可以放在如何使用程式處理這些資訊,並且運用這些資訊解決所遇到的問題。
網路上有很多不錯的中文和英文Python學習資源,可以多加利用,列舉如下:
- 官方的Python 入門手冊-網路上最完整的入門介紹( 英文) https://docs.python.org/2/tutorial/
- Codecademy 的Python Track -互動式的學習方式(英文) http://www.codecademy.com/en/tracks/python
- Codedata 上的Python 入門- 完善的中文,說明一步步帶領使用者熟悉Pythonhttp://www.codedata.com.tw/category/python/
學習Python 選擇版本考量上,目前有2.x 和3.x 兩個主要的版本系列,對學習者和教學者常會有版本選擇上的困擾。3.x 和2.x 兩個版本在語法上無法完全相容,不過網路上多數的資源都是用2.x 開發,建議教學上使用採用2.x 開始,再使用 "from __ future__ import *" 就可以選擇性的使用3.x的語法。
Python 的優點是在很多領域都有對應的開源軟體,學習Python的過程,除了可以按部就班地依照入門手冊的方式之外,也可以同時結合下面的主題,讓學習這個程式語言時更活潑和有趣:
Codeskulptor.org 為一個利用瀏覽器線上撰寫Python 的平台, 由Rice University的老師所開發,提供2.x的語法讓使用者可以線上編寫,在撰寫的過程中可以立即看到執行的結果。除了提供基本函式庫讓使用者使用外,亦提供多媒體和畫布的能力讓使用者可以做出簡單的遊戲,做好之後可以把網址分享給同學和朋友。透過製作簡易遊戲的過程中,了解遊戲所需的邏輯、遊戲資料處理、場景和角色設計、聲音和網路等處理,可以帶起更有效的學習動機。數學
數學圖表Matplotlib 是Python 重要的繪圖函式庫,讓實際數值透過常見圖表方式呈現(圖1)。學生不僅可以運用Python程式學習處理資料,同時也在學習如何將資料用更容易解讀的方式呈現,因為看得到的資料呈現畫面可以讓學習Python 的過程更加有趣。


Python語言的無限可能
Python 在科學研究上有許多專案在進行,學會Python 後,可以很快地學習這些工具,協助學生在未來往前進行更高階的研究時,能夠更有效地利用資訊科技來解決問題:
NumPy 和SciPy:NumPy 為Python帶來了真正多維度矩陣功能,並且提供了豐富的函數庫處理這些矩陣。常用的數學函數經過調整之後,都能夠直接對矩陣形態資料進行操作,並且也已經使用C 語言來加速,可以把需要在Python 內進行的迴圈計算,放到C 語言運算中,明顯地提高執行時的運算速度。SciPy 的核心計算部分都是非常實用的數值計算函式庫,像是線性代數中LAPACK 函式庫、快速傅立葉變換FFTPACK 函式庫、微分方程求解使用ODEPACK 函式庫、非線性方程組求解以及最小值求解MINPACK 函式庫。這些科學相關的函式庫,會是學生在工程領域上的一大助手。
Django 網站架構:Django 採用MVC的架構,使用者可以彈性的選擇所需要的元件使用, 快速地用Python 開發網站。許多大型網站也都採用Django 開發,像Reddit、Washington Post、Instagram、Pinterest 等等。Python 的易讀性,提供了更簡潔的程式碼和更容易維護的特性,讓網站開發者樂於使用。
OpenCV 電腦視覺:OpenCV 讓使用者可以很快的操作電腦視覺函式庫,做出各種有趣的應用。無論是像Xbox 遊戲、人臉辨識(圖2)、笑臉辨識、車牌辨識,到進階的產品影像檢測等等,都可以利用OpenCV 來達到目的。OpenCV 雖然是用C/C++ 開發,但是有提供Python 的Wrapper,也就是Python 的用戶端函式庫,所有的範例程式也用Python 重新寫過。
RasberryPi 樹苺派: 信用卡大小的電腦Rasberry Pi(圖3),核心使用Linux作業系統,也是很熱門的開發環境,其中有Python 和PyGame, 可以讓學生學習Python,做出來的程式就跑在一台小電腦內,非常有趣。
由於Python 跨領域的特性, 提供許多程式設計相關的工作機會(圖4),精通Python 的程式設計師都相當受到歡迎。Python容易學習、容易閱讀,且在預見的未來仍然很實用,非常適合第一次進入程式設計領域的學生,在學習的過程中如果可以不斷累積對程式設計的喜好和能力,未來也可以繼續挑戰更專業的程式設計。


參考資料
- Python, http://zh.wikipedia.org/wiki/
- NumPy, http://www.numpy.org/
- SciPy, http://www.scipy.org/
- Flask, http://flask.pocoo.org/
- Django, https://www.djangoproject.com/
- Raspberry Pi, http://www.raspberrypi.org/
- CodeSkulptor, http://www.codeskulptor.org/
- Matplotlib, http://matplotlib.org/
- LAPACK, http://zh.wikipedia.org/wiki/ LAPACK
- FFTPACK, http://en.wikipedia.org/wiki/ FFTPACK
- OpenCV, http://opencv.org/