The title of the course is misleading, as it suggests that NAND gates are the only required primitive, whereas the course later introduces DFF gates, without which you cannot escape the parallelism of chips.
It's an optimization. You really could build the whole thing from NAND gates if you really wanted to. http://www.learningaboutelectronics.com/Articles/D-flip-flop...
From Nand to Tetris: Building a Modern Computer from First Principles
11–20 of 49 posts
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#12Earlier quoted context omitted.
It's an optimization. You really could build the whole thing from NAND gates if you really wanted to. http://www.learningaboutelectronics.com/Articles/D-flip-flop...
Thanks, that page is nice, but it too emphasizes that you also need a clock. That's essential and it was the point I was trying to make. For example, a thing that is usually glossed over in OS courses (in favor of, let's say, scheduling algorithms and such) is that you simply can't make preemptive multitasking out of pure code - and later when you ask yourself how is it that such a phenomenon is possible in the first…
Agreed on the 'preemtive multitasking' bit, but that has little to do with this subject. And it is kind of embedded in the name, you need something to do the pre-empting which by definition has to come from outside.
But building a functional computer with just NAND gates is absolutely possible, even if there are better ways, just like you could use Brainfuck or combinators to do meaningful computation. The whole idea of the course is not to give some kind of purist model for computation but to show that the essence of a computer can be boiled down to some very simple building blocks. So the title of the course is misleading only if you want to pick nits. Course titles are made to attract students and to give broad cover to what the course is all about, not to satisfy language purists.
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#13I really cannot recommend this course enough, I find myself referring back to it in so many different fields (security, debugging, programming language design) When I finished school, I was fairly knowledgeable about physics, including logic gates and electronics, and I was a fairly good programmer, but I had no idea how that virtual world arose from the physical. When I type on a keyboard, what is physically happeni…
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#14I made a small game inspired by the first lessons in the course: http://nandgame.com/
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#15Re: From Nand to Tetris: Building a Modern Computer from First Principles
#16I just completed part 1 building a computer from gates and writing an assembler and am in the middle of part 2 where you develop compilers and a stack based virtual machine. For someone like me who did not study computer science but has been a self taught programmer in the Analytics spacefor over a decade, this has been a tremendously useful and accessible introduction to basic CS concepts and very eye opening in ter…
https://www.edx.org/micromasters/ucsandiegox-algorithms-and-... Comprises the following courses Algorithmic Design and Techniques Data Structures Fundamentals Graph Algorithms NP-Complete Problems String Processing and Pattern Matching Algorithms Dynamic Programming: Applications In Machine Learning and Genomics Graph Algorithms in Genome Sequencing Algorithms and Data Structures Capstone
In the actual history of computing very few good compilers were ever written by algorithm and data structures professors; most were written by people who had a pragmatic drive to get something done. Theory is good but without practice it is little more than navel gazing. Theory and practice need each other.
The reason that nand2tetris works so well as a course is that it gives you a concrete example of how all these algorithms and data structures are combined in order to turn an abstract description (the source code) into a running program that also includes how that computing is achieved through compiler, assembler, linker, run time, operating system, isa, and finally in transistors.
The true issue it gets to is that most programmers have very little understanding of how computers actually work, and when things break they just do high order guessing to get things working again rather than truly understanding what went wrong.
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#17Earlier quoted context omitted.
https://www.edx.org/micromasters/ucsandiegox-algorithms-and-... Comprises the following courses Algorithmic Design and Techniques Data Structures Fundamentals Graph Algorithms NP-Complete Problems String Processing and Pattern Matching Algorithms Dynamic Programming: Applications In Machine Learning and Genomics Graph Algorithms in Genome Sequencing Algorithms and Data Structures Capstone
Very little of which is communicated in any way to help someone learn how compilers work. In the actual history of computing very few good compilers were ever written by algorithm and data structures professors; most were written by people who had a pragmatic drive to get something done. Theory is good but without practice it is little more than navel gazing. Theory and practice need each other. The reason that nand2…
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#18The title of the course is misleading, as it suggests that NAND gates are the only required primitive, whereas the course later introduces DFF gates, without which you cannot escape the parallelism of chips.
The fact that nMOS switches off quicker is why the most common form of dynamic logic (as opposed to static logic) implements, in effect, the bottom half of the CMOS in nMOS and the upper half using a capacitor; which holds the charge and hence pull up for the length of the clock cycle (which is why dynamic logic CPUs can't be single stepped in hardware, the clock speed is too low to hold a charge).
Re: From Nand to Tetris: Building a Modern Computer from First Principles
#19The title of the course is misleading, as it suggests that NAND gates are the only required primitive, whereas the course later introduces DFF gates, without which you cannot escape the parallelism of chips.