by r-physicist on 7/24/23, 8:43 PM with 29 comments
Now I am learning https://www.nand2tetris.org/ and it's fantastic by structure and explanation. In the past, I also completed JS and HTML courses by Anthony Alicea on Udemy. These courses also follow a similar approach to truly understanding how things work under the hood.
What other books/courses could you recommend from any area of programming?
by fgeahfeaha on 7/24/23, 11:21 PM
Complimentary to that I would recommend TinyRenderer
https://github.com/ssloy/tinyrenderer/wiki
This one is a CPU-based rasterizing renderer, it gives you a good understanding of what a GPU graphics pipeline does underneath.
In the graphics world the two common ways of rendering things are either rasterization or raytracing.
Raytracing is basically all the movie/VFX/CGI/offline renderers (although it is also being used for certain parts of real-time in recent years)
Raster is how most real-time renderers like the ones used for video games work.
If you're interested in graphics I'd highly recommend implementing a ray-tracer and a rasterizer from scratch at least once to get a good mental model of how they both work.
by Shosty123 on 7/24/23, 10:11 PM
Robert Nystrom's Crafting Interpreters: https://craftinginterpreters.com/
Ray Tracing in One Weekend: https://raytracing.github.io/books/RayTracingInOneWeekend.ht...
by tylerrobinson on 7/24/23, 9:53 PM
by KiwiJohnno on 7/25/23, 5:49 AM
Its basically a digital logic simulator/playground, masquerading as a game. Early levels have you solving a simple problem with a few and/or/not gates, then gradually building larger components like half adders, registers, RAM and eventually (I'm not there yet though) you end up with a complete CPU with an instruction set you have designed and implemented, and you are solving the puzzles by writing machine code (which you designed) programs for your CPU.
Its been featured on hacker news before:
by jebarker on 7/24/23, 9:59 PM
by oumua_don17 on 7/24/23, 11:41 PM
[1] The Little Schemer: https://mitpress.mit.edu/9780262560993/the-little-schemer/
[2] The Little Prover: https://mitpress.mit.edu/9780262527958/the-little-prover/
[3] The Little Typer: https://mitpress.mit.edu/9780262536431/the-little-typer/
[4] The Little Learner: https://mitpress.mit.edu/9780262546379/the-little-learner/
Note that [1] also has companion volumes: The Seasoned Schemer [1a] and The Reasoned Schemer [1b]
[1a] https://mitpress.mit.edu/9780262561006/the-seasoned-schemer/
[1b] https://mitpress.mit.edu/9780262535519/the-reasoned-schemer/
by ezedv on 7/26/23, 12:07 AM
by mxmilkiib on 7/25/23, 2:10 PM
by aslfjiasf on 7/24/23, 10:45 PM
by epakai on 7/25/23, 5:33 AM
https://www.mheducation.com/highered/product/introduction-co...
Is similar to nand2tetris. It uses a simple machine language, the Little Computer 3 (LC-3), and builds from the hardware up. Earlier editions are cheap, and don't include C++.
by davidddavidson on 7/25/23, 2:43 PM
by anta40 on 7/25/23, 4:56 AM
https://compilers.iecc.com/crenshaw/
Check on GitHub. Folks ported it to C, Go, etc. Then you may study standard textbooks like "Compilers: Principles, Techniques, and Tools", "Engineering A Compiler" and so ond.
by opportune on 7/25/23, 6:10 AM
I might add that if you like the feeling of understanding a subject from top to bottom, if you haven't taken higher mathematics already, be careful... if you start studying math you might fall in love and have other subjects ruined for you. Colleges do us extreme disservices telling us basic calculus/linear algebra/diffeq are "math". Mathematics is like going from XOR (ZFC and basic set theory/logic) all the way up to the wildest things you can imagine.
I highly recommend anybody who enjoys the sense of complete mastery and "extremely nitpicky but capable of doing anything I can imagine" that computer programming tickles to try learning propositional logic, abstract algebra, and real analysis. Then graph theory, theory of computation, and actual algorithms research (ie whats in algorithms journals, though TBH stuff from a few decades ago is way more approachable and applicable). The guy I linked above has a great survey: http://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf.
It honestly took years after I finished grad school for it all to fully click to the extent it has with me now, but not only does higher math teach you to think in an entirely different way, it unironically teaches you the underlying structure of everything. Well, maybe it's not great at solving super fuzzy human problems but especially when working with computers, knowing about things like chaos theory in distributed systems, invariants, graph algorithms, structural isomorphisms, cryptography, analyzing your shit in a way that's actually statistically useful... it's everywhere.
by adrsta on 7/24/23, 9:55 PM
by kej on 7/25/23, 2:43 AM
by quanganhdo on 7/24/23, 10:03 PM
by jebarker on 7/24/23, 10:00 PM
by throwaway019254 on 7/25/23, 10:48 AM
by lagrange77 on 7/24/23, 10:07 PM
by tashoecraft on 7/25/23, 1:00 AM
by beeburrt on 7/25/23, 1:28 AM
free online book
by kwoff on 7/25/23, 4:58 PM