hardware - How much should the average developer know about the bare metal? -
It hit me the other day that I do not know almost anything about hardware that I want to run my software. I have been a god for almost 5 years, but I have not seen hardware theory / design since leaving university. I will not make my machines anymore because, sincerely with brutality, I will pay a few extra bucks and let the vibrational drop-out make it for me at the shop.
Although it is clearly important to understand the basics of what is happening under the hood, it has been deemed to be so far away from us as the deities that we actually have the Program I / Do not worry about the complexity of O
or memory mechid I / O
etc., ..
Or do we?
Note that I am talking about your every day LOB Dev here and there are not dedicated bare metal boys.
So, define 'average' how will you do it but altogether, how should a competent programmer be able to dive?
It depends on the high level of your development.
- If you develop for an embedded system, then it means that many hardware knowledge (up to EE level)
- If you are in a particular area, like games For low-level 3D graphics programming, you should know these and exclusions of specific graphics cards.
- If you do not have web or desktop applications, probably not too much.
But in all the development, you probably should know the basics. E.g.,
- Where are the barriers to Von-Newman architecture?
- How the CPU cache works (important in multi-threading)
- How does the OS scheduling differ on a single-processor multi-processor CPU (again, significant in multi-threading)?
- The way Io works and when you write a file, it does not mean that your data is immediately being released.
- How slow is the IO and why the most database applications are IO-tied.
- Why the network is slow and less reliable than Io (and wireless network). On the other side, I do not think the general information about the difference between memory mapped IO, or the difference between NAND and NOR flash is. * (Desktop / web) is really important for the developer. Even the knowledge of the architecture of a modern CPU is probably going to be a science, which is not so complicated in the past years, it has not been told (this article link shows that it is now compromised on compiler It is difficult to lower-level adaptation) It is similar to being a car mechanic, some decades ago was not easy, today it is not that many people will try to fix their own cars.
** The definition of "average" may vary. *
Comments
Post a Comment