I'm a long time c++ programmer. I can't understand why people thinks c is better than c++.<p>At work I deal with a large project of mixed c and c++ (few million lines of code), with legacy code written in c and newer code in c++.<p>My experience of dealing with those c code is very painful. 2 concrete examples:<p>1. people say they hate c++ but like c. but they still embrace the concept of OOP in the c code. they use c struct to fake what c++ class does (and make every member variable a public one). in C++ when you set and get a member variable, you often use a getter and a setter. this makes it easy to find out where a variable has been accessed and changed (set a break point in the setter or getter). but in c code, since all members of a struct are referenced via pointers, it's very painful to debug when and where a member is changed. I have to use memory break point. Even setting memory break point in c++ is easier, as I have the constructor function to break into, to find out where an object is allocated, but in c code, it could be everywhere, my only hope is using the grep tool.<p>And I'm talking about debugging and maintaining undocumented large code base written in c by other people.<p>2. C++ class encourages programmers to partition and organize their code more reasonably. usually a class represents a single module of functionality. and usually a class is written in a header and a cpp file. You know you should look at the header for its interface, and you know to find its cpp for implementation.<p>but in the c code I'm dealing with, there is no such partition. several interfaces could be groups into a single header, and the implementation of those interfaces could be scattered across several c files or mixed into a single c file. This is just painful to look at.