Servey Question.

How many you programmers have a working knowledge of how compilers work? The philosophy and mathematics behind them. Different stages. The choices one might have to make at different stages. Reasoning about the said choices. Difference between different paradigms -- philosophically and implementation wise. The tools one might use.

Reason behind I'm asking this is that I got into a debate with a friend where he said 9/10 of people whom we call "developers" have little to no idea how compilers work.

  • 6
    I would make it 10/10 !! I have yet to meet a person who has clear understanding of program image that compiler produce, some of them don’t know that they are using a compiler
    Like JavaScript uses JIT compiler
  • 9
    Well that's easy. The compiler decodes some video- and audiostream into a framebuffer which gets written to the graphics card, and presto, you can see porn.
  • 4
    You throw jibberish in, working binaries come out - bish, bash, bosh ... IOT, Blockchain, the cloud! If the compiler throws your jibberish back in your face you go cry in SO until someone fixes your jibberish and compiler can give you binaries. What are binaries? Should I know? That's what Google is for.

    On a more serious note, it never stops amazing me to come across programmers and people in IT in general who don't know what components even a computer consists of or that storage isn't actually a synonym for "hard disk".
  • 8
    My job is making them so id say i kinda understand how they work.
  • 4
    @yellow-dog that's cool.
  • 3
    You should add interpreters, language virtual machines, and runtime systems to that too. They can be as complex as any compiler.
  • 2
    I do (or I did, I'm beyond rusty now) because I studied it extensively as part of my undergrad course.

    But tbh, I suspect most don't, and I'm perfectly fine with that. You sure as hell don't need to be up there on compiler theory to be a great dev.
  • 0
    I know the basic concepts of how a compiler works, but not specific ones.

    Much like I know how engines work, but not how the engine on a rx8 works.

    Most the devs I work with don't even know the 7 layers or how anything outside of their language works.
  • 1
    I know, what a compiler is and how to build one on an abstract level. But i have some experience in building simple interpreters.
  • 0
    I have some understanding but not very detailed, also done a bit with interpreters and will study compilers and execution environments in the fall
  • 0
    Yes, and I'll do you one better: I've actually written one. For a dirt-simple custom language and just as an "I want the experience" sort of thing, and I wouldn't claim to be an absolute expert or anything, but I did it. But, having said that, I think your friend is 100% right. Most developers don't have a clue. They MIGHT know the basic components and flow at a high level, and even THAT is probably less than 50%. I'm not sure I'd say that's any kind of problem, but I do think it's accurate.
  • 0
    I haven’t made one but I’ve done a lot of research on the topic so I know a bit about them and how they work
  • 0
    We had a whole class on languages and compilers. I'd say I have a decent understanding on how code gets parsed and translated into bytecode. The knowledge is pretty useful
Add Comment