8 ms·
Nand to Tetris 1
- tantalor 11y agoWhat does this have to do with Tetris?
- geetee 11y agoIt's referring to this book: http://www.nand2tetris.org http://www.nand2tetris.org
- galaktor 11y agoThere 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 ]http://www.nand2tetris.org http://www.nand2tetris.org
- ColinWright 11y agoQuoting: 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.
- ColinWright 11y agoIt appears that some people don't know about the book/course: From NAND to Tetris So here's the link: https://news.ycombinator.com/item?id=9593189 https://news.ycombinator.com/item?id=9593189
- zokier 11y agoPrevious discussion: https://news.ycombinator.com/item?id=5888705 https://news.ycombinator.com/item?id=5888705
- ColinWright 11y agoThere 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: https://hn.algolia.com/?query=nand2tetris&sort=byDate&prefix=false&page=0&dateRange=all&type=story https://hn.algolia.com/?query=nand2tetris&sort=byDate&prefix... https://hn.algolia.com/?query=nand%20tetris&sort=byDate&prefix&page=0&dateRange=all&type=story https://hn.algolia.com/?query=nand%20tetris&sort=byDate&pref... Edit: Here are previous submissions - none have any significant discussion: https://news.ycombinator.com/item?id=6963338 https://news.ycombinator.com/item?id=6963338 From NAND to Tetris: The Elements of Computing Systems [repost] (nand2tetris.org) https://news.ycombinator.com/item?id=7109860 https://news.ycombinator.com/item?id=7109860 Building a Modern Computer from First Principles (nand2tetris.org) https://news.ycombinator.com/item?id=8203302 https://news.ycombinator.com/item?id=8203302 Building a Modern Computer from First Principles (nand2tetris.org) https://news.ycombinator.com/item?id=9062220 https://news.ycombinator.com/item?id=9062220 Class in building a computer from "first principles" (coursera.org) https://news.ycombinator.com/item?id=9255258 https://news.ycombinator.com/item?id=9255258 Coursera: From nand to tetris (coursera.org) https://news.ycombinator.com/item?id=9256157 https://news.ycombinator.com/item?id=9256157 From Nand to Tetris [Coursera online course starts next month] (coursera.org) https://news.ycombinator.com/item?id=9288093 https://news.ycombinator.com/item?id=9288093 From Nand to Tetris / Part I (coursera.org) https://news.ycombinator.com/item?id=9362022 https://news.ycombinator.com/item?id=9362022 From Nand to Tetris - Part 1 (coursera.org) https://news.ycombinator.com/item?id=9590845 https://news.ycombinator.com/item?id=9590845 Nand to Tetris 1, with Dan Luu (oskarth.com) https://news.ycombinator.com/item?id=9593114 https://news.ycombinator.com/item?id=9593114 (in progress ...) Nand to Tetris 1 (oskarth.com)
- late2part 11y agoI often imagine how smart folks would rebuild the technology of the earth from scratch. It's cool you're doing this and looking at fundamentals!
- agumonkey 11y agoI often imagine how we could make average folks rediscover it :)
- thaumasiotes 11y agoRediscover it? Average folks never discovered it in the first place.
- agumonkey 11y agoGood semantic point, but you get my message. I really wish we would find ways to enlighten people of any level and not rely on 'genius' and talent.
- thaumasiotes 11y agoIn that world, what would it mean to have talent?
- agumonkey 11y agoSomething 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.
- thaumasiotes 11y agoI 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?
- smoyer 11y agoI 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.
- deleted 11y ago[deleted]
- shawndumas 11y agoconst logicGates = { nand(a, b) { return !(a && b); }, not(a) { return this.nand(a, a); }, and(a, b) { return this.not(this.nand(a, b)); }, or(a, b) { return this.nand(this.not(a), this.not(b)); }, nor(a, b) { return this.not(this.or(a, b)); }, xor(a, b) { return this.and(this.nand(a, b), this.or(a, b)); }, xnor(a, b) { return this.not(this.xor(a, b)); } }; Object.keys(logicGates) .map(gate => { return [ { gate, a: false, b: false }, { gate, a: false, b: true }, { gate, a: true, b: false }, { gate, a: true, b: true }, ]; }) .forEach(x => { x.map(y => { const desc = JSON.stringify(y).replace(/(gate)|:|"|\{|\}|,/g, ' ') + '=>'; console.log(desc, (({ gate, a, b }) => logicGates[gate](a, b))(y)); }); }); http://blog.shawndumas.com/post/119694815258/logic-gates-es6-version http://blog.shawndumas.com/post/119694815258/logic-gates-es6...
- barking 11y agoA great book and accompanying software imo lacks just 2 things. 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-Software/dp/0735611319 http://www.amazon.com/Code-Language-Computer-Hardware-Softwa...) and software such as this http://logic.ly/ http://logic.ly/
- sepeth 11y agoI 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.
- arundelo 11y agoCode actually starts with relays.
- userbinator 11y agoCode 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.