因應原書於2024年改版後授權範圍改變,已改版為《The Nature of Code閱讀心得與Python實作》。
俗話說「萬事起頭難」還真是一點也沒錯,從開始動筆寫《The Nature of Code閱讀心得筆記——使用Python實作》,到寫完頭一章,再到把文章放上網站開始發表,總共隔了快三個月的時間。之所以隔了這麼長的時間,一方面是因為不是每天都在做這件事,另一方面則是因為有很多東西需要先規劃、處理好,否則等寫了一段時間開始發表後要再修改,那將會事倍功半,而且容易出現前後不一致的混亂狀況。
先來談談寫作用的軟體環境。
在開始寫這份閱讀心得筆記之前,就已經不再使用Microsoft Word,而改用VS Code搭配markdown來寫文章。VS Code也支援TeX,所以即使有數學式子,顯示上也不成問題。
比起Word,markdown雖然排版功能沒那麼豐富,但寫起東西來,反而順暢很多,尤其是數學式子,直接打字就可以,而且馬上看得到呈現出來的效果,不需分神用滑鼠點來點去,找個老半天才找到要的符號。事實上,Word現在也支援TeX,不過不怎麼好用,應該也沒幾個用Word的人會去用,畢竟TeX的門檻還是比Word高。人是很懶的,寧可使用效率差但熟悉的工具,也不想費神學可以提升效率的新工具。
另一個使用markdown的好處是,markdown的檔案就是普通的文字檔,幾乎不會有毀損的問題,即便出現毀損的狀況,也比較容易救回沒損壞的部分。用過Word的人,尤其是用過比較早期版本的人,應該都有檔案毀損,完全一籌莫展,只能搥胸頓足的慘痛經驗。
至於在程式開發環境方面,使用的IDE是Spyder;原書使用的程式語言是Processing,現改用Python來實作。目前使用的Python版本以及用到的package如下:
Python 3.10.9
Matplotlib 3.7.1
Pygame 2.3.0
Noise 1.2.2
NumPy 1.23.5
其中製作動畫是選用Pygame這個package。本來一開始是想用turtle,但實際測試了一下,效果實在比不上Pygame,所以就考慮著要用Pygame。只是,Pygame當時已經很久沒更新了,這點頗讓人在意的,畢竟一個不再更新的package,有可能在Python更新至某個版本之後就沒法相容,這可就大大的不好玩了。所幸,正在猶豫的時候,Pygame又開始更新了。既然又開始更新了,那原先的擔心也就可以放下了,最後決定用Pygame來製作動畫。
在寫程式時,變數名稱的寫法是個傷腦筋的問題,原本想使用跟原書一樣的名稱,以便有疑問時可以方便對照查閱。但是,畢竟Processing和Python在變數名稱的格式上,採用的是不同的慣例寫法。所以,就只能盡量維持使用與原著相同的變數名稱,但主要還是會遵循Python的慣例寫法。
前面提到的那些事情都搞定之後,就是努力的讀、奮力的寫了。
寫完頭一章之後,覺得這樣子的工作方式是可行的,後續應該也不至於會有太大的變動,接下來就該來看看要怎麼發表了。
依照原先的想法,《The Nature of Code閱讀心得筆記——使用Python實作》是要放在「方格子」,只是啊只是,就那麼湊巧,這時候「方格子」推出了「廣告分潤計畫」。
這實在是很傷腦筋!
《The Nature of Code》這本書採用的授權方式是CC BY-NC授權,也就是僅能非商業性使用。雖然在寫閱讀心得筆記的時候,並不是直接翻譯原書的內容,而且所有的圖、程式也都是重新畫、重新寫,但畢竟還是根據原書的內容所寫的,如果放在已啟用廣告分潤功能的方格子上,那這樣有沒有違反授權?
這問題還真是麻煩,仔仔細細的讀了CC授權的資料,也在網路上讀了很多著作權方面的資料,還看了些法院的判例。在被一堆法律名詞搞得昏頭昏腦的幾天過後,最終得到的結論是:一切都要由初一十五不一樣,天威難測的法院決定。
既然沒法肯定絕對沒有違反授權,但又想啟用廣告分潤功能,看來就只能把文章放到其他沒有商業行為的平台了。但要放在哪個平台呢?研究了老半天,最後決定放在Google的Blogger上。
Blogger之所以雀屏中選,除了免費以及沒有啟用Google AdSense就不會有廣告之外,最重要的是可以藉由加入HTML/JavaScript程式碼來建立小工具,以擴增像TeX、程式碼顯示等功能。這還真是失之東隅,收之桑榆,把文章改放到Blogger之後,原本還因為方格子沒有TeX功能,而讓人傷腦筋的數學式子顯示問題,這下再也不用傷腦筋了。
往後,《The Nature of Code閱讀心得筆記——使用Python實作》完整的文章會放在Blogger,而在方格子放的,會是每章簡短的簡介,以及依章節名稱設定的連結。原則上,每寫完一節就發表,免得新內容出現的時間間隔過長。另外,有些屬於自己原創,不會有授權疑慮的內容,也會擷取出來張貼在方格子上。
《The Nature of Code閱讀心得筆記——使用Python實作》
連結:方格子、Blogger