You are here:About>Computing & Technology>C / C++ / C#> Getting Started> Future of Programming - Predictions for 2008
About.comC / C++ / C#
Google Trends: C++ v C#

Future of Programming - Predictions for 2008

From David Bolton,
Your Guide to C / C++ / C#.
FREE Newsletter. Sign Up Now!
This is purely my opinion; looking at the state of software development in early 2008 and trying to extrapolate forward a year. The only thing certain about predictions is that some will definitely be wrong. I'm still waiting for my jet car!

Looking Back

Back in the early 1990s I used to write for a UK programming magazine. (Program Now if anyone remembers it) and every January I wrote a State of the Art article looking at trends in programming. This was before the web when Compuserve was big. There were no mobile phones, or programmable hand-held games consoles. James Gosling was working on OWL the language that would empower toasters and washing machines - that become Java, And the main battle was between Microsoft and Borland for supremacy in C and C++ development systems. Borland's software was sexier but Microsoft had the clout and eventually Microsoft Visual C++ matured into a major piece of software.

Ada was the only game in town for military software and Fortran/Cobol still had a small but loyal following. I was learning C and C++ at the time but most of my development (other than Ada at British Aerospace) was in Borland Turbo Pascal which was in decline. Visual Basic and Delphi were still being developed. For pace of change in development technologies the latter half of the 90s was amazing compared to the first half- the web took off, Visual languages became the in thing for a while and the big battle became Java versus C++.

Currently

Programming languages are just tools and they wax and wane in popularity. So what is the big thing now? I think it's Managed code (Java and C#). Back in 1999 I used PCs hooked up to the Internet without a firewall. Oh we had anti-virus but the Internet was not the ferocious war zone it is today. If you hook up a naked (i.e. unprotected by firewall) PC to the Internet today, it will be assimilated within minutes by some nasty or other. Without building security into code development computers are highly vulnerable. Managed code eliminates whole swathes of danger by building a wall between applications and the hardware they run on. It's not quite sandboxing where code cannot use hardware resources but it's not so far off.

Virtualization is becoming more popular as well- if a virtual PC is compromised, it can easily be reloaded once you realize it has acquired a hidden agenda.

The philosophy behind Managed Code is tried and trusted in non computing fields. When you drive a car, you don't directly increase the engine speed by opening the fuel inlet valve and increasing the fuel pump velocity. Braking isn't done by directly pushing an object against a wheel. All of your actions are managed for you, quicker and safer by an engine control system or carburettor hooked up to a pedal. This also stops you doing something dangerous like blocking the fuel inlet. Just as managed code prevents you using unassigned variables or causing memory leaks, the management systems in your car limit your actions to those that are appropriate and non harmful to the car.

I believe that the era of writing general software that directly interfaces to hardware is slowly drawing to a close. I'm not talking about the specialist areas like device drivers or the low level parts of operating systems but just general coding like writing applications in C or assembly language. It's not going to vanish in this year or the next but it will happen. There'll always be assembly language programmers and likewise C but how many C jobs are there out there nowadays?

I hate to admit it but I think even C++ has jumped the shark or is very near "Peak C++". Google Trends shows something of a decline as the chart shows. We'll still be maintaining applications in it in 10-20 years time just as a bit of Fortran and Cobol development still occurs but it will soon slowly start to decline commercially and I think this process has already started. It's a gut feeling and I may be wrong but I believe that even Microsoft is starting to turn away from C++. Why do I think so? Because of the XNA Game Studio. In case you didn't know, XNA only supports C# development, not C++.

C++ is an immensely powerful language with a massive code base but to write large applications usually requires third part libraries or SDKs for user interface and memory management. Portability into a .NET environment of any major C++ application is not trivial and I do wonder how long non .NET Windows will be around. On Linux of course C++ will be around for a lot longer. Even Microsoft failed the first time (with Managed Extensions) before they got it right with CPP/CLI. Stanley B. Lippman, the Visual C++ architect called Managed Extensions an abomination! CPP/CLI- the followup takes quite a shift in thinking. C++/CLI is considerably different to C++ with .NET types for structs and classes (called ref struct and ref class), gcnew and gcdelete for garbage collected references. Managed code objects are relocated during garbage collection which means that all pointers have to be adjusted. So there is quite a bit of a learning (should that be unlearning!) curve.

GUI and the Net

The increasing adoption of broadband a higher speed net connections means that net enabled applications are becoming more prevalent, Adobe have their Flex technology, Microsoft has Silverlight and WPF. More traditionally there is Flash but that is not the easiest language to get into. For years the tools were designer oriented and only with Flex has it become more developer friendly.

Developing GUI apps for the web is still way behind the ease of doing it for desktops. Microsoft and Adobe are the main contenders but I'm not convinced that 2008 will be the year it happens. Anyway the battle has moved beyond just Internet versus desktop. Being able to run on Mobile devices is now almost as important and will become more important.

Conclusion

More C# and Managed Code and Internet GUI development. Less C and possibly less C++. More development for web and mobile.
 All Topics | Email Article | Print this Page | |
Advertising Info | News & Events | Work at About | SiteMap | Reprints | HelpOur Story | Be a Guide
User Agreement | Ethics Policy | Patent Info. | Privacy Policy©2008 About, Inc., A part of The New York Times Company. All rights reserved.