(no title)
sadn1ck | 4 years ago
- Operating Systems. I had a course on OS (I'm a student), but I felt it was kind of lacking, and would like to explore more. - Compilers? Seems very interesting
Also I've started with a bit of haskell to learn functional programming, would love some pointers from the more experienced people here :D
(Also networking?? So much to learn lol)
samhw|4 years ago
- "Compilers: Principles, Techniques, and Tools" (v popular, generally referred to as the 'dragon book' on account of its cover): http://ce.sharif.edu/courses/94-95/1/ce414-2/resources/root/...
- "Parsing Techniques": https://staff.polito.it/silvano.rivoira/LingTrad/ParsingTech...
- Not quite about compilers, but the website 'Crafting Interpreters' touches on the pre-compilation parts of a compiler (scanning, lexing, parsing, optimisation): https://www.craftinginterpreters.com/
- If you're compiling a typed language, this blog post is a good intro to type inference algorithms, esp with a view to implementing a Hindley-Milner (bidirectional) type system: https://eli.thegreenplace.net/2018/type-inference/
I highly, highly recommend at least trying to write a compiler or interpreter. It's a fantastic way to understand more about PL theory, and improve your proficiency with data structures and algorithms.
As for functional programming, it's basically the art of removing the word 'self' from your programs.
sadn1ck|4 years ago
arghnoname|4 years ago
Beyond that, if you want a more academic read it's good to read up on some other architectures. This paper on the history of the L4 microkernel family is a really good discussion of the design decisions and evolution of that system that gets into some classic OS issues: https://trustworthy.systems/publications/nicta_full_text/898...
Other kernel designs worthy of interest are exokernels and unikernels. Also with regard to systems design I've always liked "end-to-end arguments to system design" (https://web.mit.edu/Saltzer/www/publications/endtoend/endtoe...) and another paper on the duality of OS structures (http://occs.oberlin.edu/~ctaylor/classes/341F2012/lauer78.pd...)
sadn1ck|4 years ago
rramadass|4 years ago
I highly recommend - An Engineering Approach to Computer Networking: ATM Networks, the Internet, and the Telephone Network by S. Keshav. Unlike other books, it actually does give you a 360 degree view of the entire field which is no mean task.
On Operating Systems:
I have heard good things about Operating Systems: Three Easy Pieces by Arpaci-Dusseau though i haven't read it myself.