C/C++. Although this term is frequently used, it's incorrect and is often a source of confusion for newcomers.
Here are some major differences between the two languages:
Here are some major differences between the two languages:
C | C++ (>=11) |
---|---|
#define | const X |
malloc, calloc, free | new/delete |
Raw pointers | RAII and smart pointers |
Procedural | Procedural, modular, object-oriented and generic |
Return large resources by pointers | Return large resources by value (rely on RVO and move semantics) |
Raw array | std::vector, array |
char* strings | std::string |
stdio.h | iostream |
void* | templates |
setjmp/longjmp/goto | Exceptions |
. . . | . . . |
One can write C in almost every language. You can write C in Java by only using static methods (equivalent of functions) and beans (dumb objects with no behavior, equivalent of struct). However, that's far from ideal.
If a software engineer wants to be good at a certain programming language, he should first strive to learn the idiomatic way of doing things in that language. Individual features should be a secondary concern.
Considering how different the idiomatic way of doing things in each language is, the term C/C++ is not appropriate and learning C before C++ is not recommended.