iT邦幫忙

2026 iThome 鐵人賽

1

https://ithelp.ithome.com.tw/upload/images/20260831/201785138PcJQF4RqH.png
第二次參加鐵人賽寫主題比較混雜,先從著名的《韌體工程師的0x10個問題》開始,逐一細細探討當中的細節,但文章只有 16 點,要完成到鐵人賽要求的三十篇,勢必要有些拆分跟補充內容。

因此,我還從 C++ 延伸補充一些一直知道要學、但始終沒有找時間細細探究的主題,包含:

  1. 多執行緒
  2. 物件導向程式設計

「多執行緒」是因為寫 volatile 主題遇到、也想起作業系統課程會花很多時間講,但之前都沒有實作,就趁這次機會去看如資料競爭、競爭危害、死結等實際的程式碼,徹頭徹尾了解多執行緒是怎麼運作的,以及可能遇到什麼問題跟解法。

「物件導向程式設計」比較偏軟體,但也是始終沒有花時間好好研讀的內容,這次認真看完之後再去看 SOLID 原則跟設計模式,終於比較知道在說什麼了,雖然 OOP 主題文章寫超過一天、文章特長,還是覺得很值得!感覺又開了認識軟體設計模式的一扇窗!

最終三十篇主題如下:

  1. C 語言從原始碼到執行檔過程
  2. C 語言的預處理器
  3. 為何用 typedef#define 定義新資料型別更好?
  4. 內嵌函數
  5. 靜態變數與靜態函數
  6. 不能改變值的 const 跟 literal
  7. 神奇的「最大匹配原則」與前後置遞增
  8. 隱含類型轉換的陷阱
  9. 萬惡的指標
  10. 指標與整數間的型別轉換
  11. 位元遮罩
  12. 用位元運算做整數加法
  13. Lambda 表達式
  14. 中斷
  15. 無窮迴圈
  16. 硬體資源配置常見的坑
  17. 執行緒超入門
  18. volatile 關鍵字
  19. volatile 的延伸問題
  20. 用 C++ 學 OOP
  21. C++ 智慧型指標
  22. 初探多執行緒
  23. 資料競爭
  24. 資料競爭的解決方法
  25. 解決資料競爭,不能解決競賽條件
  26. 死結與解決方式
  27. 活鎖與飢餓
  28. 記憶體模型
  29. async / promise + future 進行非同步處理
  30. 執行緒池

嚴格來說,並非每個主題都跟韌體有直接相關、韌體工程師的必備技能也沒有全部都在上面,所以嚴格來說,就是一些「跟韌體有關、以及從 C 與 C++ 延伸的學習筆記」,堪稱大雜燴。

但這次參加的是「自我挑戰組」,所以就容我放一些個人的學習筆記,哈,如果下次寫鐵人賽(不知道會不會發生)有想到什麼可以連續三十篇的主題,我會好好找個組別參賽的。

額外收穫

今年參加鐵人賽,有個特別感動的小故事。

年初拉著大學與我碩班同校、現在就讀其他學校資工所的學弟到輔大參加鐵人賽頒獎典禮,居然就促成了他今年參賽的動機。

他的參賽題目為《在 AI Compiler 工程師的路上》,主要為他的碩一所學,我打開來看卻是全部都看不懂,只能以外行人視角讚嘆他一篇又一篇的大作(每篇是真的都很長)。

未來會不會哪天打開他的文章開始研究起編譯器呢?不無可能,但在那之前,我看到彼此都在自己當下有興趣的主題持續學習、產出,那種有同儕一起成長的感覺,是十分迷人的。


上一篇
Day 30-執行緒池
系列文
韌體工程師的不只 0x10 個問題31
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言