位元詩人 [技術雜談] 用程式食譜 (Programming Cookbook) 學程式設計

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文說明什麼是程式食譜,並且利用這個概念學習程式設計。

說明

程式食譜是早期的程式設計書籍類別之一。這類書籍以特定程式語言為中心,廣泛地撰寫各個主題及其解方。解方通常是一小段可執行程式碼,可以直接用在自己專案中。

除了剛開始要理解各個主題的原理,大家無非是要一段立即可用的程式碼片段、趕快完成特定任務。在 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)

剛開始學習程式設計時,程式碼很簡短,不需要這些概念也可以寫。隨著程式碼越來越長,學習這些東西的幫助就越大。

關於作者

位元詩人 (ByteBard) 是資訊領域碩士,喜歡用開源技術來解決各式各樣的問題。這類技術跨平台、重用性高、技術生命長。

除了開源技術以外,位元詩人喜歡日本料理和黑咖啡,會一些日文,有時會自助旅行。