None of the language is perfect, it is a truth that c++ have so many defects, but most of the "defects" claimed by those c programmers are totally nonsense, they have no sense what are they talking about. It is natural for programmers to disagree, dislike the features of a language, but before you denigrate any languages, tools or features you don't like, at least do some homework. c is good, but c++ is far more better. Exactly, many big, important softwares are shift from c to c++, not c++ to c.Here are other projects of c++ which demonstrate the ability of c++, showing that c++ could work on embedded devices pretty well.
- c++ jsf(F35,a well known fighter)
- hard real time system of big ships
- real time operating system
- micro kernels support c++
- a new C++ open-source VM operating system
- successor of BeOS
Here are some immature criticisms come from those FUD c programmers.
- c++ is slower than c because compiler do too many things for us in the backgroud
- c++ is slower than c because c++ always construct and destruct object
- new and delete must slower than malloc and free because they have to(?) deal with exception, constructor and destructor
- Inheritance make c++ become fatter and slower than c
- virtual is very slow and fat compare with function pointer
- template will lead to code bloat
- RAII will cause memory fragementation
- RAII do not suit for resource like file, mutex, thread and so on
- macro is easier to use than template
- c is easier to read and maintain than c++
- higher level of abstraction equal to slower, so c++ must be slower than c
- and so on(please tell me what do you want to add on this list)
Generally speaking, one of the philosophy of c++ is "you don't pay for what you don't use".
It is a waste of time to show them their worry are based on the fact that c programmers are not c++ programmers again and again, so I decided to write down the experience and prove on my blog.
It is a waste of time to show them their worry are based on the fact that c programmers are not c++ programmers again and again, so I decided to write down the experience and prove on my blog.
A war between different languages are almost meaningless, because there are too many programmers like to attack the tools they don't know with their self-imagine image without research, prove, learning.As the father of c++ tell us, "Before dismissing C++ features, such as classes and templates, for demanding tasks, learn the basics of their use and try them out. Measure, rather than guessing about performance!".
In these series of post, I will try my best to explain why those reason of c programmers are wrong, what are the problems of those criticisms. I am far from an expert of programming or c++, if you find anything doubt or uncertainty of my post, please leave some comments.
However, even these series of post will spend a lot of times on discussing the performance of c++, performance is not the only factor of choosing your tools, like portability, maintainability, develop time, level of programmers, but it is another story to tell.
No comments:
Post a Comment