mincch (胡旻鈞)
簡介
Linux 核心設計 自我評量
成果發表和貢獻
3 分 期末專題錄影
作業/隨堂測驗
7 分
在作業過程中,我學習到了 Git 的基本操作,如版本控制與分支管理,也進一步學會撰寫清楚、具備結構的 commit message。透過 pre-commit hook,我實際體驗到如何在程式提交前自動檢查排版(clang-format)與拼字錯誤等等,這大大減少了與他人協作時因格式不一致所造成的混淆與無謂的 diff。 並且我也理解到了 Linux Kernel 的 API 實作方式與設計風格,尤其在實作 kernel linked list 時,學會了如何透過 container_of 巨集從 list_head 反推原始結構體,並應用在 queue 操作與動態記憶體管理上。這些經驗讓我對「指標的指標(pointer to pointer)」等語法技巧有更直觀的掌握,也逐漸理解何謂「有品味的程式碼」。
期末專題
7 分
這次我被指派到的專題是重作kxo,主要是希望可以增加自己的實作能力,並且能夠有c相關的作品集,這次是實作了將使畫面呈現的部分在使用者層級藉此深入理解 kernel 與 user space 的職責劃分與效能考量。在對弈的過程中,要在螢幕顯示當下的時間 (含秒數),並持續更新,當離開對弈時,顯示多場對弈的過程
與授課教師的互動
6 分
5/30 與授課教師的一對一討論 : 剛開始我對與授課教師的一對一討論感到壓力,不知道要問什麼。但在深入閱讀教材(並行程式設計: Coroutine)後,我開始主動整理學習時的疑問並紀錄下來。在討論中,我與老師深入探討了 setjmp/longjmp 與 trampoline 的本質差異。
原先我對這些概念的理解多來自網路搜尋與 AI 工具,但與老師對話後我發現,學習系統底層概念不能只靠二手資料,更應回歸官方文件與 man page 來建立正確的知識脈絡。這次經驗也改變了我面對學習的態度──不再只是尋求快速答案,而是從原始資料出發建立自己的理解。
所見所聞所感
9 分 在課堂上老師很強調實驗,快速測試並修正程式錯誤。這種快速迭代的能力,在軟體開發中尤為重要。相較之下,作者在開發自動飲料機時,面臨了硬體試錯的高成本與長時間等待。例如,為了測試冰塊分配機構,作者需要等待工廠加工零件,這不僅耗時,還增加了開發的複雜度 。這讓我意識到,軟體開發的快速試錯特性,是我們應該善加利用的優勢。
作者在專案初期,對需求的理解並不充分,導致後續在功能實現上遇到許多困難。這提醒我,在開發前,應該花更多時間與使用者溝通,確保對需求有清晰的認識。在課堂專案中,第一次作業時沒有清楚的閱讀好作業規範,導致連測試都跑不起來,讓我學會了在做任何事情前需要明確的瞭解好需求、規格等等,來明確定義功能,這有助於減少後續的修改成本。
最後是文中作者提到和老師的對話:「你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已。」這句話深深打動了我。在系統軟體開發的過程中,失敗是常態,關鍵在於我們如何面對失敗,從中學習並成長。並且在課堂中學習承受與處理失敗。
自我評量
\(GEOMEAN = ( 3 \times 7 \times 7 \times 6 \times 9 )^{1/5} = 6.024794\)
方案 B :\(1 + floor(GEOMEAN) = 1 + 6 = 7\)
