After a long hiatus(is that the right word), more, and interesting articles will follow.
Offtopic: I found this article which did some interesting research about average salaries by programming language:
The Unix Geek: Programming Salaries
Objective-C $82,000
C++ $80,000
TCL $80,000
C# $79,000
Java $79,000
Python $78,000
Perl $77,000
Ruby $74,000
JavaScript $72,000
Delphi $64,000
PHP $64,000
Visual Basic $64,000
C $60,000
What’s interesting is that C is at the bottom of the list, and while many I know swear by it’s performance and “close to system” nature, doesen’t seem like too many people need that much native interaction with the system, and purity at the moment.
I’ve personally never written a line of C in my life. Sure I’ve written printf statements here and there when needed and used the standard C library, but all my code starts with “using namespace std” no matter what. The trouble is I started learning C++ from an object oriented perspective (using this book), and never went back since.
I’ve never understood Indian schools’ rigidity with C. Many consider allowing C++ will make it “easier” and will not test the real skill of a programmer, but forcing declaring variables at the beginning, preventing object oriented design, poor memory management, and very random crashes aren’t supposed to enforce dicipline, but rather just restrict potential and ideas.
Moreover, with STL, which comes by default with C++ and the Boost libraries, etc, will allow you to fix the real problem at hand rather than wondering why your quicksort isn’t working.
I’d tell anyone not to use C unless they absolutely have to: either for extremely high performance tasks(even then which can be written as a C library and sourced to C++) or for kernel interaction, etc. It doesen’t seem likely that C is good enough for a large, expandable application, and to an extent even C++ fails to do it in the long term.
But after a month at google, I’ve noticed how they’ve thoroughly *exploited* the c++ programming language, without modifying it in particular. After working with such a smartlly engineered development system, I’m worried how I can ever go back to vanilla c++ again.
Moral of the story: A programming language should do what you want it to, not the other way around.


Hi,
I think giving C a back seat is too early as yet. There can be thousands of flame-wars all around between the C and C++ camp, but from what I’ve seen, almost every good developer will recommend learning C in-depth. And the salaries mentioned here are too general. A C programmer in an application development domain may not be paid very well, but in embedded systems domain a good C programmer may even be earning more than their managers, and I say that from experience. Add a little bit of domain knowledge and it jumps well over 120k.
I’ve never been a big fan of object orientation but the language itself is a huge design flaw and almost everyone who uses it does not use the native STL implementations. The amount of restriction C++ imposes on programming is not something that any good programmer should appreciate, and it has started a discipline in itself, the so-called Design Patterns. Either way, C or C++, I believe its more relevant to the programmer skills than on the language itself.
Oh and don’t get me started on memory management, random crashes et al. C is okay at it at best I’d say, but C++ has none of it.
“But after a month at google, I’ve noticed how they’ve thoroughly *exploited* the c++ programming language, without modifying it in particular. After working with such a smartlly engineered development system, I’m worried how I can ever go back to vanilla c++ again.”
This made me intensely curious. I’ve always had a love/hate relationship with c++; have the google folks made it a cinch to use? How?