I keep seeing comic strips classifying programming languages. They’re intentionally offensive, because it’s impossible to say anything about a programming language without offending the language’s users. Which makes sense, because you can’t help but get emotionally attached to the thing you’ve been using for years to weave your dreams. It’s also super fun to be hyper-critical about programming languages to the point of innacuracy. All programmers have been wronged by their language of choice or found themselves in the depths of debugging hell with a foreign language. How can you not resonate with criticism reflecting your pain?
Throwing out all that prior consideration and thoughtfulness, here’s my experience with programming languages in no particular order.
What everything compiles to. Unless it’s running on a virtual machine (like the one for Java or Erlang), but even then, every language bottoms out at assembly. The worst experience ever if you don’t have any tooling.
Because web browsers are virtual machines now, so they need their own assembly language.
Super old language. Still used for writing math libraries and physics simulations that must run as fast as possible.
Successor to Fortran. Runs on damn near everything. It’s what’s probably running on the microprocessors in your car, airplane and your hearing aid.
Business successor to C. Runs most of the world’s banking, insurance and accounting software on hardware. Makes you throw out everything you thought you knew about computers, which means consultants who write this language make tons of money.
The precursor to COBOL. If seen in the wild, be afraid. Be VERY afraid.
Successor to C allowing for Object Oriented Programming and templates. The foundation for many foundational systems.
Saw the code people were writing in C/C++ and decided to make it easier to write parallel code without breaking things. Equivalent to sun breaking through the clouds after 40 days of rain for many C++ systems developpers.
Saw the code people were writing in C/C++ and bring them closer to Smalltalk. Also, wanted to stop people doing evil things like redifining False to 1. Now synonymous with boring business systems.
Google’s response to Java and C++. Compiles fast and runs fast, while still being pretty easy for a programmer to write.
First programming language of many elder programmers because it shipped with a bunch of old computer systems and it was easy to modify games with it.
Seymour Papert’s attempt at a language for children.
Alan Kay’s attempt at a language for children.
Academia’s attempt at an evidence-based language for everyone.
When people who do functional programming have to work with Java people.
Microsoft’s response to Java and C++. Jeff Atwood loves it.
Apple’s response to C++. No one loves it.
Apple’s apology for Objective-C.
The alternative to Java, when you still need your code to run on Android.
Microsoft’s idea of a high level scripting language. Mostly found in Excel macros.
Apparently amazing, but I don’t have a high enough IQ to use it. Let’s people define their own domain specific languages. In theory, extremely powerful. In practice, makes reading someone else’s code extremely painful. The modern manifestation of this is Clojure.
Supppsed to be even more amazing than LISP, but with an equivalently high learning curve. Writing it feels like doing math.
Microsoft’s idea of a functional language.
Apparently even more amazing than Haskell for weird typing reasons I don’t understand.
Haskell, but for building Web pages, instead of proving theorems.
Wait, this is Haskell for building web pages? Ugh. Whatever.
One of the original functional languages. Some people at Facebook are so excited about it, they’re using it for everything.
The original engineering/science language. Unparalleled at creating systems I have no experience with. Horrible for creating a bunch of systems I do have experience with. A bunch of tools are written in this, so it’s still used today in various fields. Great for starting language wars between scientists.
The language scientists should be using today. Fast, understandable and debuggable. The community used to be filled with jerks, but have calmed down now?
A refined Matlab I’ve never used.
Supposed to be a higher level alternative to C. Mostly extinct. Last time I saw it was the testing scripts of a telecom company.
Wanted an expressive way to do things quickly, but ended up ugly as hell. There’s a new version, but I don’t trust it.
Keeps popping up where I don’t expect it, like Game Dev and Deep Learning. Has a JIT so beautiful it makes readers weep.
Designed to help C programmers make web pages. Has slowly gotten better over the years, but still hurts my eyes.
An attempt to put typing into PHP by Facebook to make it faster. Hated by many.
Syntactic sugar taken to its conceptual extreme. Adored by the Japanese. Has this thing called meta-programming, which I’ve never had a need to use, but allowed for the creation of Ruby on Rails which people still swear by for creating websites that need to access and modify a database.
Decided from the beginning to be as understandable as possible. Consequently, has libraries for damn near everything (Deep Learning, scientific computation, statistics, making visual novels… etc). People like to argue about v2 vs. v3, but it’s never been a problem for me.
A language designed for statisticians. Great for starting fights between stats nerds by comparing it to smoking.
The only thing running on the Web for years now, so people have been working really hard to nurture it from its awkward beginnings into a mature language. They have seen moderate success in this endeavour over the last few years. Has started running on servers too, because people hate having to know two languages.
Used by telecom companies and people with super hardcore distributed systems to maintain. Where the Actor model of concurrency comes from.
Glues a bunch of shell tools together. Occasionally abused to create large-scale programs.
An object oriented and API-focused shell language from Microsoft. Mainly praised/derided for not being Bash.
Some next-level systems design language I don’t understand how to use properly. Currently waiting for Hillel Wayne to finish writing his book about it.
Neo-reactionary language that lets you turn political enemies into unpersons.