The Forever War
Joe Haldeman, George Wilson, et al.
4.4 on Amazon
7 HN comments
The Soul of A New Machine
Tracy Kidder
4.6 on Amazon
7 HN comments
Code: The Hidden Language of Computer Hardware and Software
Charles Petzold
4.6 on Amazon
7 HN comments
The Structure of Scientific Revolutions: 50th Anniversary Edition
Thomas S. Kuhn
4.5 on Amazon
7 HN comments
Digital Minimalism: Choosing a Focused Life in a Noisy World
Cal Newport
4.6 on Amazon
7 HN comments
Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones
James Clear and Penguin Audio
4.8 on Amazon
7 HN comments
Operating Systems: Three Easy Pieces
Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
4.7 on Amazon
7 HN comments
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma , Richard Helm , et al.
4.7 on Amazon
7 HN comments
The Origin of Species: 150th Anniversary Edition
Charles Darwin and Julian Huxley
4.6 on Amazon
7 HN comments
The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change
Camille Fournier
4.6 on Amazon
6 HN comments
Open: An Autobiography
Andre Agassi, Erik Davies, et al.
4.7 on Amazon
6 HN comments
Getting to Yes: Negotiating Agreement Without Giving In
Roger Fisher , William L. Ury, et al.
4.6 on Amazon
6 HN comments
Lonesome Dove: A Novel
Larry McMurtry
4.8 on Amazon
6 HN comments
How to Avoid a Climate Disaster: The Solutions We Have and the Breakthroughs We Need
Bill Gates
4.5 on Amazon
6 HN comments
Working in Public: The Making and Maintenance of Open Source Software
Nadia Eghbal
4.6 on Amazon
6 HN comments
khaledhonJune 21, 2021
From there, you'll know where to go next based on what you've learned so far.
My recommended reading list is:
[1] Operating Systems: Three Easy Pieces https://pages.cs.wisc.edu/~remzi/OSTEP
[2] Intel Software Developer Manuals (especially volume 1 and 3A) https://software.intel.com/content/www/us/en/develop/article...
[3] OSDev wiki https://wiki.osdev.org
pramodbiligirionJune 21, 2021
The "Operating Systems - Three Easy Pieces" is one great book that has already been mentioned. I would also suggest "Computer Systems - A Programmer's Perspective" along the same lines (https://csapp.cs.cmu.edu/).
Computer Networking is another field you're likely to run into. "Computer Networks: A Systems Approach" is a good book (https://book.systemsapproach.org/)
financializeonApr 30, 2021
MeinBlutIstBlauonJune 21, 2021
avrgamponJune 21, 2021
Although the language you use to learn system & network programming doesn't matter much, it is better if you use C or C++ to practise and learn. This is because the kernel itself is written in C and exposes system calls that can be used directly from a C/C++ program. That said, "The Linux Programming Interface"(I am personally reading it) is a really good book. It talks a lot about how one should go about using system calls to get things done by the kernel. Make sure to read a little every day and try out the examples by writing C/C++ programs.
I recently realized that TLPI doesn't talk much about why are things the way they are(a very good example would be virtual memory and related stuff). You should refer some theoretical book for this. I suggest you go with "Operating systems" by Deitel & Choffnes.
Read man pages and practise using the libc/kernel APIs. For example, if you want to know about flushing, read 'man 3 fflush'. This might be needed when you want to flush all the input/output data that has been buffered by the C library before you can get fresh input from stdin. For example, if prompts are buffered, you definitely don't want to "scanf" before you have flushed the buffers. If you want to learn network programming, read chapters related to socket and refer 'man 2 socket'.
You will eventually get to a point where you will be able to connect all the dots(APIs) and be able to figure out what exactly you will need to get some problem solved.
Finally, don't learn for a future job. Learn for yourself. This will help you in the long run.
khaledhonApr 29, 2021
[1] https://pages.cs.wisc.edu/~remzi/OSTEP/cpu-api.pdf
nindalfonJune 21, 2021
- One system in isolation - Operating Systems: Three Easy Pieces. Covers persistence, virtualisation and concurrency. This book is available for free at https://pages.cs.wisc.edu/~remzi/OSTEP/
- Multiple systems, and how data flows through them - Designing Data Intensive Applications. Covers the low level details of how databases persist data to disk and how multiple nodes coordinate with each other. If you’ve heard of the “CAP theorem”, this is the source to learn it from. Worth every penny.
More on why these two books are worth reading at https://teachyourselfcs.com