Ask HN: What should a systems/low-level software engineer know?
1–10 of 231 posts
Re: Ask HN: What should a systems/low-level software engineer know?
#2Re: Ask HN: What should a systems/low-level software engineer know?
#3[0]: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
Re: Ask HN: What should a systems/low-level software engineer know?
#4This comes up incredibly frequently, and having it be second nature will benefit you.
A lot of the time, this gives you a starting place for how your inputs and outputs should look, what your method signatures should be. For example, if your data can can fit in a uint8_t, why waste bytes on a uint32_t?
This isn't the be all and end all, especially since modern architectures use larger word sizes/RAM is plentiful/bandwidth is cheap, but it can be a helpful way to frame the conversation when you're architecting software (especially network protocols).
Re: Ask HN: What should a systems/low-level software engineer know?
#5Re: Ask HN: What should a systems/low-level software engineer know?
#6I prefer to generate them, so I would add to that "tools for generating C code and state machines".
(Tangent: A guy who worked on Verilog and FPGAs told me that the "whole idea" is state machines... and they are hard to get right.)
Re: Ask HN: What should a systems/low-level software engineer know?
#7In embedded and systems-level programming, something I find indispensable is knowing what values fit in what types (for example, an 8-bit type can represent a maximum of 256 values; a 16-bit type can represent 65536 values). This comes up incredibly frequently, and having it be second nature will benefit you. A lot of the time, this gives you a starting place for how your inputs and outputs should look, what your met…
Re: Ask HN: What should a systems/low-level software engineer know?
#8I would like to start by Ulrich Drepper' famous paper What Every Programmer Should Know About Memory [0] [0]: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
Re: Ask HN: What should a systems/low-level software engineer know?
#9I would like to start by Ulrich Drepper' famous paper What Every Programmer Should Know About Memory [0] [0]: https://people.freebsd.org/~lstewart/articles/cpumemory.pdf
Genuinely curious how useful this has been to you, personally.
Re: Ask HN: What should a systems/low-level software engineer know?
#10In embedded and systems-level programming, something I find indispensable is knowing what values fit in what types (for example, an 8-bit type can represent a maximum of 256 values; a 16-bit type can represent 65536 values). This comes up incredibly frequently, and having it be second nature will benefit you. A lot of the time, this gives you a starting place for how your inputs and outputs should look, what your met…
IMO the book "Computer systems : a programmer's perspective [Randal E Bryant; David R O'Hallaron]" provides a good foundation on this and other lower level system details.