RagulIt is an advantage for C over C++.But java can do the job in a simple way right?My guess is that we can easily co ordinate with the programs with new ones as there will not be data hiding concept in C.

(2) C++ has more overhead than C (i.e. C is faster)=> This is the most infamous misunderstanding, because of two reasons:(i) Not using a good C++ compiler for embedded or general purpose systemse.g. some compilers are made so powerful that they will generate a little faster code for 'cout' than 'printf'.

(ii) Using the strengths of C++ and then, ridicule them by saying it is slowere.g. For better code viewability, programmer uses virtual polymorphism. This concept takes the run-time decision that which class function to be called. So naturally it will be slower. But if you try to implement the same in C with its function pointer syntax, it will take the same amount of time.

(3) C++ generates bigger code than C=> The answer is same as above. If you use simple features like function overloading, encapsulation, etc. there is no bigger code at all. But if you use higher level C++ features, which are complex to implement in C, it will naturally generate a bigger (though cleaner) code. Smaller C++ code can be written by following.e.g. (i) Leave constructors-destructors empty(ii) Don't put any function members in class, but use the class only for encapsulation(iii) Use inline for smaller functions...

(4) C provides better visibility of code than C++=> 100% wrong. This is because of lack of command on C++ and mad love for CMoreover, to our surprise, enum,const and inline are the 3 features of C++ which are inherited in C (to avoid dangerous macros) for cleaner code.In C it is impossible to implement private,protected types, function overloading, operator overloading and many other features. All these features will help to create a better viewability (and there are lot many OOP features also).

1) Writing a C compiler is much easy. So release a chip, decide on ISA and all that and create a C compiler for that.

2) Mapping of generated assembly code is much easier in C rather than C++

3) Writing portable code i.e. availability of compiler, library, etc. i __feel__ is better in C, C++. It is easy to write portable and non portable code in C [Do I have to tell you that Shrinidhi , this is Prateek]

Does it seemt that you are comparing both the languages with respect to compilers only ? What we discuss is based on the language.1) "writing C compiler much easier than C++"-> naturally C provides less features

2) "Mapping of generated assembly code is much easier in C rather than C++"-> can you plz provide any link to support this in all aspects, because in VC++ it looks same !

3) "Writing portable code i.e. availability of compiler, library, etc. i __feel__ is better in C"-> portable code depends on programmer, for availability of compiler just google for C++0x and now a days we have many good C++ compilers which can even generate less amount of code than C (for cout and printf) (Bjarne Stroustrup official website)

one good note:Java's development was so big and centralized to Sun Microsystem that, virtually no one tried to create another JVM (sort of Java compiler) for that. That went on to prove Java as a platform independent language !! That means it is having only one 'compiler' and still it is platform independent, does it really mean that ??

1. I agree. But the point still holds true. C has advantage over C++ for embedded systems

2. Mapping not through a tool but a _mental_ map (however silly this might sound). A programmer or a technical leader with sufficient knowledge of instruction set architecture and code generation can know what the code generated would be like. What segment goes where. Which part of data goes for BSS, stack etc.

3. Things like boost pointer etc. do not guarantee portability or availability for every platform.