Coursera:Nand2Tetris-Note0
Nand2Tetris Note0
coursera的助学金批下来了 本以为2.9早就能开始的 最终还是在两周后才收到回复
(所有助学金申请都是我借助DeepSeek神力写的
足够有用的前言
1.在这节课里 会从零开始建立一台计算机。他的美好之处在于一切都很基础 覆盖的范围又很广。从非常基本的开始 比如简单的逻辑门。在PartⅠ里先建立的是”硬件”的部分 我们将用它们建造更复杂的芯片 然后用建造更高更复杂的芯片——比如CPU。我们将它们放入计算机中然后继续在软件层方面进行建设。(这是PartⅡ的后话了 在那里我们构建越来越复杂的”软件” 软件工件位于这些硬件工件之上。
2.另一方面 里面提到的一种解决问题的思路在计算机和理科学习中很重要:
当你去探索一件事的时候 一个足够好奇的人往往会想知道:这是怎么发生的?(实际上这很好)。但是在结束对它的学习前先不要考虑How的问题 担心What的问题就足够了。使用编程语言做应该做的事情就足够了 不必担心背后会发生什么 又是什么Logic。这个看起来鲁莽的步骤在计算机上叫做”实现” 是一切计算机代码里最强大最有力的部分。如果见异思迁美其名曰刨根问底 例如:在使用Python时 需要先下载VS code/Anaconda等等。此时你接触到了IDE这个词 而你并不了解IDE。这时相比于对IDE的学习 搞明白What Python could do更重要 即使你对IDE一无所知 只知道在VScode里面打开输入python代码输对了A就能输出B。在任何一个层面产生的新疑惑都不应该阻挡对当下首要目标的前进步伐。
尤其体现在RPG游戏里光打支线的我经常忘了主线讲到哪里 这和这节课里面的flamechart想告诉我们的是一个道理
假设我们已经完成了Section A。我们可以忘记它的What 忘记它的How 只需要担心它的输出是否正确可用。然后我们尝试在上面实现Section B。一旦我们完成了Section B的处理 我们可以再次忘记它。当我们实现Section C时 只担心它的程序接口。然后不断地从底部开始搭建Section D/E/F…这样我们就有多个阶段 而每个阶段得任务都非常明确。最后我们得到了由许多单一阶段组成的极其复杂的系统。
我们结束了一个Part 在移至下个Part的过程中我们去测试已完成的Part。在那里我们就可以知道搭建的上一个Part是否可行有效。基于已完成的内容 这个课将提供非常明确的指导如何实现所有”下一个Part”的abstraction。Coursera里面内置了一个测试套件 可以真正测试在每个Part里所做的事情是否奏效 确保一切该完成的步骤都会继续运行。
计算机流程图
这里是课程官方给出的流程图 为了符合这个博客的配色又敲了一遍(雾
这门课的学习是自下而上的 也就是先使用这些硬件模拟器来建立RAM等(用计算机来开发计算机的说法。
最基础的部分就是各种逻辑门 然后在组合逻辑门能创造各种”命令”后开始进入到后面的部分。
每个Part的学习部分
对于这个课需要的Pre-requisite knowledge 答案是…
None!
All the necessary know-how will be learned in the courses!
Pt.1 :
Elementary-Logic gates
- Nand(primitive)
- Not
- And
- 0r
- Xor
- MuX
- DmuX
- Not16
- And16
- 0r16
- Mux16
- Or8way
- Mux4Nay16
- Mux8ay16
- DMuх4Way
- DMuх8Way
Pt.2 :
Arithmetic-Logic Unit
- HalfAdder
- FullAdder
- Add16
- Inc16
- ALU
Pt.3 :
Registers and memory
- Bit
- Register
- RAM8
- RAM64
- RAM512
- RAM4K
- RAMI6K
- PC
Pt.4 :
- Writing
- low-level
- programs
Pt.5 :
Computer architecture
- Memory
- CPU
- Computer
Pt.6 :
Developing an assembler
一些基本的介绍就到这里 其他的乐趣请在之后的笔记里发现 我会持续更新如果我真的不食言然后半路去干其他事的话