前言
本文說明什麼是程式食譜,並且利用這個概念學習程式設計。
說明
程式食譜是早期的程式設計書籍類別之一。這類書籍以特定程式語言為中心,廣泛地撰寫各個主題及其解方。解方通常是一小段可執行程式碼,可以直接用在自己專案中。
除了剛開始要理解各個主題的原理,大家無非是要一段立即可用的程式碼片段、趕快完成特定任務。在 Stackoverflow 和 ChatGPT 問世後,取得範例程式碼的門檻降低很多,這種書籍就沒人寫了。
但對程式設計學習者來說,利用程式食譜的概念,自己動手寫一些範例程式碼,仍然是有幫助的。
因應這個概念,本文列出一些程式食譜常見的主題,給想學習程式設計的讀者參考。
儘量不要土炮
在寫程式食譜的時候,儘可以花時間查詢、使用現有函式庫。除非萬不得已,不要自己土炮解方。土炮函式庫好理解、可全盤掌握,但這樣易養成不良習慣。
不論使用什麼程式語言,程式食譜的問題領域是一樣的。常用函式庫已經解決該問題領域很多次,通常也順帶修掉潛在臭蟲。但土炮的話,代表要重覆解決相同的問題,其實是在浪費時間。
Hello World
- 建置開發環境
- 撰寫第一個程式
從安裝好編譯器/直譯器和相關開發工具、到寫出 Hello World,這是學習程式語言的第一個步驟。通常按照官網的說明就可以輕鬆完成。
資料型態 (Data Type)
這裡要學習如何用電腦表示基本、常見的資料形態。這是程式語言內建的功能,只要知道如何使用即可。
數字 (Number)
- 布林 (Boolean)
- 整數 (Integer)
- 固定寬度整數 (Fixed-Width Integer)
- 大數 (Big Number)
- 浮點數 (Floating-Point Number)
文字 (Text)
- 字串 (String)
- 編碼 (Encoding)
時間和日期 (Time and Date)
- 時間 (Time)
- 日期 (Date)
- 時區 (Time Zone)
- 時距 (Duration)
土炮時間、日期資料形態非常容易出錯。除非是要學習其原理,不建議自製輪子。
雖然內建方案不一定好理解,但還是要好好學習如何使用現有的資料形態。
資料結構 (Data Structure)
- 記錄 (Record)
- 陣列 (Array)
- 矩陣 (Matrix)
- 串列 (List)
- 關連式陣列 (Associative Array)
記錄在大部分程式語言稱為結構體或類別。這是內建功能,不用自己刻。
大部分語言有內建的陣列和串列。在命令稿語言時常無法區分兩者。大部分語言也有內建的關連式陣列。
除了常見的資料結構,通常都要自己寫。用命令稿語言刻資料結構意義不大,請用 C、C++、Java 來練習。
檔案處理 (File Handling)
自由文字
- 標準輸出入
- 檔案輸出入
檔案格式 (File Format)
- CSV
- JSON
- YAML
- TOML
- XML
由於這些檔案格式太常見了,除非是要理解其原理,不建議土炮。
應用程式 (Application Programming)
- 命令列程式
- GUI 程式
- 網頁程式
- 電腦遊戲
應用程式是程式食譜的最後一哩路,學完其他主題後再來學。剛開始沒有想寫的東西的話,先寫個小型範例即可。
這個主題比較大。除了命令列程式可以土炮外,其他應用程式基本上都要用函式庫或框架來寫。
開發實務 (Development)
- 專案 (Project)
- 程式碼分析 (Linting)
- 記憶體分析 (Memory Analysis)
- 效能分析 (Profiling)
- 錯誤處理 (Error Handling)
- 記錄 (Logging)
- 測試 (Testing)
- 除錯 (Debugging)
剛開始學習程式設計時,程式碼很簡短,不需要這些概念也可以寫。隨著程式碼越來越長,學習這些東西的幫助就越大。