It's about time there's some good news in technology. Nvidia replacing C with Ada shows that C is not as hard to replace as the shills want you to believe. OP's article is proof that switching from C to Ada does the opposite of what switching from Ada to C and C++ did for the F-35.
You're not wrong -- perhaps the biggest problem/difficulty is that the industry standardized on C and C++ and waste untold millions trying to "fix C" or make a "Better C" (Java, C#, Swift, ObjectiveC, etc) and now have such emotional investiture it's like looking at a fully internalized Sunk Cost Fallacy.
C and UNIX are the biggest disaster and waste of effort in computer science or possibly any industry ever. Much smaller teams of programmers produced much better languages and operating systems in a lot less time. This is because of how unproductive and inefficient C and UNIX are. They need that much work just to stay up to date. Without 15,600 programmers, Linux (just the kernel) would not be able to continue to run on newer hardware. Better operating systems have fewer programmers because they don't need as many. If 15,600 programmers were told to work on any other operating system, they would literally have nothing to do.
The first was an interesting concept that was originally referred to as `potable assembly`
That's revisionism. C was not meant to be portable or assembly. It was meant to be the equivalent to PL/I in Multics and Lisp on Lisp machines. They only started calling it "potable assembly" when they realized that it couldn't compete with real programming languages. That's around the same time they started their "simple and elegant" buzzword describing kludges like using the tape archiver "tar" to copy directory hierarchies. What really sucks is that C is a lot less portable than other languages like Ada, Pascal, PL/I, BASIC, Lisp, Cobol, and so on. Most languages don't care if characters are byte-addressable or any of that other bullshit. Word-addressed CPUs were handling strings just fine before C.
and was based around expanding on another language that didn't even have types.
This part's right, which is why C sucks so much. Types, arrays, strings, compound literals, objects, exceptions, the preprocessor, and everything else in C and C++ sucks because it was not originally there. There is no coherent design like there is in real programming languages. It's like building a house by having a thousand people nail boards together with no blueprints or idea of what it should look like.
Why am I retraining myself in Ada? Because since 1979 I
have been trying to write reliable code in C. (Definition:
reliable code never gives wrong answers without an explicit
apology.) Trying and failing. I have been frustrated to
the screaming point by trying to write code that could
survive (some) run-time errors in other people's code linked
with it. I'd look wistfully at BSD's three-argument signal
handlers, which at least offered the possibility of provide
hardware specific recovery code in #ifdefs, but grit my
teeth and struggle on having to write code that would work
in System V as well.
There are times when I feel that clocks are running faster
but the calendar is running backwards. My first serious
programming was done in Burroughs B6700 Extended Algol. I
got used to the idea that if the hardware can't give you the
right answer, it complains, and your ON OVERFLOW statement
has a chance to do something else. That saved my bacon more
When I met C, it was obviously pathetic compared with the
_real_ languages I'd used, but heck, it ran on a 16-bit
machine, and it was better than 'as'. When the VAX came
out, I was very pleased: "the interrupt on integer overflow
bit is _just_ what I want". Then I was very disappointed:
"the wretched C system _has_ a signal for integer overflow
but makes sure it never happens even when it ought to".