3 ms·
The purpose of C was to be an optimizable low-level language. If programmers wanted those things, the sense was always one of “ok, do it yourself and use it as
by e-dant 5y ago
The purpose of C was to be an optimizable low-level language. If programmers wanted those things, the sense was always one of “ok, do it yourself and use it as a library.”
There are definite pros and cons to that particular standards methodology. It is, without any question, the most distributable language. The ABI is and will likely always be intact.
Nobody has ever argued that C is anything other than that. It’s about as dead simple as it can be.
There are other languages for other purposes. Rust and C++ are, in all cases I’m aware of, equivalent in performance to their “ideal” C program alternatives.
Nobody has ever argued until just recently that C is or ever has been anything other than what it is or that there is some kind of battle going on between Rust and “c/c++.” Nothing could be more untrue. C and C++ are different things. Though, with a clear lack of understanding you can write a “c” program in c++. The same is true with rust — everything can still be mutable and you can still have undefined behavior very easily (perhaps most easily with IO).
Plenty of other languages exist, too, with other ways of solving these problems. Haskell is a wonderful language which I hope someday to develop with if there was only some way of making it easier to work with file systems without a PHD.
This particular flame war between rust, c, and c++ is so contrived and tired and misleading.
- sirwhinesalot 5y agoEh that's rather revisionist, C was a high-level language for the 70s. It isn't nowadays because there are languages that are so much higher level that it is low level in comparison. It's not much different from Fortran in that regard. Rather than the purpose of C being an optimizable low-level language, it's more accurate to say that is the niche it carved out for itself. There's plenty of crap in C that doesn't help with either optimization or a good ABI.
- fivea 5y ago> Eh that's rather revisionist, C was a high-level language for the 70s. No, not really. C was always, right from the start, a kin to portable assembly. You'd be hard pressed to come up with a language from the 70s which was at the same level or lower than C. Neigher Fortran nor COBOL nor ALGOL nor Lisp nor BASIC were lower level than C. Precisely which language, other than assembly, leads you to believe that C ever was considered a high-level language? I don't understand what leads anyone to argue otherwise.
- sirwhinesalot 5y agoAll languages back then, all of them, were "high-level" languages, including C. Look at the history of BCPL, B and C and how the goal was to write Unix in a "high-level" language. You can go hear Brian Kernighan himself tell you all about it. C as a low-level language is revisionist history. Rust is a high-level language and yet it is a "lower level" language than Java. Same as C vs Pascal. You could write very low level code in Turbo Pascal back in the 80s, the demoscene used it a lot alongside assembly, it had inline assembly even. EDIT: and to answer your question on what else was "low-level", Forth.
- fivea 5y ago> All languages back then, all of them, were "high-level" languages, including C. The only interpretation where this assertion rings remotely true is if you follow a definition of "high level language" which boils down to "it's not assembly", which has not been the case for around half a century. It makes absolutely no sense to claim that languages such as COBOl and C are even close at the same level of abstraction, just because C is compiled, has loops, and has a standard library.
- sirwhinesalot 5y ago> The only interpretation where this assertion rings remotely true is if you follow a definition of "high level language" which boils down to "it's not assembly", which has not been the case for around half a century. It was the interpretation back then which is what we're discussing :)