最近無意間發現小朋友不會解開繩結,只是簡單的單結,越弄越打更多結更難解,這是小朋友生活中缺少這部分經驗,不知繩子打結還是腦筋打結,因此老爸我就
2009年12月26日 星期六
2009年12月19日 星期六
2009年12月13日 星期日
堆疊 (Stack)
近日網友 0319 留言請教關於 NXC 編譯問題,在此補充討論另一核心議題,從 MCU (Micro Control Unit) 的角度看程式執行,這樣可能可以解答一些程式設計者的疑惑。
學過計算機概論的朋友,應該知道什麼是 CPU (Central Processing Unit)、ROM (Read-Only Memory)、RAM (Random-Access Memory)、IO (Input/Output),簡單說這些東西相當於人的頭腦、永久記憶區、臨時記憶區、感官與四肢。 CPU 在執行程式時對於 RAM 的使用,有些重要的觀念,因為教科書很少提及或是老師略過沒教,導致許多程式設計師並不明白原理,個人就在此補充說明。
首先,堆疊觀念,CPU 會選定一塊 RAM 區域當堆疊運用,所有的 CPU 都有這麼一塊區域,它受 CPU 控制使用,一般使用者沒辦法直接使用它。什麼是堆疊?它像許多本書堆在一起,每一本書代表一筆資料,新資料會疊在舊資料的上面,因此最上面的東西沒被取走之前,被壓在下面的東西是沒辦法使用,LIFO (Last In First Out) 後進先出就是它的操作程序。什麼時候用?呼叫副程式時,必須記住現在程式位置,因此 CPU 會將目前程式位址存入堆疊中,然後跳到副程式執行,如果第一個副程式又再呼叫第二個副程式,那麼會在堆疊中放入第一個副程式的位置。執行完第二個副程式後,會先從堆疊中取出第一個副程式位置跳回去,執行完第一個副程式後,從堆疊中再取出主程式位置跳回去。請參考下圖。
2009年12月5日 星期六
Solution Provider
什麼樣的人適合從事研發工作,其中一樣重要特質,是否具有提供解決方案的能力?
因為研發過程會遇到很多奇奇怪怪的難題,如果你無法想出一套解決方案,那麼東西做不出來,最後就失敗收場,投入許多時間、金錢、精力卻無法獲利,真是可惜。
如果你是研發職場的新鮮人,你可以