位元詩人 適合初學者的小型專題

Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

在生成式 AI 當道的時代,雖然寫程式的門檻降低了,但如果只流於學習語法而沒有親自動手做專案,剛學會的程式語言很快就會忘記。

為了幫大家扎實打底,本文列出了一些規模適中、非常適合獨自完成的小型專題。希望能幫助初學者找到實作方向,在專案中真正內化程式實力。

重新造輪子

在實際的開發工作中,重複打造現有的軟體(造輪子)或許不是個好選擇;但從「學習」的角度來看,適度地造輪子卻是非常棒的練兵方式。別預期自己造的輪子能立刻上路營運,把它當作個人技術庫收藏起來,未來需要特定程式碼片段(code snippet)時,隨時都能回來翻找靈感。

從軟體工程的觀點來看,造輪子就像是一種「軟體移植」。因為市場上已經有成熟的現成實作品可以參考,規格(spec)非常完整,你只需要專注在如何用自己的程式碼實現它,這對初學者來說是極佳的臨摹學習。

以站長自己為例,我造過的一個大輪子,就是用來生成這個網站本身的 SSG(靜態網頁生成器)。當年市場上還沒有用 PHP 撰寫的 SSG,於是我便自己動手刻了一個,而且一用就服役到了今天。

開發核心組件(套件)

任何程式語言的內建功能(語法與標準函式庫)都有其極限。試著為自己正在學習的語言撰寫擴充組件或套件,能讓你深入核心,學到許多平常接觸不到的實務知識:

  • 挖掘痛點:找出該語言目前缺乏、或不好用的功能並加以實作。
  • 封裝架構:學習該語言如何進行模組化與組件包裝。
  • 發佈流程:了解該語言套件生態系的發佈機制。
  • 開源授權:思考並選擇適合該專案的軟體授權模式(如 MIT、Apache 等)。

寫好的組件不一定要真的發佈到 npm、PyPI 等公開官方套件庫,畢竟那是公共資源,不適合存放練習性質的 Sample Code。不過,強烈建議將程式碼開源在 GitHub 或 GitLab 上。即使沒有人下載,這整個從無到有的開發與開源流程,也能讓你獲益匪淺。

根據自身需求開發專案

為了解決自己的痛點而寫的專案,往往能讓你進步最快。因為你會一邊寫、一邊用,不僅能馬上發現問題,還能立刻修復 Bug,讓專案進行非常快速的產品迭代。

以站長自己為例,在學習 Pascal 的過程中,我發現這個語言過度依賴圖形介面的 IDE。這是從 Delphi 時代流傳下來的傳統,到了 Lazarus 依然延續這個生態。由於不習慣這種開發方式,我便為 Pascal 打造了一個純命令列(CLI)的開發工具,並用 POSIX sh 刻出專案所需的功能。這個工具完成後,我成功擺脫了 IDE 的束縛,能更順暢地繼續深入學習 Pascal,非常方便。

打造網頁應用程式

網頁程式是非常理想的專題題材。相較於傳統桌面應用的 GUI 函式庫,使用 HTML/CSS 刻製網頁 UI 的學習曲線平緩許多,非常容易上手。

如果你的專案不涉及機密演算法,完全可以將所有邏輯用 JavaScript 寫在前端,打造出純靜態網頁應用。現在市面上像 GitHub Pages、Netlify 或 Vercel 等靜態網頁代管平台,提供的免費額度都非常大方,讓你能毫無負擔地部署並分享自己的成果。

開發電腦遊戲

許多人學習寫程式的終極夢想,就是開發出一款自己的電腦遊戲。然而,這對初學者來說其實並非理想的練習題材。最主要的原因在於,遊戲開發對美術、音效等素材(Asset)的需求量極高,容易讓人分心去處理許多與程式邏輯無關的雜事。

如果你真的很想挑戰遊戲領域,建議從復刻經典的小型遊戲開始,例如:黑白棋、五五將棋、俄羅斯方塊或數獨等。這些遊戲的介面與規則都相對簡單,能讓你將百分之百的精力,專注在核心程式邏輯的鍛鍊上。

專案開發該選擇什麼程式語言?

在規劃專案時,選擇哪種程式語言到底重不重要?初學者往往會把程式語言看得太重,但實際上,語言本身並非關鍵,其背後的「生態圈」才是決定成敗的重點。

舉例來說,如果你堅持想用 Python 來開發手機 App,因而選擇了 Kivy 框架;但由於 Kivy 的社群與學習資源相對匱乏,開發過程必然會處處碰壁。這時,倒不如直接去學 Java 或 Kotlin,反而能確保完整調用 Android 原生的所有功能。

程式碼只是將你的核心想法轉化為電腦軟體的「媒介」,並不是產品的終點。所有的程式語言,最終都會透過不同方式轉換為電腦底層運行的指令,因此不用過度糾結於語言本身,選擇生態圈成熟、適合該應用場景的工具才是王道。

結語

開發小型專案,本質上是一種純粹的心智活動。當你的出發點不再耽溺於功利或商業價值,拋開得失心,反而最能激發創意,寫出非常有趣且令人驚艷的作品。

本文所提出的建議,僅僅是一些拋磚引玉的初步看法。最核心的初衷,仍是希望每位踏入程式世界的讀者,都能在親自動手實作的過程中,深刻體會到寫程式那份最純粹的樂趣。

另見

關於作者

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

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

近期在學習韓文,並將語言學習的心得轉化為開源專案,回饋社群。

這裡是位元詩人的 GitHub 個人頁