One of the big things about C and C++ is scoping. C is mostly a proxy system, but this is optional. Many optimizations rely on the programmer to properly define independent sections of logic. The compiler is then able to discover dependencies for things like inlining. This process can make symbol placement hard to predict. However if you use the tool in the intended manner things can work out. Verification tools are possible as a post compilation check. (I made a little tool for this purpose in Groovy.)
C was designed around single threaded, in-order, synchronous code. C++ is gaining support for multi-threading, out of order and asynchronous code. C++ reworked the type system in an extendable manner. It also supports data structures in a generic manner, but this is generally not available on low resource processors. C++'s bread and butter is algorithms and data structures. However it has been found in performance IO such as device drivers, services/APIs, networking, GUIs, etc. It is also commonly used as native code for VM based programming languages.
Invoking the linker performance is a really advanced thing.
C was designed around single threaded, in-order, synchronous code. C++ is gaining support for multi-threading, out of order and asynchronous code. C++ reworked the type system in an extendable manner. It also supports data structures in a generic manner, but this is generally not available on low resource processors. C++'s bread and butter is algorithms and data structures. However it has been found in performance IO such as device drivers, services/APIs, networking, GUIs, etc. It is also commonly used as native code for VM based programming languages.
Invoking the linker performance is a really advanced thing.
Statistics: Posted by dthacher — Sun Nov 24, 2024 1:57 pm