4 ms·
This is amazing. Also, this is the Dark Magic of programming that I don't think I'll 100% grok in 20 years, but its good to try! edit: now that I think of it,
by tibbon 13y ago
This is amazing. Also, this is the Dark Magic of programming that I don't think I'll 100% grok in 20 years, but its good to try!
edit: now that I think of it, I really need to keep expanding my knowledge. I'm going to go through this post in my terminal and try to at least make the stuff work, so I can start understanding this process. I've been trying to learn Go and C better anyway. Thanks for providing a ground to learn more.
- steveklabnik 13y agoI was about to write something telling you to not be so hard on yourself, but your edit is in the right place! The only thing stopping you from learning 'dark magic' is your willingness to put time, study, and asking others about it. If you want to learn, just keep pushing forward.
- scott_s 13y agoMy mantra is "It's all just code." If you want an overview of systems topics, take a look at the webpage for the book "Computer Systems: A Programmer's Perspective": http://csapp.cs.cmu.edu http://csapp.cs.cmu.edu The CMU professors who made the book also have a course at CMU which uses the book as a textbook. I TAed a course at Virginia Tech that used the textbook. I thought the course does an excellent job in demystifying many systems concepts.
- exch 13y agoI've looked at this sort of stuff as utter voodoo for a long time. Then I ran into this book[1], and everything just kind of 'clicked' into place in my head. I can't recommend this book often enough. [1]: http://www.nand2tetris.org/book.php http://www.nand2tetris.org/book.php In short: It gives you a hands-on approach in designing and building your own computer and programming language, to end up writing and running your own games on the system. * It starts with simple boolean algebra to explain and create logic gates (NAND, AND, OR, XOR, etc). * Use these to build an ALU, memory banks and eventually a full CPU. * Design an assembly language and assembler for this system. * Use the assembler to create a higher level OOP language, compiler and code base. * Use this language to write a rudimentary operating system. * Write a game to run on the OS. All using very clear and simple English and a very comprehensive emulation system (written in Java) by the authors. Edit: For some reason, this site has started showing malware warnings in chrome and firefox since today. Even though Google's advisory[1] makes no mention of any actual malware being detected. I've visited this site safely for a long time. Still, if you don't trust it, then wait until Google clears up the issue. I've already contacted one of the authors about it. [1]: http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=http%3A%2F%2Fwww.nand2tetris.org%2Fbook.php&client=chromium&hl=en-GB http://safebrowsing.clients.google.com/safebrowsing/diagnost...
- shanselman 13y agoBrilliant! I just bought this based on your recommendation.
- tptacek 13y agoLikewise. Awesome comment. Book I wasn't aware of. Thanks so much for taking the time to write this.
- nitrogen 13y agoFirefox indicates that nand2tetris.org has been reported as an attack page. Has the site been compromised? Anybody know how to contact the author? Edit: just noticed the original Edit mentioning that you contacted one of the authors.
- justncase80 13y agoSame with Chrome. Beware this link.
- scrame 13y agoThe Book, TECS [The Elements of Computing Systems] is great, but the version I have was missing a lot of stuff. There were certain parts of the hardware design that were missing or not really completeable with what was provided, and not a lot of follow-up resources. The original guy who built a CPU in minecraft actually built it based on some of the exercises in that book. Good stuff overall.
- tmzt 13y agoMight be a good candidate to port to asm.js or even just javascript, there are platforms without Java where this could be a valuable teaching tool.
- abecedarius 13y agoNot a real port, but I made an HDL as a Python DSL and coded most of the hardware exercises with it. The majority of the work went into emulating their test script interpreter. Regular Javascript should be plenty fast except for full system simulation with no custom component simulators. https://github.com/darius/logsim https://github.com/darius/logsim