| Ad hominem attacks on this page notwithstanding, he's not wrong. The reliability and simplicity of 'getting to a shell prompt' out-of-the box for ubuntu also seems to me to be on the decline over the last ten years. And going much farther back, I would say that inscrutability of boot problems might be at its all time worst. I have ubuntu systems that will hang for 60 seconds on network failures, or sometimes just refuse to boot. It is very, very frustrating. And, I'm not a linux newbie -- the first linux kernel I installed was 0.99pl14 on a floppy(!) based slackware system, and I spent years overseeing slackware, then redhat, then ubuntu systems. I don't think it's a big surprise that CoreOS is so appealing; there's just an awful lot of magic and surprise baked into your standard ubuntu install right now. |
Almost everything underneath your GUI (and often times, it even is your GUI, cough Gnome...) is written in C.
C is good for micro-systems where you do not want to implement all the abstractions higher level languages require. It is good for implementing low level functionality in other languages (like Python) or for writing a first-try compiler in on a new platform because of its simplicity.
It is not appropriate for an entire OS stack including tens of millions of LOCs across thousands of projects and a hundred thousand developers. At least in the modern age when we have everything from OCaml (1996) to Rust (2015) showing how to do bare metal safe and fast. Even C++ is moving towards a safe yet fast subset of the language where you should never use new / delete anymore.
Going forward, probably the most important revelation the free software world is going to need to go through is that for your own personal projects, being a whiz C expert that can hyper-optimize pointer math is great. But as soon as you start accepting merge requests, or even worse start delegating maintenance of your codebase across multiple people, C is going to cripple you.
Like I said, it is not C's fault. It is the dogma of Unix that the community holds sacrament - you write it in C, you use pipes, raw IO buffers, and to question that holistic view is to be opposed to everything about it, even if all you take issue with is the complications imposed by using C everywhere (OpenSSL, Systemd, the kernel, udev, NetworkManager, and in personal projects I have had to contend with deep buffer overflows / pointer misalignment / offset miscalculation in things like pulseaudio, SDL, Mesa, Wine, etc).
Maybe when the systemd developers pick their next slice of userspace to bring into the collective, they might possibly consider using a higher level language to implement it in. Not because they are bad developers, but because the code they write is not just about them. Think of how many headaches new work could avoid using something safer like D, or Rust, or even a restricted subset of C++.