Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: After Charles Petzold's Code and Nand2Tetris, What Next?
36 points by gautamsomani on Nov 30, 2023 | hide | past | favorite | 20 comments
I'm half way through the 2nd edition of CODE book, and will then go through Nand2Tetris, since these 2 have been recommended a lot here on HN. May be its a little early to ask, but still, from learning computers (and software) more deeply, what should be the next step?

Am open to anything and everything. I want to understand computers even more better, assuming (and sincerely believing) it will make me better in my career path to be an SRE/Distributed-Systems Architect.

I'll also be reading DDIA and SICP for sure, will take me own sweet time to go through them since they actually demand time and patience. But would love to get guidance from you all here at HN.





Thanks a lot for these. Which CPU architecture would you suggest to begin with first?


That's a good question. Probably either RISC-V or ARM. MIPS is interesting, but I'm not sure that it has much of a future. OTOH, there's plenty of choice and availability of both ARM and RISC-V based computers to play around with. RISC-V is newer and probably still evolving more rapidly, so I guess you'd want to weigh whether you consider that a pro or a con.

For me personally, I have recently gotten really interested in RISC-V, so I lean that way a little bit. But that's more personal preference than anything concrete I can really cite.


>RISC-V is newer and probably still evolving more rapidly

Yet RVA20(RV64GC) and RVA22 are set on stone.


That's fair. But there's still changes going on in terms of extensions, and then there's the implementation level stuff (both hardware and software). So I guess I was really thinking more in terms of the overall ecosystem than just the instruction set.


Gautam - I started reading this book at the beginning of the year, but life got in the way and I dropped it since then. Though, last night I found myself with some time and picked it back up and read two chapters, "Bytes and Hex" and "An Assemblage of Memory" (yes, I have the first edition).

My email is in my profile. Feel free to shoot me an email if you'd like to discuss the material. I am planning on reading "The Elements of Computing Systems" next, a.k.a. nand2tetris - so I think it'd definitely be interesting to have someone to talk about these books to.

I recently started a Discord server with this purpose in mind -study CS books- we are currently reading another one of HN's favorites, Algorithms by Sedgewick. Though, we could definitely create a new section on the server to discuss more computer arch-y books and whatnot.

I hope you are able to join us! :)


Hey, I sent you an email, we can discuss further there. Please do check for it. Will forward it again today.


There is one project that rules over all other projects:

Find an FPGA board, build a soft core -> bootstrap your own C compiler -> build an OS -> do whatever you want


May be a stupid question, but what are the pre-requisites for building a softcore for a FPGA? I need a practical answer from someone who has actually done it, cause there will some intricacies which google result may miss but you will know.

Please do reply :)



Am sorry but I'm not sure what would be the right books/courses for each of the step. Can you please help with that too?


Principles of Computer System Design: An Introduction

https://github.com/wangjohn/mit-courses/blob/master/6.033/Pr...


Wow. I went through the index, and the content look intense. Thanks a lot for recommending me this book. Will take my own sweet time to go through it.

Thanks once again. :)


If you want to continue learning about computer architecture, I would recommend David Harris' and Sarah Harris' book "Digital Design and Computer Architecture", available in MIPS, ARM and RISC V editions.

https://pages.hmc.edu/harris/ddca/

An interesting second book that makes the connection to the software side is Bryant/O'Hallaron "Computer Systems: A Programmer's Perspective"

https://csapp.cs.cmu.edu

...and, more on the theory side, both books by Hennessy and Patterson ("Computer Architecture: The Hardware/Software Interface" and "Computer Architecture: A Quantitative Approach").

On the OS implementation side, I still like Comer's "Operating System Design: The Xinu Approach" quite a lot. While this book is quite old, I learned OS design from Comer (and am still teaching this at university level 30 years later...).

https://xinu.cs.purdue.edu

A good complement would be Cox/Kaashoek/Morris "xv6: a simple, Unix-like teaching operating system" (free download)

https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.p...

A useful addition on OS theory is Remzi and Andrea Arpaci-Dusseau's "Operating Systems: Three Easy Pieces" (also free)

https://pages.cs.wisc.edu/~remzi/OSTEP/

If you want to dig into programming languages, I would recommend Cooper/Torczon "Engineering a Compiler" (unfortunately published by Elsevier) and "Crafting Interpreters" by Nystrom (free)

https://shop.elsevier.com/books/engineering-a-compiler/coope...

https://craftinginterpreters.com

Finally, if you're interested in virtualization (system and bytecode level), I can recommend Smith/Nair "Virtual Machines"

https://www.sciencedirect.com/book/9781558609105/virtual-mac...

I use many of these books in my courses and recommend them to my students - so far, they seem to like the books:

(My OS course at NTNU) https://multicores.org/tdt4186_22/

(My Compiler Construction course at NTNU) https://multicores.org/tdt4205_21/

I hope this helps a bit. Learning all of this will be quite a challenge but also bring a lot of fun! :)


Wow. This is a treasure of books and topics. Thanks a lot for this. Will definitely explore all of them.


If your goal is distributed systems then take it, lectures are all on YouTube https://pdos.csail.mit.edu/6.824/schedule.html


This looks good. Thanks for sharing this :)


You can't go wrong if you pick up anything from Andy Tanenbaum.


True that. And thanks for pointing out :)


can anyone recommend anything within this world related to MIDI programming/OS's specifically for sequencing midi? im hellbent being able to work on something similar to the mister FPGA (Atari ST).




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: