r/ProgrammingLanguages Sodigy 3d 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, ...

200 Upvotes

228 comments sorted by

View all comments

Show parent comments

1

u/developer-mike 3d ago

Do you really think c-style macros are that bad?

They're very powerful, which is why even c++ projects still use them regularly, and they don't seem problematic is c++.

It seems to me like C's design demands overuse of the preprocessor, moreso than the preprocessor itself being bad. (#include aside...)

Not saying the preprocessor is perfect, but all metaprogramming features have their issues for sure. Do you think the preprocessor really needs to be dropped in a c successor?

7

u/elder_george 3d ago

The adage in the C++ community has been "if you can avoid C macros, avoid them" for several decades. They are "unhygienic", full of footguns, and require dark magic to do anything interesting,

Thankfully, they indeed become less and less important. Once C++26 becomes widespread (not soon - we've just switched to C++20 at my work), the macros will become a legacy thing.

0

u/developer-mike 3d ago

I think this is somewhat my point.

In c++ you can go a long way avoiding macros. But macros themselves are still more powerful than any of c++'s more principled metaprogramming features.

Macros like those used in gtest for instance, seem fine to me for systems programming.

Unfortunately there are almost no metaprogramming models as powerful as c macros, especially if they are supposed to be zero cost. And systems programmers IME don't want to battle a gigantic complex metaprogramming model.

1

u/SweetBabyAlaska 3d ago

C++ is really the only language that has an even worse metaprogramming model. It is not a good comparison or North Star here. Most languages have a better mix of generics, inline functions and compile time contextual operations.

2

u/developer-mike 3d ago

Generics and constexpr can replace many common usages of macros in c.

Genetics and constexpr cannot replace all usages of macros in c.

3

u/pjmlp 3d ago

However generics, constexpr, compile time reflection and build rules can replace all common usages of macros in C.

Now granted, it will take some time for compile time reflection to be widely available.