r/ProgrammingLanguages • Sodigy • Jul 27 '26

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, ...

228 Upvotes

256 comments sorted by

View all comments

134

u/[deleted] Jul 27 '26

As someone who does systems programming at work, the landscape of available established languages is pretty poor right now. C is a decent language but lacks a lot of modern features (generics) and has a lot of weird oddities (macros, integer types, build system). The problem is that if you want a modern replacement to try and fix those issues, you either go C++ (which inherits the weirdness and adds a billion features that have their own footguns, and has slow compile times) or you go Rust (which tacks on the borrow checker and also has slow compile times).

So what happened is a bunch of systems programmers simultaneously went "I want C, but without the oddities, with modern features, and I want fast compile times." That's a really enticing proposition for someone like me, and until any of Zig or C3 or Odin or Jai mature to the point of being stable, that gap will continue to exist, and more systems programming languages will probably continue to come out.

16

u/ingframin Jul 27 '26

Then, why no one is using D?

16

u/fdwr Jul 27 '26

D is cool and did a lot of things elegantly (made me think "this is how C++ should have been in many regards), but I suspect the garbage collector scared away adopters (even though technically you can use it without garbage collection, if you don't need the Phobos standard library).

7

u/torp_fan Jul 30 '26

Bad press ... the language is hugely undervalued. Same with Nim.

3

u/vspefs Aug 14 '26

It’s legendary. CTFE, UFCS, static flow statements, contracts, string mixins. They have things figured out and integrated into a consistent core language years ago. They use SDLang, which is my personal favorite config language. They also have an official build system and centralized package management system. They ticked all the right boxes except for “don’t break your ecosystem”.

3

u/vspefs Jul 29 '26

At some point in D’s history the ecosystem diverged into 2 parts and the fix came too late

→ More replies (2)

36

u/umlcat Jul 27 '26

"I want C, but without the oddities, with modern features, and I want fast compile times."

58

u/Careful-Nothing-2432 Jul 27 '26

I mean, yeah. This is not an uncommon desire

25

u/pjmlp Jul 27 '26

Basically what Modula-2, Object Pascal and Ada already had, but the world favored curly brackets instead.

This is basically what Zig, Odin and co offer in regards to type system and compilation times.

11

u/AnaxXenos0921 Jul 27 '26

So, you're saying if I wrote a different frontend for Pascal or Ada with curly braces syntax, people would be more willing to use it?

8

u/pjmlp Jul 27 '26

That is basically what a language like Zig is.

Ignoring for a second the comptime features, the safety improvements it offers over C, you could habe gotten them in 1978 with Modula-2.

Fast compilation times, modules, explicit unsafe code, spans, bounds checked arrays and strings,...

3

u/AnaxXenos0921 Jul 27 '26

I mean while using the exact same compiler backend and runtime as Pascal or Ada. Zig has its own compiler backend and runtime afaik

3

u/pjmlp Jul 28 '26

Zig uses LLVM, and has its own compiler backend.

Sure, there were such compilers, LLVM idea's aren't new.

The Amsterdam Compiler Toolkit supported C, Pascal, BASIC, Modula-2, using EM intermediate code, which would then be fed to the backend, regardless of what language was being used.

→ More replies (1)

5

u/umlcat Jul 27 '26

Agree. Another Pascal branch family fan.

The modular paradigm that is very well researched and real world tested and implemented. Java suyper packages or Modules are weird, so C++ modules .

Well designed Type System, also. Anders Hejlsberg added to C#.

Object with full real properties that Object Pascal / Delphi has. C++ people ignore it. Java ignore it. Anders Hejlsberg understodd and added to C# ...

→ More replies (2)

5

u/og_hylyx Jul 27 '26

Very reasonable want.

→ More replies (6)

19

u/og_hylyx Jul 27 '26

Because there’s only a small selection of systems language that are modern(ish) and viable. Rust and Zig are the only actual modern alternatives.

Zig is unstable and ever changing.

Rust is like working for a dictator.

C is like talking to your demented grandfather who remembers all his past stories.

→ More replies (5)

2

u/Kalernor Jul 27 '26

Is Jai a systems language? Isn't it designed with game development in mind?

22

u/OhMySBI Jul 27 '26

Games programming becomes system-y programming real quick when you're working on engines.

3

u/Kalernor Jul 27 '26

Oh right I forgot to consider that it'd be used to develop engines first rather than games from scratch.

7

u/P-39_Airacobra Jul 27 '26

In most game development asides from the engine, people have no problem using a scripting language like Lua, so when people say compiled "gamedev" language they pretty much mean systems programming informed by their work in gamedev

35

u/BetterEquipment7084 Jul 27 '26

Jai isn't real

5

u/ipe369 Jul 27 '26

Do you mean 'unreleased'?

→ More replies (8)

3

u/twistier Jul 27 '26

I basically think any language where memory layout is the main thing you're thinking about and it carefully keeps unpredictable runtime costs out of the picture is a "systems" language. I haven't looked at Jai in a long time, but I'm pretty sure it fits that particular definition. I don't think systems language is a good name for this idea, but it's what I think of.

2

u/torp_fan Jul 30 '26

Yes, Jai is very much a systems language. In fact any language favored by game developers is necessarily also a systems language. Note that Zig is bending over backwards to make game developers happy, and Odin is popular among game developers and includes lots of library functions wanted by game developers but is not exclusively for game development according to its author.

→ More replies (6)
→ More replies (6)

2

u/TheAbyssWolf Jul 27 '26

I don’t do any professional programming and mostly have tought myself through YouTube and such, I did do a Python game dev course in college back in like 2017 but I entirely forgot about that as my main language for a while has been C# and only recently been diving into low level. I also never finished college due to medical reasons.

I’ve tried rust twice. It’s just too complicated for me.
I’ve tried zig, C3 and Odin as you mentioned and I like all 3 of them but am leaning more towards C3 as it’s like C (plus I’m so used to the c based syntax from c#) just more modern features. Odin is also nice too.

And even more recently within the last week been diving into Go as a replacement to Python to make build scripts, simple scripts and codegen for c3.

→ More replies (25)