在學習程式設計的過程中,我們常聽到許多結論,例如「Dictionary 很快」、「StringBuilder 一定比 + 快」、「async 一定能提升效能」,但這些說法真的永遠正確嗎?本系列將透過程式實驗、效能測試、圖解與原理分析,重新驗證每一個程式設計中常見的觀念與迷思。內容涵蓋 C#、資料結構、演算法、.NET Runtime 與 Framework,並以「提出問題、設計實驗、驗證結果、探討原理」為主軸,帶領讀者從「知道怎麼做」進一步理解「為什麼這麼做」,培養獨立思考與分析問題的能力,而不是只記住結論。
如果有人問我:「你擅長程式設計嗎?」 我的答案大概會是:「我不是學得最快的那一個。」 從接觸程式設計開始,我一直認為自己不是一個特別有程式天分的人。每當老師介紹...
在開始打造自己的 Mini Web Framework 之前,我發現自己一直忽略了一個最根本的問題。 我們每天都在寫程式,但卻很少停下來思考: 電腦真的看得懂我...
昨天,我知道了一件以前從來沒想過的事情。 CPU 根本看不懂我寫的 C#。 真正執行程式之前,還會經過 Compiler、IL、JIT 等許多步驟。 但新的疑問...
昨天,我理解了一件以前從來沒有認真思考過的事情。 CPU 根本看不懂 C#。 真正看懂我程式的人,是 Compiler。 而 Compiler 在完成檢查後,才...
昨天,我終於理解了一件以前從來沒有注意過的事情。 按下 Build,並不代表程式開始執行。 Build 的工作,是把我的 C# 原始碼編譯完成,並準備好執行程式...
昨天我知道 Build 最重要的成果,就是: MiniWebFramework.dll 我知道它很重要,卻不知道裡面到底放了什麼。 今天我終於決定把它拆開。 我...
從第一天開始,我一直追著自己的程式。 從 Program.cs 開始,到按下 Build,再到產生 DLL,最後甚至打開 DLL,看見 Compiler 產生的...
前七天,我一路追著自己的程式往底層走。 從最開始寫下的 C# Console.WriteLine("Hello"); 一路追到 Compi...
昨天,我終於找到了一個程式真正開始執行的位置。 以前我一直把 Main() 理解成「程式的起點」,但透過 ILDasm 實際觀察後,我才知道更精確的概念其實是...
昨天,我用 Console.ReadLine() 做了一個很簡單的實驗。 我第一次真正理解到,程式「還活著」,不代表 CPU 必須一直空轉。 程式也可以停在某個...