Introduction

Work-in-progress and I know programmers can be very opinionated (myself included although I try to express it in a positive way). Feel free to propose suggestions.

Glossary

  • low-level, high-level: the level of abstraction. Machine code like 001101111011010111110100001101101 is lower level than Python like print('hello world'). Higher-level code is generally slower, and easier to understand for humans.
  • frontend, backend (web): runs in the browser vs. runs on the server

Numbered Criteria

  • speed: how fast does it run?
  • readability: how good is it to read (and write)?
  • ubiquity: how widely used is it?
  • applications: range of applications - how many different kinds of program can you write with it?

The list

  1. Rust

    Rust is a new and massively up-and-coming language. It’s a low-level language that’s more memory-safe, thread-safe, safe in general (it’s much harder to create very dangerous undetected bugs), faster, and far more modern than C.

    • speed: 5/5
    • readability: 4/5
    • ubiquity: 2/5
    • applications: 3/5
  2. Python

    Python is one of the most popular languages - occupying a top three spot with growth of about 10% per month as of 2018.2 It’s a carefully designed language with a focus on readability. It’s very high level but it can be extended in C and C++ easily as it’s implemented in C. Take SciPy and PyTorch for example. It’s my native language and the second one I learnt (love you Scratch). It’s often taught as a first language due to how readable it is - I was taught it at GCSE and in my degree.

    • speed: 2/5
    • readability: 5/5
    • ubiquity: 4/5
    • applications: 3/5
  3. C

    C is one of the oldest languages still in widespread use. It’s a low-level language that adds a bit more readability to assembly while wrapping it pretty closely.3 It’s vital because of its use in a massive number of programs from the Linux kernel to Git to the official implementation of the Python interpreter, not to mention being one of the best languages for embedded systems and microcontrollers, amid attempts to get higher level languages on them.

    • speed: 4/5
    • readability: 2/5
    • ubiquity: 4/5
    • applications: 4/5
  4. JavaScript

    JavaScript is strictly called ECMAScript. The guy who invented ripped off Java’s name and is also a bastard in general besides both inventing javascript and giving it a dumb name.

    Anyway, JavaScript has to make this list due to being the main if not only language for frontend web development, as well as widely used in another applications, mostly web backends, thanks to the Node.js runtime. It’s high-level but not amazingly well designed.

    • speed: 2/5
    • readability: 3/5
    • ubiquity: 4/5
    • applications: 4/5

Mentions

Go is similar to Rust in that it’s similar to C but newer and better. Go is more focused on the web and can be compiled into JavaScript for frontend development as well.

Ruby is similar to Python. It pre-dated Python and helped inspire it. It’s used in similar applications, like web backends and command line scripts; in fact, it was largely popularised by the Ruby on Rails web framework. This site actually runs on Jekyll which is made in Ruby.

When I think of Ruby I often get a vivid mental image of a gem-shaped object with a hard red membrane and delicious green goop inside. I don’t know if I can explain this or if I should try. Yim yum.

Java is a higher-level and object-oriented descendant of C. Essential for Android development. There are a number of similar languages like C# (C Sharp), which is made by M*cros*ft and used in the Unity game engine, and Objective-C, which is made and almost exclusively used by Apple. Swift, also made by Apple, is a successor to Objective-C which is essential for iOS development. C++ is another object-oriented C descendent, but it’s not as Java-like the others mentioned because it’s more low-level than them, and backwards compatible with C - most C programs would also be valid C++ programs.

CoffeeScript, TypeScript, React, Vue, Angular, and many others are centred around JavaScript.

CS and TS are both languages that just convert into JavaScript. CS improves the design by adding syntax changes inspired by Python, Ruby, and Haskell, like meaningful indentation. TS improves the design by adding strong typing, as the name suggests. Both of them are pretty good.

React etc. are less langauges and more frameworks/libraries for JS. What they all somewhat go to show is how much of a strangehold JS has.

Footnotes