JoeJ said:
No. C++ was built on top of K&R C. C is the foundation of C++. Nothing from C was removed from C++. So there is no similar foundation for both, one was extended to become the other.
Originally, yes, but C has also got extensions over the years that are not part of C++. So what we have today is two very different languages, eigther way.
JoeJ said:
Do you mean the modern way is the intended way to use C++? If so, that's just an opinion. But from all C++ code i see, only a very small part is actually modern. (where modern means to me: code that i can not easily read : ) If you mean just ‘good modern C++’, then this does not change that C is still part of that.
I mean C++ that uses the full toolset that became available with the newer standards. If you are looking at C++ that still does manual new/deletes everywhere instead of std::unique_ptr, that's not C++ anmore. It frankly doesn't matter what the C++ you look at is or is not. Some people stick with older paradigms, for reasons valid or invalid, but more then enough people adopt the newer standards, and it's not logical to compare languages based on people who still code like its 30 years ago.
JoeJ said:
All those languages adopt basic syntax, math and logic operations, function calls from C.
That's pretty reducive, IMHO. Math operators don't come from C, they are just what we use in regualr math. Function-calls have been around in languages way before C. Syntax? JavaScript doesn't even require ; at the end of lines. Comparing JavaScript to C is really stretching it. JavaScript is a dynamically/weakly typed language, which bases it's data storage on JSON-objects. Ok, we have that 5% of syntactical similarity to C, but that's the end of it.
JoeJ said:
Nah. You should code those things out manually initially. Otherwise, it's a bit like using std::sort and then assuming you're done with learning about sorting.But we may differ on the observed range of the learning process. I talk about the first weeks maybe. Not about becoming good or more effective, just about figuring out if you can do programming or not.
Well, let me ask you this: When you want to learn how to drive a car, do you learn how to drive that car or do you learn how to assemble a car? The former is what I'm saying you should do with programming; the latter is what you are suggesting when saying you should not start by using sort, but code it yourself. Sure, a drivers license education might include lessions about motors, maintainance and whatnot, but that's not the focus. Nothing that you learn in any context starts out with going in-depth into the nitty gritty details. You always start with learning the broad picture, and how to solve that task. Then, once you have a broader understanding, you can delve into the details. Doing it the other way around is possible, but much harder.
JoeJ said:
And what is a ‘modern high-level language’ at all? This does not mean something concrete, it sounds more like a marketing promise, or a goal. Even an ideology, in your case.
That means something very concrete:
https://en.wikipedia.org/wiki/High-level_programming_language
See the section about “Relative meaning”, which explains how C today is considered low level now.
JoeJ said:
Tbh, my adoption of newer features was so slow and smoothly, maybe i just did not notice how much my coding has changed. Maybe i just simplify the experience down to ‘it's still just C, basically’, while somebody else, having the same experience, would notice a large difference.
Again, based on your own admissions and what I've seen about your code, you are not really coding modern C++ at all. Which is fine, but that's not the same experience as someone who goes to any new c++-standard that comes out and adopts all features that make sense in their day to day life. You can correct me if I'm wrong here, but like, what do you even use of newer C++-features?
I'm 100% convinced that that's the case, since again, from my own experience of pretty much using the entire range of C++23, the difference between C and C++ is night and day.