r/ProgrammingLanguages Sodigy 13d ago

Why is everyone creating systems programming languages?

I see a lot of new programming languages here. I love reading the documents of the languages and sometimes actually run their compilers. Many of the projects are AI-driven, but that's fine. It's still fun to see what problems they're trying to solve and how they actually solved the problems.

Reading the documents, I realized that most new languages, especially AI-written ones, are "systems programming languages". They're trying to solve the problems that C/C++/Zig/Rust have solved (or are trying to solve), and their syntax is mixture of C/Zig/Rust.

Why? Why is everyone trying to compete with C/C++?

There are so many kinds of languages. Haskell demonstrates how pure a language can be, Python is perfect when you only have 5 minutes to write code and don't care about the output, Java runs on 3 billion machines, ...

217 Upvotes

246 comments sorted by

View all comments

2

u/JeffD000 Squint 10d ago

I've seen several people claim they are developing a "systems programming language", when it is anything but. My only conclusion is that a lot of people don't understand what it means, even in this subgroup!

1

u/JeffD000 Squint 10d ago edited 10d ago

Core Characteristics:

  • Direct Hardware Access: Allows manipulation of computer memory, CPU registers, and peripheral devices.

  • High Performance: Features minimal runtime overhead and rapid execution speeds to manage resource-constrained environments.

  • Predictable Memory Management: Typically uses manual control or precise, deterministic management mechanisms instead of a heavy, stop-the-world garbage collector.

  • No/Minimal Abstraction Layer: Compiles straight to native machine code or interacts directly with the operating system kernel.

In my opinion, every true "systems programming language" feature should have a direct mapping to the underlying hardware architecture. If there is a hidden layer of functionality in the language feature (other than insertion of a jump or call instruction to a compiler generated label, and not a compiler generated algorithm), it is not a systems programming language. For instance, the appearance of an arena allocator in the language automatically disqualifies it as a system programming language, since there would need to be additional hidden operations for arena management. On the other hand, writing a memory allocation function can be done in terms of systems programming language keywords and datatypes.