I know a ton of languages, and it is really easy to learn new ones at this point. To the detriment of my cultural experience, I am not talking about spoken languages. In that department, I am sorely lacking. I can speak English, a tiny bit of French (thanks Duolingo, but notice the emphasis on tiny), and that’s it. What I can speak, well read, write, and understand are probably better words, are programming languages. Though I did have my friends challenge me to speak in JavaScript one time, and let’s just say it wasn’t even funny. Anyway, just like other people are fluent in multiple languages, conversational in some, and broken in others, that’s how I am with programming languages (as are other engineers). The similarity is really interesting, but more on that in a bit.
I am most fluent in JavaScript, “conversational” in just a few like C++ and Java, but could probably figure out a dozen others or even more. I know of them, and have even used them, but don’t use them everyday. It would take some work, but it would be so much easier for me than learning a new spoken language. What makes it interesting, is that even in a single language like JavaScript, there are “local dialects” called frameworks and libraries (React, Node, Angular, TypeScript, etc.). They describe specific and slightly different ways of saying things, but ultimately, are the same language.
So you might be asking, “how can you easily learn all of these other languages if even the language you are fluent in has so many variants? Aren’t they also a lot different?”. Yes, they kind of are, but the underlying logical structure is the same. They all solve similar problems of telling computers what to do. Some are “high level” languages and some are “low level”. What that really means is how much translation it takes to get to machine code, also known as binary. The lower the level, the closer it is to machine code, but the higher level languages have to get translated to lower level languages in intermediate steps. That means they will often have similar structures to the lower level languages. Additionally, the logical structures and capabilities needed to instruct a computer only have so many words to define how to do things. Sure, some of the higher level languages group some instructions together as a form of “short hand” to make it easier to perform more complex tasks, but the underlying base language is again, very similar. Just like spoken languages, once you know one or two programming languages, the only things you really have to learn about new languages are the syntax (how to write it), frameworks/libraries (“dialects“), and some of the nuances of that particular language that make it different from others. I know I’ve probably lost you at this point in this weird explanation, but just stick with me.
Didn’t the title of this mention something about a universal language?
— You
Yeah yeah, I’m getting to that. The amazing part about the logical structures that make up these languages, is that they are universal. Any other programmer that understands JavaScript could read my code. We may not be able to actually have a conversation about the code because they don’t know English, but they understand what the code is doing. Understanding English might make it a bit easier, as my variables, function names, and comments would be written in English and therefore not helpful to someone who doesn’t understand it, but not necessary. Disclaimer: I understand that most programming languages have their syntax based in English (if, else, function, class, return, etc.), but the logic behind them is universal. They only have to learn how to utilize the words (much like learning the symbols for math equations). In this way, programming languages are a form of universal language that can allow people to communicate and work together, even though they could never have an actual verbal conversation. It may not be the most efficient, but it is infinitely more efficient than not being able to converse at all.