Joshua Spann

Why Your 💻 Programming Language Doesn’t Matter

Language Logos Montage

July 13, 2018

I love to code. I hate the half-zillion languages out there. C is so beautiful, but sucks at strings. C++ is easier with strings and fancy stuff, but too much overkill on typing. Python is the best at typing, but indentation and the goals differ with what I want to code. JavaScript is in line with my goals, that is if it wasn’t JavaScript.

Each language has pros and cons. I see tons of videos on “What Programming Languages to Learn in xxxx” and articles on “Top Programming Jobs” and “The Hottest Languages”. I prefer to think that French, Italian, or Japanese are the hottest languages. Regardless, the language you use is a tool. A means to an end. You hear “Use what’s best for the job” but what even is the job, let alone the best match for it?! C for microcontrollers? JavaScript for web? Assembly for masochists? Binary for Kamikazes?!

I’m saying that all languages suck. They’ll never be good enough. Even if JavaScript took itself seriously. Languages evolve and change. What matters is not the language, not the tools, but the workflow and the paradigm that the languages support. You have imperative programming: Assembly, BASIC, C. You have object-oriented: C#, PHP, *shudders* Java. You have functional: Haskell, Lisp, Erlang. Then you have the multi-paradigm: Python. And then there’s JavaScript.

Each paradigm has its own approach. Imperative: here’s a list, we already know what we want, do it. Object-Oriented: here’s different parts so combine, build and reuse them around what we don’t know that we want. Functional: let’s do everything as a mathematical function to reduce bugs and code written, still getting what we don’t know we want. JavaScript: let’s be so amazing but have (1.0000000001 === 1) evaluate to true.

I love JavaScript and C. If JavaScript would not be so quirky and have a syntax that barely uses modifier keys (Shift+9 to get a (, etc), it’d be wonderful. It can go imperative, it can go OO, it can go functional. But knowing JavaScript will not make me a better developer. Knowing the fundamentals of the major paradigms is vastly more important because you know how to achieve a goal. The hard work will be “what is the syntax for this concept?” instead of “I only learned JavaScript so I can’t code in C”.

Don’t focus on a specific language. Play with the major ones to learn about syntax differences: C++, Java, Python, JavaScript. Focus your effort on all the paradigms, then you will know what tool is best for the job. Know how the paradigm gives you ways to achieve the goals. Express that path in your language of choice. Just note that some languages are better suited for rapid development (Python, JavaScript), some are better for speed (C, C++), and some just help you get carpal tunnel and take more time to type stuff (Java, but that type safety tho: 🔥).

Once you know the basics, the language is just artistic expression. Choose the one that achieves your project’s goals.