「為你自己學 Python」正式上架!
「為你自己學 Python」一書已經正式出版,書本裡的內容全文可在網站上免費閱讀,但如果您覺得拿在手上閱讀比較有感覺,現在在天瓏書局網站也能購買紙本書:
- 紙本書:https://5xcamp.us/pythonbook 天瓏書局獨家販售
- 電子書:準備中
雖然我曾經寫過五、六年的 Python 程式,也曾在社群教過一陣子的 Python 課,但要提筆寫書又是不同的故事了。這本書從開始寫書到定稿,大概花了我一年多的時間,除了把以前上課的教材做了一次大大的整理,同時順便更新教材的軟體版本(當年還是 Python 2.x 的時代)。不只這樣,有些我當年自認為的觀念或看法,隨著年紀也有不同的領悟,也趁這個機會校正我自己對 Python 的理解。
這本書以 Python 3.12 做為主要教學版本,內容涵蓋環境安裝及 Python 程式語法,包括各種常用資料型態、邏輯及流程判斷、迴圈、錯誤處理、函數、模組、物件導向程式設計、檔案處理等,並透過網站爬蟲程式抓取並分析資料。沒有太多華麗的技巧,只有最基礎的程式觀念,期望能夠讓讀者在學習 Python 的過程中,建立穩固且正確的基礎。
在撰寫過程中,我除了翻閱官方文件以 及 PEP(Python Enhancement Proposal)之外,有些我搞不清楚原理而且文件裡沒特別提到的設計,我就直接去翻 Python 的 C 語言原始碼來驗證自己的想法。新手自學程式容易被不完全正確觀念的影響而不自知,因此在這本書中我力求呈現正確且精準的觀念。我希望這不僅是一本程式自學參考書,也能引導各位讀者掌握 Python 正確的觀念,試著建立自己的「單一真相來源(Single Source of Truth)」。
關於這本書
跟其它的書有什麼不同?
目前坊間 Python 書已經非常多了,通常以行銷的立場,當推出新課程或是新產品,總是得要說一些特色來吸引讀者。一般的手法都是先評論坊間的書都有怎樣怎樣的缺點,接著說自己這本書跟其他書有什麼不同,只要買我這本就會考試都考一百分。這種踩其它產品來墊高自己的高度、踩別人的頭往上爬不是我的做風。
說是這樣說,但我在寫這本書的期間有到書店翻閱其他的 Python 的書籍,有些書裡的內容的確寫的沒那麼正確。舉個例子,有些作者會拿著 Java 的物件導向的觀念來解釋 Python 的物件導向,像是明明 Python 的類別本身就沒有跟 Java 一樣的 private
設計,但書裡卻寫的煞有其事。我相信作者不會刻意誤導讀者,但對可能無法分辨是否正確的新手學習者來說並不是什麼好事。我不敢保證 自己寫的是 100% 都正確,但我在撰寫這本書的過程有要求自己一定要查證每一個觀念,這也是這本書花這麼久的時間才完成的原因之一,如果有寫錯的地方,都歡迎大家不吝指教。
同時,程式設計現在已經變成國民義務教育課綱的一部份,我希望可以讓更多人可以用較低的成本取得學習資源,本著開源的精神,所以我把這本書全文的內容都放在「為你自己學 Python」網站上,並以 CC BY-NC-SA 4.0 方式授權予公眾自由取用,不需要花錢購買也可以閱讀。若您是學校老師或教授並且打算使用這本書當教材,都歡迎直接取用;如果需要紙本書可以直接與我連繫,我可用最低的印刷成本提供給教學單位。
所以,如果硬要說我的書跟其它書有什麼不同,大概就是我寫這本書的主要目的是教學而不是賺錢(雖然錢錢還是很香),這應該算是我跟其它書比較不同的地方(吧)。
推薦序
有朋友在看這本書的時候問到,我在業界有認識那麼多厲害的大神朋友,為什麼不找他們寫推薦序?答案很簡單,因為我不喜歡麻煩別人而已。其次,我自己在讀書的時候通常都會直接跳過推薦序,因為我想藉由自己的閱讀來評斷這本書的內容,而不是被別人的推薦影響。如果我自己不看推薦序,我也不會期待別人一定要看我的推薦序。
再者,我對這本書的內容有信心,我希望讓這本書的內容來為自己背書,如果大家看過覺得內容很受用,也歡迎各位能分享出去,讓更多人能知道這本書,這對我來說就是最好的推薦序了。
關於出版
我之前出版過幾本書,都是跟出版社配合,有專門的編輯幫忙處理出版流程,我只要專心寫書就好。關於電腦書我一直有些想要實現的想法,不過出版社通常都有現成的流程或框架可能沒那麼容易實現,所以這回我就選擇了自己跑一趟出版流程,從封面設計、書本排版、印刷廠送印、ISBN 申請、販售通路協調,都自己 && 找外包協助。
為什麼要自己做出版?原因之一是我想挑選我自己有興趣的主題,或是邀請我喜歡的作者來寫書,並且親自看過每本我經手的書。會有這個想法是因為某次與日本的出版社合作的時候,我發現他們的編輯雖然不懂程式,還是親自跟著我書裡的指令或程式碼範例跟著敲打,確保我書裡的程式碼都能正常執行。
另外,原本我提供給編輯的日文原稿是這樣:
「俺の財宝か?欲しけりゃくれてやるぜ…探してみろ この世の全てをそこにおいてきた」
《ONEPIECE》ゴール・D・ロジャー
結果在出版社的編輯手上變成了這樣:
不知道各位能不能看出這其中的細節。除了內容之外,編輯還會跟我確認書裡用到的所有圖片是不是版權可以用於出版使用,種種細節都讓我非常印象深刻。
另外,我還曾主動投稿到國外的某些出版社表示 想要出版我在台灣賣的還不錯的書,但最後都被拒絕,原因並不是內容問題,而是他們的遊戲規則並不是作者寫了什麼就照單全收,而是跟他們家的編輯一起討論寫作方向,然後寫出期望的作品。雖然感覺作者少了一些自主權,但至少不會讓內容隨著作者自己想寫什麼就寫什麼,一不小心就歪樓的情況發生,這樣的流程也讓我覺得很有趣。
所以我就想,如果有機會讓我來當編輯或出版電腦書,我也希望能做到這樣的程度。
不過畢竟我不是專業的出版社,雖然可能可以控制出版的品質,但成本控制上可能沒那麼有優勢。簡單的說,像我這種業餘的出版流程又想要追求品質的做法,賣完一刷差不多就是打平而已。在這個網路時代賣電腦書,不賠錢就要偷笑了。
封面設計
之所以會想自己出版,另一個原因就是想要有自己喜歡的封面。對我來說,封面是書的第一個賣點,雖然聽起來有點膚淺,但我的確會因為漂亮的封面而買書。所以幾年前我就找了一位很喜歡的插畫設計師 Croter 幫忙設計封面,設計師本身不會寫程式,在討論的過程我提供了以下幾點想法:
- Python 是一款目前全世界最受歡迎的程式語言,現在國中已經是必修課。
- Python 的中文翻譯是蟒蛇,但蟒蛇有點恐怖,小一點的蛇也是 ok 的。
- 這本書主要內容是講授這個程式語言。
- 最後,我很喜歡七龍珠,它基本上就是我的整個童年,七龍珠的作者離開讓我覺得很難過。雖然 Python 是蛇不是龍, 但不知道有沒有機會在設計裡加入一點對七龍珠致敬的元素。
設計師很厲害,一下子就抓到了我想要的風格,也就是現在這本書的封面。不得不說,這本書的封面我真的很喜歡的,從顏色搭配到角色設計,處處都是細節。我知道這年頭 AI 繪圖越來越厲害,但我還是喜歡這種有溫度的手繪設計,很榮幸也很開心能有機會請大師出馬,讓我的書有這麼漂亮的封面。
後續還有四、五本書的封面(React、JavaScript、Ruby on Rails 等書)也都是請他幫忙而且都畫好了,每本我都很喜歡,大家可以期待一下。
編輯排版
事實上,原本我是連書本的排版都是要自己來的,但學了一下 InDesign 就發現這裡面有太多專業,如果我連這個都自己來的話,大概就不用出書了。所以最後還是委託專業的設計公司象晴設計來幫忙處理排版,他們的設計師對書本的排版相當專業,也很有耐心,在經歷了幾次的校稿後,最後才有了這本書,不然大概不知道會拖到什麼時候...
結語
這是我第一本自己發行的書,也是我第一次嘗試自己處理出版流程,有點辛苦但也讓我對出版業有了更進一步的了解。如果您也想寫電腦書,也認同我的想法,歡迎與我們聯繫來聊聊細節。
我把今年大部份的時間差不多都用在準備這本書上了,希望大家會喜歡,也希望能夠幫到更多想要學習 Python 程式的人。
謝謝大家 :)