I haven't read 'Code' yet, but I think starting from NAND gates is right; it has to stop at some level. I feel CMOS, MOSFETs, semiconductor physics.. are all interesting topics, but this book is already too broad.
Code is a great book. What I think is the most powerful and interesting point is that a computer can be built from (a sufficiently large number of) any component that can perform logic functions.
I stopped reading Nand2Tetris in any great amount of detail and just skimmed the rest after I saw that it confused Harvard (separate code and data) and Von Neumann (combined) architectures.
Something not very important anymore. Do we want to stay blindly in love with those who can do things we cannot or should we try to make people able to learn how to learn ? it's a bit antisocial and un-binding but also the opposite.
I didn't mean "what would be the social significance of having talent". I meant "how would you know if one person was more talented than another person?"
Do you think what you want is achievable while humans vary in their abilities?
I understood, and socially insignificant words don't really have a place (aren't most words crafted from social interactions?). And thus I would know nor care to know as long as people are given ways to reach new level of understandings.
I believe something can be done, otherwise I wouldn't bother talking about it. This is only from personal experience, I experienced both feeling of being very talented as a kid, and the complete lack of it, all of a sudden, when going to college. Since then a lot of things that seemed impossible to understand started to click. It feels like experiencing both extremes of the ability spectrum. And in the end talent/innate-ability, or its absence, doesn't really matter. It's mostly desire and patience to unfold your own misconceptions.
And I strongly believe that the school system and society supports that notion that you either get something in a short timespan or you'll never because it's the way society can function; individual well being / growth jailed for this purpose.
I was speaking in an hypothetical future where talent wouldn't be a discriminating concept. In that future, objective concepts like electricity would still matter, and have a very concrete effect on people and society. Compared to nowadays where people are seeking "talents" for instant profit.
I love the boolean identity and proof that was hinted at by item #1 - namely that any truth table can be built from NAND gates. This is a case where several boolean identities build to form the equivalence. And it's these rules that let you assert #2 from the OP.
A NAND gate is defined as:
a x b = 0
So if both a and b are 1, the output will be zero. You need an inverter to form any other logic functions, but you also know that:
a x b = 0 when a = 1 and b = a
In other words, wire both inputs to one signal to get an inverter. Next we need an or gate, so we can use the identity:
!(a x b) = !a + !b
So to build the other necessary gates from a NAND gate, we simply combine these rules:
AND - invert the output of a NAND.
NOT - wire both inputs to the same signal.
OR - invert both inputs of the NAND gate
NOR - invert both the inputs and output of the NAND gate.
One tip for the aspiring logic designer (and those who would rather calculate a result than create giant if-then-else structures in their code - learn Gray's Code and Karnaugh Maps. You can easily minimize almost any truth table into a sum-of-products form.
The NAND To Tetris book requests people not post spoilers for their problem sets. (I violated this myself in putting my code on github, but with a big spoiler warning at the top, at least. I put it up there because my Python HDL might be useful to some others who didn't want to use their language.)
It's nice to start seeing ES6 code in the wild, though.
There are many previous discussions, and let it still seems that people don't know of this. I'll get some cross-references shortly, but here are two searches that show some of the discussions:
In the last few weeks I’ve been working my way
through the excellent book Elements of Computing
Systems - building a modern computer from first
principles as part of the equally excellent Nand
to Tetris MOOC.
^^^^^^
I guess you're not aware of the "From NAND to Tetris" book and series.
There is a course [1] where you learn from basic circuits design through writing a programming language until you use that language to write tetris. It is called nand2tetris. I can only assume the author will describe that course or its contents.
A friend of mine took the course, said it was great.
1:the building of the Nand gate itself and 2: the building of a flip flop.
Both these tasks can be easily accomplished with reference to the book 'Code' by Charles Petzold (http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...)
and software such as this http://logic.ly/