"In the world ye shall have tribulation: but be of good cheer; I have overcome the world." –John 16:33

C++ programming: Does it have a future, even for an old guy like me?

Day 79 of 1000

Christian on his 16th birthdayChristian and I often talk about what he will do for his career.  His plan is to study hard stuff, find something he likes and go from there.  He has pretty much rejected the idea of getting a degree in Computer Science.  His thoughts are that, when he writes code, he wants to write code to do something rather than for the sake and out of a passion for writing code.  So, after his Math degree, he will probably do something in Electrical or Mechanical Engineering, but that is not even set in concrete.

Along that line, I got a note from my buddy Andrew the other day on a C++ library project called Cinder.  I will quote Andrew:

You all might get a kick out of this….  looks like a higher-level API built on top of existing libraries like Standard C++ libraries, Boost, OpenCV, OpenGL, etc. to enable people to write graphically powerful apps without having to fiddle with as many nuts and bolts.

I write C++ code for a living and have wondered how much longer C++ will be a good basis for making a living. The way I figure it, I have, Lord willing, between ten and twenty years left in my career. Like Christian, I do not really like to program, just for the sake of writing a good program or to do generic things. I have a HUGE appreciation for people who do that. They make my life way easier by letting me just write code for the stuff I love (machine vision). The people who do programming for programming sake are also the people who make improvements to language, develop standards, and do all that other stuff that makes programming life easier and more efficient.

Garbage collected languages like Python, Java, and C# have been encroaching on my C++ world for quite a few years now. It is possible to write very good and even efficient machine vision code in those languages. It is often possible to write code more rapidly in those languages, too. They have rich GUI, math, database, and other libraries that make them useful in a lot of different scenarios. It is even possible to write a framework in the garbage collected languages and only dive down into C++ when something needs to run very fast or uses lots of memory that needs to be allocated and deallocated continually.

Still, even though I write some C# and Python–for some reason I have written very little Java, I am not good enough at it yet that I can go dramatically faster in those languages than the C++ I have used for so many year. That is why it give my heart joy to see some graphical programming tools that move C++ a little closer in capability to the newer languages. I read the whole website and was more fired up about my chance to stay with C++ for a few more years. I will continue to work on the new languages, but plan to try out Cinder and look for other such tools.

Note: Part of the reason I started this post out the way I did was I wanted to put up this picture of Christian on his sixteenth birthday.

Previous

Confession: I used to hate fruitcake

Next

Publishing our blog in a book

4 Comments

  1. I think that you are OK staying with C++ in the embedded space. As long as you write your code correctly, you’re still able to get the benefits of encapsulation, modularity, implementation hiding, etc. You can always flatten it out to tune the performance.

  2. Dad

    I think that is true, Wintery. I also think the bulk of memory hogging, real-time machine vision will be written in C++ even for big iron systems because of the finer control of garbage collection–at least for the foreseeable future.

  3. Many hot new technologies like node.js and MongoDB are still built on C++ at their core. It’ll always pay to know what’s going on behind the scenes.

  4. Dad

    I keep tell my kid that, Wes. The reality is that it does not hurt to understand what is beneath C++, too. Until Intel’s IPP got really good a few years back, I spent a lot of time speeding my vision code up with the SIMD command set–before that, it was with MMX assembly code.

Leave a Reply

Your email address will not be published. Required fields are marked *

Powered by WordPress & Theme by Anders Norén