| You seem to think I'm dismissing C. What I'm really trying to express is that I'd recommend people learn C++ and consider C an old-school 1980s, unsafe, rather laborious, subset of it. > We do still have a need for a low-level language C++ can be 'low-level' if that's what you're going to label C. How can you dismiss C++ as not being low-level and then later say it's 'polluted by low-level concerns'? > There is also quite a bit of C code out there... not knowing C means being cut off from all of that. I agree. Fortunately, you can't really effectively learn C++ without understanding its C legacy. > The high-level features of C++ are polluted with low-level concerns that serve as nothing more than a distraction Until you're working at a high level and need to dig deep and implement a gritty data structure or algorithm with a high-level interface. Sure, you can drop down from Java to C, for example, but then you're in the mud writing JNI bindings. Why do languages have to be constrained to 'high-level' and 'low-level' pigeon holes? Why can't there be room for a language that's good, but perhaps not elegant, slick or beautiful, across the spectrum? Honestly, I don't want a religious war about it. I just think some of your assumptions are typical of people who have obvious had a bad experience with C++, having used it in a specific context, and therefore think "It didn't work for me, therefore it must be horrible". On another note, C++ is at least improving and rapidly becoming better tooled, with a growing sense of developer community. C has had a few sprinkles of improvement, but has otherwise reached the end of its natural evolution. |