- Criticism of C++
Criticism of the C++ programming language refers to critical commentary directed at the C++ programming language, an evolution of the C programming language. Some of the
criticism of the C programming language is relevant to C++ as well.Legacy C support
It is widely thoughtwho that “Every C program is a valid C++ program”, and while in recent times, with standardization of C++, this is no longer true, many C constructs are still valid in C++. Even though C++ has managed to overcome many of the alleged defects of C, a novice can still use dangerous features of C while coding in C++, and this can lead to disastrous results.
Learning curve
C++ provides a vast array of features and paradigms for programming. Hence, a newcomer to the language will have to spend considerable time to learn the syntax and features. It is often statedWho|date=September 2008 that a developer needs years to master the feature set of C++.Fact|date=September 2008
Multi-paradigm programming
C++ provides the ability to code using different programming styles. It supports procedural, Modular, object-oriented and
generic programming . It also supports event-driven programming to a lesser extent. It moreover allows one to mix and match amongst these styles. This apparent flexibility, though a great boon, often leads to hordes of confusing styles (though this can be mitigated by enforcing project wide coding standards, the onus is on the developers themselves). Some proponents of C++ state this as an advantage, claiming that a programmer who has knowledge of any of the programming paradigms can easily switch over to C++. But the downside is programmers given a choice, code in their preferred styles than in the natural style of a language.A C++ programmer can often confine himself to knowing only one of the paradigms thereby not having knowledge of many other potentially useful shortcuts provided by the language. This leads to programmers with limited knowledge (knowledge pools) within the language community.
Absent features
Since the language has been used in almost every conceivable area of hardware, the standardization committees’ support for libraries are often minimalistic. Though many open source libraries like Boost and Loki overcome the problems mentioned below, the features are mentioned because they are not part of the language standard.
* No automatic garbage collection (but it is possible to use an external GCh, such as the
Boehm garbage collector )
* No requirement forbounds checking of arrays (the std::vector class can be used to avoid this problem)
* No operations on whole arrays (this can be achieved with template classes)
* Nonested function definitions (C++0x may feature nested functions)
* No formal closures or functions as parameters (only function and variable pointers). (C++0x will probably feature closures).
* No native support formultithreading and networking (C++0x will provide thread-local storage, but threading classes will not become standard until later)
* No (native) support for reflectionee also
*C
*C++
*Comparison of programming languages
*Criticism of Java
*Comparison of Java and C++
*Comparison of Pascal and C References
External links
* [http://www.yosefk.com/c++fqa/index.html C++ FQA Lite questions the answers given by C++ FAQ Lite]
* [http://www.isi.edu/~faber/cs402/nachos_doc/c++/node1.html#SECTION00010000000000000000 Introduction] of [http://www.isi.edu/~faber/cs402/nachos_doc/c++/c++.html A Quick Introduction to C++]
* http://www.boost.org/
Wikimedia Foundation. 2010.