← Back to context

Comment by eadmund

3 months ago

> You know the Linux kernel, and probably most of your userspace, are also written in C?

I’m aware. It would be nice were that not the case. One of my favourite userspace programs uses C, but just to build a Lisp runtime!

> Why do you say systemd is a disaster solely based on its use of the C language

I wrote ‘part of the problem.’ Systemd is a disaster in part due to its use of C. Its bugs are in part because C is not a language which is really suitable for abstraction and reasoning over abstractions.

I do think that what systemd does is more complex than the parts of a kernel which require assembler or C. I wasn’t constructing a full argument, just opining. I think that the sheer weight of C required to do anything complex makes it very difficult to reason about what that code is doing. Languages higher on the abstraction curve make it easier to reason about abstractions. Reasoning about abstractions helps prevent design bugs. And also languages with good abstraction capabilities tend to help avoid implementation bugs.