本課程預期佔用研究生大量時間,於是授課教師有責任揭露學習狀況給實驗室。研究生需要在二、三、四,五、六月底發送當月學習回顧信件,提供給實驗室指導教授 (而非本課程授課教師),談及自身學習狀況及對研究主題的可能助益。當月若對 Linux 核心提交程式碼貢獻,則免發信給指導教授 (但仍該通知授課教師)。
黃敬群 <jserv@ccns.ncku.edu.tw>
,千萬不要忽略後者,否則授課教師無從得知學員是否確實進行學習回顧。斟酌改寫符合自己書寫的風格,切勿直接複製貼上Image Not Showing Possible ReasonsLearn More →
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
◇◇◇實驗室指導教授的全名 教授您好,
學生 ⬡⬡⬡學員的法定名稱 在本學期選修黃敬群老師開設於資訊工程所的「Linux 核心實作」課程,已投入可觀的時間,儘管實驗室目前的研究主題不與 Linux 核心直接相關,但我仍發現課程中對實驗室有益的議題,於是我以本信跟教授分享。
「Linux 核心實作」完全以開放原始碼技術建構課程所需的教材,不僅包含開發工具,也涵蓋適用於多人協作的開發模式,例如課程強調撰寫清晰好理解的 git commit message [1],起初我無法意會到這要求的精神,但這幾週觀摩授課教師準備的程式碼和學員們的創作後,我才理解如此規範對於協作的助益,我得以很快掌握程式碼變革 (revision) 之間的動機及考量因素,日後我投入實驗室的研究工作時,前述 git 版本控制系統和多人協作規範,預期可提升實驗室成員與我的開發透明度 (transparency)。由於課程在第一週就指定作業,而我也相當早就投入 [2],並藉由 GitHub 接受來自授課教師的程式碼審查 (code review) 意見,於是可及早調整程式碼的發展,免除閉門造車,這點應該對實驗室 –(自行發揮)–。
此外,「Linux 核心實作」的作業對於程式碼品質、執行效率、記憶體使用率,還有各式「品味」(good taste,呼應 Linus Torvalds 在 TED 訪談的用語) 等議題相當重視,我投入作業的過程中,最有印象的是藉由 AddressSanitizer 和 Valgrind 找出程式的記憶體錯誤,讓我想到,之前實驗室學長 ⍜◒◓自行修改為跟你合作過的實驗室成員 在實驗室進度會議提到 ☆□○ 專案長時間執行時,會遇到顯著的記憶體洩漏問題,就可運用前述課程提到的方法來排除。
為了理解 Linux 核心原始程式碼,我參閱後者所參照的 3 篇論文,亦即〈Bottom-up Mergesort: A Detailed Analysis〉、〈The cost distribution of queue-mergesort, optimal mergesorts, and power-of-two rules〉,和〈Queue-Mergesort〉,才發現原來合併排序演算法在實作層面,有如此多的議題要考慮,尤其顧及平均和最差狀況下,降低對資料單元進行比較的次數,有大量的數學分析,而對照閱讀 Linux 核心原始程式碼的實作後,我更理解理論和實務是一體兩面,也印證 ◇◇◇實驗室指導教授的全名 教授在指導實驗室成員的過程中,一直強調對論文閱讀和思考的重要。
目前我已閱讀 Linux 核心關於 linked list, hash table,以及 bitops 相關的原始程式碼,並試圖撰寫程式碼來使用 Linux 核心提供的 API,過程中,我想起 ☆□○實驗室的計畫 專案的程式碼可進行改進,藉由 Linux 核心風格的 –-(自行發揮)–-。我想,自己之所以可在短期內想到這些改進,應該就是我藉由大量閱讀和實踐,提升自身素養,從而對資訊系統有更好的掌握。
學生⬡⬡⬡學員的法定名稱
[1] 參見: How to Write a Git Commit Message
[2] 參見我的程式碼和開發紀錄,我連續 10 日都充分投入,新增和調整的程式碼行數超過 980 行,且確保每項變更都詳實紀錄,開發紀錄更是闡述程式碼便更後面的多項考慮因素。