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.
Now for a few ideas for relevant rateable categories:
- Ability to write ASM
- Arbitrary memory access
- Encapsulation of structure
- Encapsulation of behaviour
- Polymorphism
- Complete separation from the idea of memory
- Missing general-purpose features (DSLs)
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:
- Memory
- Raw access
- Only allocation information
- No description of memory model
- Semantics
- ASM
- Behavioural abstraction
- Data encapsulation
- Monomorphised Polymorphism
- Polymorphism
- No flow correlation1
- Featureset
- ASM
- Lack of expected general-purpose features
- No Arithmetic
If we just index these then we can rate some langs:
-
The language does not have an idea of program flow, rather it implements, Rules, Agents, or Objects ↩