MySQL and MariaDB are a mixed of C++ and C nowadays [^2] [^1]. Most Database reimplementation nowadays are C++, Go or more recently (Rust).
> - message buses: DBus (C)
ZeroMQ is C++, Same for gRPC (reference of RPC nowadays), same for Thrift [^4]
> - games
Almost all triple A use the Unreal Engine or an home made engine in C++. Even Unity that brand itself as C# uses some C++ internally.
> distributed systems
Almost all Distributed system in the HPC world is C++ or Julia nowadays, with a bit of Fortran surviving.
> - AI runtimes
AI means often GPU usage, GPU usage means CUDA, meaning C++. That's valid for the today three main contenders (Tensorflow, pyTorch, MXNet ) and they all provide a python API on top of C++.
> Now let's add one obvious category which was suspiciously left out from this list: operating systems: Unix, BSDs, Linux, Plan 9, Illumos, GNU Mach, Windows NT, XNU --- there is almost no C++ here (and any C++ that there is in just the last two).
C++ is also in Fushia (Google) and BeOS/Haiku. But OS are mainly C (or Rust nowaday) because kernel space. Exception handling is problematic in kernel space.
[^1]: https:/github.com/MariaDB/server [^2]: https://github.com/mysql/mysql-server [^3]: https://zeromq.org/ [^4]: https://github.com/facebook/fbthrift
Regarding DBs, there is also ScyllaDB which really take advantage of the modern C++ realtime application design.
DBus is just a spec, the reference implementation is in C, but for example QtDBus is in C++.
Also the original unix predates C++ by ten years at least [1], so it is unsurprising that all descendants (direct or not) are written in C.
[1] C was designed to implement unix in the first place.
I'm not even going to debate C++'s merits at this point. Everybody's had enough of that already. There are people who stick to it and there are those who bailed after a while. It's just that, if I have a choice, I won't work with the people who belong to the former group.
> Irrespective of what language you actually choose to write your project in, if you want to learn how databases, caching servers, language runtimes, compilers, allocators, message buses, games, rendering engines, browsers, distributed systems, AI runtimes etc are implemented then the cutting edge as it exists right now is mostly written in C++.
First things that come to mind when one hears:
- databases: PostgreSQL (C), MySQL (C), Berkeley DB (C), SQLite (C)
- caching: memcached (C)
- language runtimes: Java (C++), Python (C), Go (Go), Chez Scheme (C + Scheme)
- compilers: GCC (C compiled as C++), Clang (C++), GHC (C + Haskell)
- allocators: glibc malloc (C), jemalloc (C), tcmalloc(C++)
- message buses: DBus (C)
- games: some people write C, some people write C++, some people write C# and some write Swift
- rendering engines: C++ is admittedly popular here, if that's your thing
- distributed systems: this thing is so hyped that it's implemented in every language in existence
- AI runtimes: people here change the language every 2 decades. they started with Lisp, now it's C++ + Python, later it will be JavaScript
- browsers: I pity anyone who has to work on this software (I have to)
Now let's add one obvious category which was suspiciously left out from this list: operating systems: Unix, BSDs, Linux, Plan 9, Illumos, GNU Mach, Windows NT, XNU --- there is almost no C++ here (and any C++ that there is in just the last two).
So personally, if I were to write something new in this area, I would choose neither C, nor C++, but when it comes to learning something, it's clear that C is more than enough.
I've been working a lot with C++. I've seen its horror. No more.