From Nand to Tetris系列(一)
前言
這個系列是紀錄在Coursera上的開放課程:”From Nand to Tetris”的學習筆記,本課程由Hebrew大學的Noam Nisan與Shimon Schocken兩位教授主講,課程內容是透過實作(由nand邏輯閘開始),來建構一個電腦系統。
這個課程其實從很久以前就開始了,不過一直有其他事情耽擱,一直沒有完成,原本的筆記是寫成一大篇,不過一來閱讀不易,二來是最近也想再重新整理過筆記,索性分開寫成系列吧。
Chapter 1. Introduction
關於一台電腦如何運作,一般程式語言關心能做什麼(What),不用理解如何做到(How)。
而How指的是實作(Implmentation),What則是抽象化(Abstraction)的過程。
透過不斷抽象化,我們可以像堆積木一樣將功能堆疊出來,而不用去在乎每一層是如何實作。
大體來說本課程分為兩個部分:軟體架構(Software Hierarchy)與硬體平台(Hardware Platform)
從硬體開始,由最nand邏輯閘開始一步步建構每一層,直到組建一個可以運行應用程式的系統,這邊稱為Hack,過程中使用模擬器(Simulator)進行硬體模擬。
第二部分基於前面的Hack系統,由於系統目前只能接受低階的組合語言(Assembly Lauguage),使用上不太方便,因此我們透過建造編譯器(Compiler),創造這個系統的高階程式語言(High Level Language),稱為Jack。
進一步可以透過這個語言組建相關的標準函式庫(Standard Library)與作業系統(Operating System)
參考資料
From Nand to Tetris系列(一)
https://chris-suo.github.io/ChrisComplete/2024/06/28/Nand2Tetris-1/