Click here to Skip to main content
15,885,366 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

 
GeneralRe: How common is this? Pin
Mircea Neacsu26-Jun-22 13:34
Mircea Neacsu26-Jun-22 13:34 
GeneralRe: How common is this? Pin
trønderen26-Jun-22 16:54
trønderen26-Jun-22 16:54 
AnswerRe: How common is this? Pin
Gary R. Wheeler26-Jun-22 5:59
Gary R. Wheeler26-Jun-22 5:59 
AnswerRe: How common is this? Pin
Daniel Pfeffer26-Jun-22 6:13
professionalDaniel Pfeffer26-Jun-22 6:13 
GeneralRe: How common is this? Pin
trønderen26-Jun-22 13:08
trønderen26-Jun-22 13:08 
GeneralRe: How common is this? Pin
Daniel Pfeffer26-Jun-22 20:12
professionalDaniel Pfeffer26-Jun-22 20:12 
AnswerRe: How common is this? Pin
Nelek26-Jun-22 10:32
protectorNelek26-Jun-22 10:32 
AnswerRe: How common is this? Pin
trønderen26-Jun-22 11:51
trønderen26-Jun-22 11:51 
I have met people who had to be able to imagine the microcode, and the specific signals sent to the various units of the CPU, to feel that they had a good grip on the software. Knowing the nature of static vs. dynamic RAM is essential to understand the effect of cache size on performance.

When compilers started using optimizing techniques (that was with Fortran II, wasn't it? Long before my time Smile | :) ), I lost grip on how the assembly code generated from my high level code will look. The optimizer moves stuff all over the place, may remove significant parts (e.g. as unreachable, or because that subexpression was calculated earlier so it is available in a temporary location), and so on.

Donald Knuth didn't trust any high level concepts. If he had, maybe his Bible would have gained a large following. It ended up with his Bible being something that sits on the bookshelf. To learn algorithms, you rather go to books based on concepts relevant to the programmer's problem, not to the CPU designer.

Gradually, I have come to trust the compiler. I know that not everyone does: In my scrapbook archive, I have preserved a discussion from a network forum where this one guy fiercely insisted that the VAX C compiler should have generated a different instruction, which this debater thought more appropriate. Others pointed out that the actually generated code was faster, but the debater stuck to his conclusion: The compiler was defect, generating inappropriate code.

Yet ... I am sometimes shocked by how willingly youngsters even with a university degree accept that "If you just flip this switch and push that button, it works - but I have no idea of why!" I still maintain that you should understand what is going on at least one level below the one you are working on. The thing is that today, I work at least two levels up from where I was as a student. Microcode and assembler is way below my current programming problems. I relate to objects and structures and parallelism, not to bytes and instructions. Say, subclassing and superclassing; that is understood conceptually, not as how they map to machine instructions. Not even how they map to C! My first encounter with C++, in my student days, was a compiler translating C++ to K&R C code, which required a second compilation pass. I enjoyed it then, but nowadays, I no longer find it worth the effort. Same with overloading: I learned how the compiler generates method labels based on the argument classes. Today, I know that the problem is solved; I have to know the rules for legal overloading, but not which signals the instruction decoder sends to the various parts of the CPU. Not even the binary instruction.

Obviously: If I were working with low-level drivers directly interfacing with hardware, instruction and binary data formats would be essential to understand. But not even a driver programmer needs to be concerned about internal signal paths in the CPU.
GeneralRe: How common is this? Pin
Daniel Pfeffer26-Jun-22 20:47
professionalDaniel Pfeffer26-Jun-22 20:47 
AnswerRe: How common is this? Pin
jmaida26-Jun-22 17:01
jmaida26-Jun-22 17:01 
AnswerRe: How common is this? Pin
Sander Rossel26-Jun-22 20:49
professionalSander Rossel26-Jun-22 20:49 
JokeRe: How common is this? Pin
Daniel Pfeffer26-Jun-22 21:40
professionalDaniel Pfeffer26-Jun-22 21:40 
AnswerRe: How common is this? Pin
Cpichols27-Jun-22 2:46
Cpichols27-Jun-22 2:46 
AnswerRe: How common is this? Pin
JohnDG5227-Jun-22 7:28
JohnDG5227-Jun-22 7:28 
AnswerRe: How common is this? Pin
englebart27-Jun-22 7:45
professionalenglebart27-Jun-22 7:45 
GeneralSo the pigeons in our yard started programming Pin
Daniel Pfeffer26-Jun-22 2:40
professionalDaniel Pfeffer26-Jun-22 2:40 
GeneralRe: So the pigeons in our yard started programming Pin
Peter_in_278026-Jun-22 3:11
professionalPeter_in_278026-Jun-22 3:11 
GeneralRe: So the pigeons in our yard started programming Pin
DRHuff26-Jun-22 7:52
DRHuff26-Jun-22 7:52 
GeneralRe: So the pigeons in our yard started programming Pin
Gary R. Wheeler26-Jun-22 8:35
Gary R. Wheeler26-Jun-22 8:35 
GeneralSo my cat started programming ... PinPopular
OriginalGriff26-Jun-22 2:16
mveOriginalGriff26-Jun-22 2:16 
GeneralRe: So my cat started programming ... Pin
CHill6026-Jun-22 3:20
mveCHill6026-Jun-22 3:20 
GeneralRe: So my cat started programming ... Pin
AndyChisholm27-Jun-22 3:15
AndyChisholm27-Jun-22 3:15 
GeneralRe: So my cat started programming ... Pin
CHill6028-Jun-22 0:36
mveCHill6028-Jun-22 0:36 
GeneralRe: So my cat started programming ... Pin
trønderen26-Jun-22 5:39
trønderen26-Jun-22 5:39 
GeneralRe: So my cat started programming ... Pin
Gary R. Wheeler26-Jun-22 6:02
Gary R. Wheeler26-Jun-22 6:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.