C is a Wasteland
rs.io
rs.io
* At the time of C's creation, there was (among others): Fortrans, Cobol, BCPL, and a set of Algols. A cursory check of a programming languages book or Wikipedia will verify the error.
* There are a ton of C libraries. You know, if you want to go and look for them instead of expecting them to be handed to you.
* Concurrency at the C layer is provided by OS/HW primitives. pthreads ain't bad, for all the whinging.
* Manual memory management is very needed in systems programming (embedded programming).
* A need for array bounds checking reflects slower code and lazier coder. Look at Pascal strings for the grief that can cause.
* Better support for splitting- what? I can not perceive the confusion of mind that could generate this statement
* "It's got curly braces, wah". Of all the complaints I have heard, this asinine complaint about (curly braces/parens) is perhaps the most empty.
---
If you want a powerful systems language that isn't C or C++, try Ada. I haven't found a need for it personally, but has one zillion features.
Other languages that might play in this space are Rust and D. Possibly some of the functional languages that compile out to binaries. (OCaml perhaps?)
C is designed for building operating systems with, on fairly marginal resources. It is so excellent at working at that layer that no one has come up with a truly viable surviving competitor in thirty-five years. And, like any other tool, it doesn't really fit in places it wasn't designed to fit.
Glib eliminates a good chunk of the complaints outlined here. Some of it is simply coder responsibility. (Array bounds checking, memory management - should be problems handled with good code review and maybe the help of some 3rd party tools.)
But the last line of the article was what just pushed me over the edge. "Ruby/Python inspired syntax."
So really, the author would just prefer to code in Ruby or Python.
C was created at a time of great effervescence in programming language design. FORTRAN and COBOL were well-entrenched, and it also had to compete against the likes of Algol, Lisp and Pascal. (Also, the correct spelling, in this context, is "its".)
>C, however, has it’s flaws, foremost among them: [...] a woefully inadequate standard library
Sure, you can't do that much with the standard library alone, but C probably has more libraries overall than any other language in existence. Some of them have rather clunky APIs, but on the other hand they're usually very fast and very well tested.
Java or Python are super cool, there is no doubt about it. But when you have to program a metro rail or Eurofighter jet controls, one has to give hard deadline to the tasks. Unfortunately no high level language can be used in such cases. Garbage collection adds undeterminism to the temporal properties of the executing tasks and hence can not be user in real time safety critical domains.
Pretty sure Bjarne Stroustrup said just that.
C++ was designed to be a better C.
D was designed to be a better C.
If Go adds support for generics, manual memory management could be provided by a third party package.