Timeline for Is it necessary to understand what's happening at the hardware level to be a good programmer?
Current License: CC BY-SA 3.0
11 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Jan 3, 2022 at 19:32 | comment | added | DrM | You started with no, that's not good. And I do know pretty accurately what's going on at the hardware level at any moment that it is important to me. When I use an abstraction layer, I've decided that the convenience of it, or the savings in development time, is more important than the inevitable cost in performance and often, reliability as well. Sometimes that is okay, but every system I have built resorting to that, has limitations it would not have if I had not used those abstraction layers. So, knowing what is going on, for me, has repeatedly proven itself vitally important. | |
Jan 2, 2022 at 17:46 | comment | added | Caleb | @DrM It’s one thing to understand how the hardware works generally; another to know exactly what’s happening at any given moment. There are many layers of abstraction meant specifically to prevent us from needing to worry about exactly what’s happening at lower levels. Did you read the “yes” portion of my answer? We’re probably not that far apart. | |
Jan 2, 2022 at 17:24 | comment | added | DrM | I disagree. (A) Many people understand what happens a the hardware level. We learn and teach that in Com Sci/Eng departments everywhere. (B) Not understanding what happens at the hardware level can result in programs that are spectacularly inefficient and fail sporadically. | |
Oct 19, 2011 at 19:55 | vote | accept | bev | ||
Oct 18, 2011 at 23:04 | comment | added | bev | Ah, OK. The home page is a little murky on that aspect of their products. I'll look again. | |
Oct 18, 2011 at 7:16 | comment | added | Caleb | @bev: If you just want to find out how functions are called, you can probably spend 30 minutes reading about that and be done. If you want to get a better sense of how everything works together, it'll be easiest with a small system. It's the best way to get the whole onion in your head at once. AVR, the family of chips on which Arduino is based, is a nice, general purpose, easy to use system with an instruction set that's small enough to learn without too much trouble. | |
Oct 18, 2011 at 6:13 | comment | added | bev | sorry to be dull, but I checked out Arduino, and I can't really see how using it would help me understand how a compiler treats pointers and arrays differently. What am I not seeing? | |
Oct 18, 2011 at 3:32 | comment | added | Caleb | @bev: In that case, you really should check out a platform like Arduino. | |
Oct 18, 2011 at 0:04 | comment | added | bev | Thanks. This basically answers my question. I'm an EE who has done chip-level (i.e. transistor-level) design of registers, adders, multiplexers, etc, so I get the lowest level (unless we're talking quantum mechanics). I also can use the languages I know fairly well. I just have a huge gap in the middle level (stack, heap), where you say the compiler does its work. Since, as you put it, I want my programming experience to be "less mysterious and,..., more magical." it seems like i should study the levels that are still unknown to me. | |
Oct 17, 2011 at 23:05 | history | edited | Caleb | CC BY-SA 3.0 |
added 587 characters in body
|
Oct 17, 2011 at 22:58 | history | answered | Caleb | CC BY-SA 3.0 |