6 ms·
> But I think there isn't a viable competitor in the "C, but better" space at the moment. C99 is such a contender imho.
by leon_ 16y ago
> But I think there isn't a viable competitor in the "C, but better" space at the moment.
C99 is such a contender imho.
- pmjordan 16y agoC99 is such a contender imho. C99 is a pretty tiny (but welcome) incremental improvement on C. It's also almost entirely orthogonal to C++'s additions. Calling C99 a C++ replacement is pushing it, so you'll need to elaborate on why you think so. I'd be curious about an instance of something you can do better (let alone fundamentally better) in C99 than C++. I can think of plenty of examples of the opposite. C++ sometimes makes me want to tear my hair out, sure[1], but when using pure C(99), I find myself thinking, "this code would be so much more compact in C++." [1] This is usually because either I or someone else tried to be too clever. Otherwise it's because of something C++ does badly that neither C89 nor C99 do at all.
- leon_ 16y ago> Calling C99 a C++ replacement is pushing it I didn't call it a C++ replacement. Just a C89 replacement. "A better C" :) > I'd be curious about an instance of something you can do better (let alone fundamentally better) in C99 than C++. It depends. If you need C++'s syntactic sugar for OOP-style code then yes - C++ is better for that. But if you don't do OO-heavy stuff you can use plain C and get away with less complexity (and more control over the instruction cache, etc). I'm in the lucky position of not needing OO so I get away with using C. And C99 makes my life, compared to the old C89 standard (and the C++ C subset), easier. I can declare variables in the middle of a function (or even within the if statement!). I can initialize structs by its member's names thanks to designated initializers. And the implicit "upcast" from void* to whatever is a blessing (though possible in C89 it isn't available in C++). Oh, and I almost forgot variable length arrays. > but when using pure C(99), I find myself thinking, "this code would be so much more compact in C++." Well, this can go the other way round, too. Just take the right tool for the job.
- pmjordan 16y agoOkay, all of these points are fair enough. I guess I didn't make it clear enough, but: There's no language currently out there that covers as much ground as C++ and is anywhere near as good at it. C99 falls into a similar bucket as Go or Objective-C in covering a subset of cases where C++ is useful.
- SoftwareMaven 16y agoThe point of the detractors, though, is that if only a subset of the language is good for any particular task, why not skip the subset operation and just choose a language better for the task? I echo that sentiment. I'm using C++ in my current project (first time in many, many moons), and it dies what we want reasonably well, but it is bigger than any language needs to be.
- lukeschlather 16y agoBecause there's less cognitive overhead in learning 5 variations on one language to do 5 tasks than there is in learning 5 languages to do 5 tasks. You don't have to relearn what semicolons, parentheses, braces, colons and so on mean. You just have to learn how inheritance works. Or the STL. Or whatever.
- eru 16y ago> There's no language currently out there that covers as much ground as C++ and is anywhere near as good at it. Have you tried OCaml? It's has it's problems, but it's nowhere near as bad as C++.
- copper 16y agoPerhaps as a counterexample, when I'm write some linear algebra code that I expect to perform reasonably well, I greatly prefer using eigen to other BLAS implementations (well, except the MKL, but that's a different matter entirely.)