The Myth of Knowing Everything

I occasionally hear people say, essentially, that all programming languages are the same. For instance, I’m taking a course from a difficult (but good) professor this next fall quarter. I’m a little worried, as the class is traditionally taught in C++, and I’m a scripting language guy. I’ll express this to someone and hear

Ah, but it doesn’t matter. Once you know one programming language, they’re pretty much all the same, right?

No, they aren’t.

Now, sure, if you take a C hacker and make him write Lisp, he’ll probably get the job done. But it’ll look like C, not Lisp, and that is a Bad Thing.

More importantly, take the Lisper and force him to use C, and he’ll be lost without all of the powerful features that he’s used to using all of the time (well, I suppose the C hacker would find the lack of pointers annoying, too).

You see the same thing with any change in paradigm: object-oriented vs. procedural, functional vs. imperative, dynamically-typed vs. statically-typed. If you’ve ever been on a project where someone is learning the implementation language, it’s painfully obvious which code is theirs, because they just approach problems differently.

Good programmers often recommend learning different programming languages, not merely for the practicality, but for the different mindsets gained from each. Trust them, and stop dismissing my fears. Fear can be a good thing.