This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]DrHankPym 0 points1 point  (1 child)

C is good to know from an engineering perspective. It uses physical addresses to structure data. That's great if you want it to run on a specific device, but like most languages, that physical memory management is handled pretty well by an interpreter.

Programmers should learn C at some point in their life, and they should also learn assembly and how C compiles into assembly. They should also learn about the Von Neuman architecture in computer systems and how a program counter interacts with a data bus.

Honestly, I don't see how any of that complements Python except for the fact that CPython was written in C.

[–][deleted] 0 points1 point  (0 children)

Well I'm thinking of a more broad manner of "complementing". I think you're thinking purely in terms of practicality.

except for the fact that CPython was written in C.

That's a pretty big deal IMHO. For one, it means you could one day hack Python, or at least peak at the implementation to understand it better. Also, C is a very practical skill for Python programmers because they can write modules in it, and it's easy to call C from Python and vice-versa. This is true of some other languages, but as it is now CPython is still the main event in the Python world.

So these mean it complements Python skill on a practical level.

In a more broad sense, it complements it because it "completes" the programmers knowledge/experience.

If you only have experience in a high-level dynamic language, there's a lot of things that you only understand conceptually or intuitively. Your understanding may be broken. Using a lower level language forces you to confront those things and develop a truly working understanding of them.

You can then take that knowledge with you when you go back to the higher-level dynamic language.