寫在最前面
先講結論,儘管本書的內容有些章節有點難,但這是一本針對新手寫的程式語言學習書!
話說,某個週末我在家裡趕專案進度,家裡讀國中的小朋友突然來跟我說...
兒子:「爸爸,我們學校好像要教寫程式了」
我:「是喔,你知道要教什麼程式語言嗎?」
兒子:「好像是教 Python...」
我:「蠻好的,我來寫一本 Python 的書給你好了」
我看小朋友的表情好像沒有很開心的樣子,但這本書的起源的確就是這樣來的。
在我大四那年開始接觸網路,當時為了想要做自己的網站而開始自學 HTML 跟 CSS,又想要網站可以看起來跟別人的不一樣,所以也開始學一些簡單的程式。我第一個學的程式語言是 ASP,才剛學完 if...else...
跟迴圈等簡單語法,連函數都還不太熟就開始在學校的電算中心打工寫選課系統。有一次看到同事打開了一個黑黑的畫面在敲打一些指令(後來才知道是終端機視窗搭配 Vim 在寫 Perl),感覺就像電影裡的電腦高手一樣,看起來好帥,而且程式語法看起來也比我寫的 ASP 有趣,便去學校圖書館找書來看,然後就試著用 Perl 幫家人的公司寫了一個簡易的排班系統。
這應該就是我第一次接觸開放原始碼的世界,接觸之後才發現 開源的世界好寬廣而且好多厲害的人。後來因為工作的關係,寫了幾年的 Flash 跟 PHP(還因此辦了台灣的第一屆的 PHP 研討會)以及 Python。
在 2009 年到 2013 年期間我用 Python 跟 Django 幫客戶開發官方網站或活動網站,也有在台灣的開源社群開了好幾堂公開課程。不得不說 Python 寫起來真的比之前寫過的 ASP、Perl 以及 PHP 要好寫很多。直到後來接觸了 Ruby/Rails 之後,發現在 Rails 裡的模組自動載入機制,可以不用寫一堆的 from ... import ...
就能直接使用,當時覺得這樣好方便(但這其實有別的問題),所以在 2013 年就跳轉到 Ruby 直到 2024 年,一跳就超過十年。
目前全世界的程式語言種類非常多,每種程式語言被設計出來都有它想要解決的問題或專門的用途,例如大家現在如果聽到 PHP 這個程式語言,應該不會認為它是用來開發手機應用程式。講到 Python,現在大家可能會聯想到機器學習或人工智慧。Python 是一款泛用型的程式語言,早年的關注度還不錯但並沒有像現在這麼高,就以 TIOBE 這個程式語言排行榜的數字來看,原本差不多就跟 PHP、Ruby 等程式語言差不多的排名。誰也沒料到,自從 2016 年 AlphaGo 橫空出世打敗世界棋王之後,深度學習、機器學習、人工智慧等相關技術開始被大家關注到,雖然當時的熱度普遍都還只有在開發者之間,但這時候坊間 Python 的相關書籍已經明顯的增加了不少。
直到 ChatGPT 的出現,原本的舊時王謝堂前燕,講到人工智慧大家會想到的可能是得要研究演算法、要看好多論文,突然飛入尋常百姓家,連我坐在路邊攤吃個宵夜都能聽到隔壁桌的大叔或阿桑在談論 AI,書店的 Python 書突然變成好幾櫃,在 TIOBE 上的排行更是瘋狂的往前衝,直接衝到第一名,幹掉 C、C++、Java 這些長期霸榜的程式語言。
TIOBE Index: https://www.tiobe.com/tiobe-index/
認識我比較久的朋友可能知道我平常除了寫程式、開發專案外,同時也有經營一家電腦補習班(是台北市合法登記的那種補習班),所以我有一半以上的時間在我們的培訓班協助學員們轉職軟體工程師。這些年來我們都是使用程式語言 Ruby 以及網站開發框架 Ruby on Rails 做為我們培訓課程的後端教材。不過隨著市場趨勢的變化以及同學們的敲碗聲,外加我們家小朋友的課業需求,所以我也試著做一份 Python 版本的教材。
老實說,我並不認為我所學的程式知識有什麼特別之處,很多知識也是從網路上的開源資源學來的。秉持著吃果子拜樹頭的精神,本書內容將全部在公開於「為你自己學 Python」網站上,網站上內容除另有標示外將以 CC BY-NC-SA 4.0 方式授權。不論是已經工作一陣子的社會人士,或是在校學生,或甚至在學校準備教學生寫程式的教師,希望可以藉由這樣免費開源的方式釋出教材,能讓大家可以用更低的成本學習寫程式的技能。
為你自己學 Python:https://pythonbook.cc
本書內容
目前主流的 Python 版本是 3.x 版,事實上 Python 3 在 2008 年就上市了,當年由於 Python 2.x 跟 3.x 之間的語法的不相容,導致 Python 的開發者社群從 2.x 版升級到 3.x 版之間拉扯(或分裂)了滿久的時間。隨著時間推進,雖然 Python 2.x 版還是可以使用,但官方已宣佈在 2020 年之後不會再繼續幫 2.x 版的 Python 增加新功能。本書在撰寫的當下最新版本是 3.12.7
版,沒有特別註明的話,本書將使用這個版本做展示。
這本書主要目的是跟大家一起學習 Python 這個程式語言,除了邏輯判斷以及流程控制外,也會介紹常用的資料型態以及物件導向程式設計,並且動手做一些小工具來完成日常的瑣碎工作。
也就是說,本書主要將以 Python 程式語言以及網站開發為主,不會有人工智慧或機器學習等相關內容(我自己目前也還夠不熟悉,而且我相信坊間可以找到更多優秀的參考書籍),或是也許在下一本書再來跟大家介紹這方面的主題。
關於 Python
Python 怎麼唸?
雖然 Python 的英文是「蟒蛇」的意思,但這個程式語言跟蛇沒什麼關係。Python 應該怎麼發音?查了一下線上的劍橋詞典(Cambridge Dictionary),Python 的英式發音跟美式發音有一點不同:
- 英式:
/ˈpaɪ.θən/
- 美式:
/ˈpaɪ.θɑːn/
這兩種唸法我都有聽過,就算發音的不太一樣大家應該還是知道對方在唸什麼。如果硬是要選邊站的話,可以看看 Python 的發明者 Guido van Rossum 是怎麼唸的。Guido 是荷蘭人,我看了好幾部他在研討會演講或是專訪影片裡,他本人講到 Python 的時候聽起來比較像是美式發音的 /ˈpaɪ.θɑːn/
,以中文音譯比較接近的大概是「拍桑」。