If you have previously checked out the online job postings for software developers, about 75% of them require Java, C#/.NET, PHP, Flash/ActionScript, Ruby, Python, or Perl. In Hawaii, that percentage is probably between 90-95%. During the past decade or two, C, C++, and other compiled languages have taken a back seat to these interpretive and virtual machine based languages. Here are some of the game changers that will shift the trend back.
It Began with the iPhone Apps
For those of you not familiar with development on the iPhone or any of the Apple products, the apps are written in Objective-C, a superset of the C language. In 2008, a developer named Steve Demester developed an iPhone game called Trism that raked in $250,000 from the Apple App Store in the first two months. This started a new wave of developers wanting to learn Objective-C and the iPhone development kit. There were traditional game programmers that developed for game consoles and PCs, but the frenzy over iPhone Apps opened up a door to any one that wanted to develop games and apps without having to work for EA or Blizzard. This lured many Java and .NET developers back into the world of compiled languages.
C++ doesn’t garner much attention as Java, C#/.NET, or Ruby on Rails does to the general developer audience. C++, however, is still one of the most versatile languages out there and still one of my favorites. It offers development speed through its support for object oriented design and performance speed by the fact that it runs natively without a virtual machine. Most of you are probably unaware that the C++ standards committee had been working on a new standard for over a decade. Some of you were probably wishing it would die, never to be seen again. Well I’m happy to say it has been finalized and is expected to be published by the ISO this year and will officially be released as C++11. (The 0x was actually an unofficial name because the community thought it would be finalized before 2010). Some of the new features that will be part of the standard are lambdas, type inferencing, standardized support for multithreading (std::thread), regular expressions, etc...
Normally the release of a new language or framework doesn’t excite me much and I’m always skeptical about what they have to offer aside from the languages I currently know. However, Go looks very promising and it will probably be the next language I learn. It’s a compiled language that looks like a dynamically typed language. Also, since data is never shared between active threads, the complexity involved in synchronizing with shared data is nonexistent, thus making it easier to implement concurrency. I haven’t delved too much in Go code, but if Heroku is using Go in their backend system, it’s something worth looking into.