“Just because very few people can fly a Space Shuttle doesn’t mean we shouldn’t have spacecraft. Some of us are big boys, and we can handle C++ just fine, thank you ” (Scott Robert Ladd, software engineer and writer)
Recently, after long year claiming myself to be C/C++ programmer, I worked with C# and found how easy it was. Like the world is not fair and somehow in programming world C++ turn out to be most difficult programming language ever. And after 8 years since I started programming on my third year of undergraduate school, I still unable to label myself a C++ expert. Should I continue down this road? I mean, you should ‘teach yourself programming in 10 years’, right ?
For start, STL (Standard Template Library) components I always use are string and vector. STL Vector is nice, you can user any data type on it and it never complains, which shows how great STL is. STL string because I do not want messy C type string management. Well, STL is huge library and there is a lot of things you can do provided that you are comfortable with template programming. Yet, I still afraid marching toward that path. So I never touch boost, which is a huge beast of C++ libraries and guess what? most of it are templates. There is more, one of the standard book in defining C++ excellency is Andrei Alexandrescu’s Modern C++ Design: Generic Programming and Design Patterns Applied. And most of it related with template programming.
I start to learn C/C++ when a friend of mine sparked the idea that we should make a game. That was about 8 years ago. After using most of my 1st and 2nd year in college playing PS games on PC emulator, making a game is an interesting and great idea. You have great story which is mixed of Final Fantasy, Chrono Cross, Xenogears. You start designing characters and cool weapons. You start doodling your great medieval-modern stream-punk style city. But how to realize it into a game that you can play? A simple game editor (forget the name), just don’t fit your big vision. So you open the pandora box of game making. And there you find mixture of talents needed from programmer, artist, story and many more. So I chose toward programming since I have absolutely no talent in drawing, but I learn a little bit of Maya at that time. So why I chose C++? because you can’t make a ‘real’ game like Assassin’s Creed in other language. You just can’t.
Time is ticking and I kind of diverted my path toward programming for research and development. Now I am considered myself as a senior programmer. And the experience of C# and demand of skills in professional work just seems do not fit the C++ language path that I take. Java more favorable in enterprise work and C# is the next. C and C++, well, still holding great on OS, lower level stuffs, opensource projects and ‘real’ game development. Hell, my favorite IDE, Microsoft Visual Studio 2010 is completely written in WPF now. Most of younger taking programming course choose to work with simpler languages such as Delphi or VB for desktop development and php for web. And my job opening on C++ junior programmer returning null.
This ranting seems just me trying to justify my path. That is true. Several days ago I read an article written by Paul Graham that Lisp (written in 1958, the 2nd oldest programming language after Fortran) is one great language that every mainstream language that we know today (java, C#, Phyton and others) are trying to approach Lisp. And another interesing paragraph from his other article “Historically, languages designed for other people to use have been bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been those that were designed for their own creators: C, Perl, Smalltalk, Lisp.”
C++ new standard is coming out now and I started to use poco, a great portable C++ class libraries and next, I will learn template and start using boost following the natural progression of this journey to be one of the big boys. Deep down I hope C++ will be better and better. And I think my reason toward C++ choice is still valid for now, and that make me happy.