Language Levels


I am well aware everything I say is arbitrary and it’s all just for fun.

Some debates online often end up with people not agreeing on what languages are high/low level. In part definitely because of the relative meaning which even the wiki mentions, however even the definition of high-level meaning “with strong abstraction” is definitely not good. It places C++ for example among the high-level languages which certainly it shouldn’t be unless we want ASM/C to be low and everything else be high.

So we need more levels to spread out all the high-level languages, and those levels should probably be based on objective features not on vibes, so we can relay information even if everybody didn’t agree that the scale is correct, at least they’d know how to rank a language.

The other idea is that languages have multiple features so they can be high-level generally but allow for inline assembly, so these categories probably form a range of things that a language covers rather than a simple number of everything it allows. So we have a language level of X-Y, basically Y asks how high we can go and X asks how low we can, or indeed how low we are forbidden from going.

Observations🔗

Before starting I’d like to construct a small graph that compares relative language levels based on my opinion, to hopefully get a grasp of some objective equivalence classes we can find.

ASM

C

Pascal

Fortran

C++

C#

Coq

Haskell

Lisp

Python

Bash

Java

ECMAScript

Rust

Go

SQL

JavaScript

Prolog

An arrow means, is lower-level than

Now for a few ideas for relevant rateable categories:

I don’t mention some implementation specific details, as we are talking about language not implementations, so compiled vs. interpreted isn’t applicable.

These seem to be in a few categories:

If we just index these then we can rate some langs:

MemorySemanticsFeaturesetASMLLVM MemorySemanticsFeaturesetPythonC MemorySemanticsFeaturesetLowHighSpringC#
  1. The language does not have an idea of program flow, rather it implements, Rules, Agents, or Objects