Apps

Poll: Do you think C++ will regain the spotlight?

Let us know whether you predict C++ is primed for a resurgence in market share by taking this one-question poll.

Years ago it seemed like C++ was going to be the big cheese programming language for the foreseeable future. However, not long after C++ started its rise to prominence, the Web came out of nowhere, and C++ was pretty much locked out, and that was followed by .NET, Java, and other technologies.

The release of the next generation of C++ and Microsoft putting attention back on C++ with Windows 8 has some developers saying C++ is primed for a resurgence in market share. I think the C++ ship has sailed; systems are a lot more stable since the days where everyone who wasn't using VB was using C++, and C++ is a difficult language to work in compared to the options. All the same, there are good reasons to use C++, and it is possible the recent events will get more folks using C++.

J.Ja

Keep your engineering skills up to date by signing up for TechRepublic's free Software Engineer newsletter, delivered each Tuesday.

About

Justin James is the Lead Architect for Conigent.

19 comments
JTepoorten
JTepoorten

It is interesting to see C++ being raised. Please excuse my ignorance, as I have not had to work with C++ often through my Business Information Systems career. I thought C++ was primarily used for low-level software development due to its small overheads in developer-compensation compared to other languages like Java and C#.

Daddy Tadpole
Daddy Tadpole

I can't remember how this started, but as a part-timer, I've just finished a music-MIDI application using an Arduino microcontroller (which runs a simplified implementation of C++ that's quite easy to learn). The only reason for using the Arduino was that I couldn't find a platform for PC that can do hardware (genuine) real-time interfacing to a USB-MIDI interface without encountering an unclimable learning curve.

stephenwils
stephenwils

I believe C++ was targeted for destruction by Microsoft to stave off Linux (and any other threatening OS). They pushed C#, VB.Net, and other languages that were useful only under the Microsoft OS--and they actively lured developers into learning these exclusively MS technologies. I, for one, no longer waste time going thru the learning curve for platforms that are "here today--gone tomorrow". I used to be an overly zealous Microsoft code-zombie with a CSCI degree, and my Unix buddies chanted "evolution, not revolution" in my face whenever I raised the Microsoft flag. Now I know they were right... Use C++ for big projects, C for smaller apps, Java when needed, PHP for scripting--and your skills won't become obsolete with the next Microsoft "revolution"... C++ will always be a relevant platform. I welcome its return to prominence...

wizardjr
wizardjr

where did you get this article - The Onion? I learned to program in C and assembly and Apple floating point Basic. Then along came C++. What a mess. I tried Borland and Micro$uck versions. Still an arcane, clumsy implementation with the worst uer interface tools ever. So I used Borland Delphi (Pascal) and VB6 and was a happy and productive programmer. Along the way C++ just got more arcane and more clumsy. The tools to build the user interface lagged lightyears behind Delphi and VB6. Along came C#. HOORAY!! I could go back to my favorite C syntax while gaining the user interface tools of VB6/Delphi. I have been a very happy programmer. If I need to get really nasty I can always pull up an assembly language compiler. If I need C# to run faster I can use one of the several native code compilers for MSIL code. Now I should go back to c++....??? yeah. sure. You can put lipstick on the pig but end the end it's still a pig.

Tony Hopkinson
Tony Hopkinson

While it's a very powerful language, especially in an unmananged environment, business never picked up on the idea that you need powerful developers to do it right. They never picked that up for VB but the consequences were less drastic. As far as I can make out MS are recomending it for Metro, because they have a load of C++ boys of varying ability on their books, and they can get away with having to provide less in the ways of APIs etc. I've not heard of a credible technical reason anyway. Saying that in the main choice of language is usually decided by the business, and not very often for tecghnical reasons. Usually in house skills mix, languages their current products are in, or the availability of developers.

jsargent
jsargent

- Just when you think that Operator overloading is making your life easier you realise that it can make your life hell. - All compilers are different about what they like. - Pragma ... you either love it or you hate it but don't always think that it will make you life easier. - Templates.....I like those but it's a shame it turned up in the language too late.

stancoppock
stancoppock

I thought you were serious till I got to FORTRAN

Daddy Tadpole
Daddy Tadpole

Like millions of others, I have had to do bits of development during many years (in my case > 40), though it's never been my main job. The only thing that should matter is that the expected usage life of your work exceeds the development time. Nearly everything is ephemeral, and object oriented languages ensure it stays that way. You spend your time fishing for objects & methods that (as with VBA) turn out to be defective. C++ has too many platform-specific variants & kludges, and platforms are constantly changing. That sort of thing should be confined to designing electronic trinkets for teenagers. Serious scientific and business programming is still done using languages like FORTRAN.

Tony Hopkinson
Tony Hopkinson

so it's a good choice for low level software. Thing is if all your experience is in languages where the complexities of say pointers and references are hidden away and then in C++ they are in your face. You won't have the habits, even if you remembered the skills to deal with them safely. Difference between plugging a lamp in and rewiring your house to have a socket you can then plug the lamp in. Choice between a bit dark or a bit dead... Given the drive over the last decade plus to turn developers into glorified clerks, I'm not sure it'sa good idea for us or not. For business? I guarantee they will be sorry.

Tony Hopkinson
Tony Hopkinson

language, they are lacking. An argument HR and other ignorant types have a problem with I'll admit. You aren't one of them are you? PS You heard of Mono?

Tony Hopkinson
Tony Hopkinson

Delphi and VB6 did leave a bad taste in my mouth, unless you are only talking the IDE, and Delphi's was better until they rewrote in C++, after Bill wooed Borland's entire team over to .net and Visual Studio. There are still some things where C++ is a natural choice, but designing standard CRUD /OO applications is no longer one of them. VB, Delphi, any one remember Gupta :) gained their market share because simple things were painful to do in the C++ environments. I'm also sure there is no sensible comparison in terms of efficient application development between managed and unmanaged C++ That's like comparing VB6 and VB.Net. Any apparent commonality is misleading.

JTepoorten
JTepoorten

I would have through Microsoft would be pushing C# for their Metro Apps.

Tony Hopkinson
Tony Hopkinson

In general the people most likely to use it, are the ones least capable of implementing it.....

Tony Hopkinson
Tony Hopkinson

and it's about because it works and it's used for some serious stuff. Too serious to let some my language is better type person to risk proving it.

Daddy Tadpole
Daddy Tadpole

GAMESS User's Guide: 'A wide range of quantum chemical computations are possible using GAMESS... By 2005, GAMESS had grown to roughly 650,000 lines of FORTRAN.' That was the situation 8 years ago and of course the application, which dates from the 1970 is still being developed. They did, at one point, move from FORTRAN 66 to 77. Of course, there are dozens of other major applications like that, and you'll be running some of them yourself if you're connected to Boinc (perhaps via Facebook's Progress Thru Processors). Incidentally, please note this advert for charitable work that costs contributors almost nothing. Back to the fundamentals, people shouldn't be asked to commit their life's research work or their business affairs to cloudy platforms with a life expectancy of 3 years.

Tony Hopkinson
Tony Hopkinson

but MS were last I heard throwing in C++, caused a riple of frowns at our place as well. It's good at what it does, but I wouldn't recommend it as tech to a set of competent developers for the sort of projects we are taalking about. Out sourced cookie cutter types, it would be a disaster of biblical proportions.

nchmch
nchmch

Implementing Operator Overloading is for Library Designers -- not Application Programmers. This is as it should be. Application programmers should *not* be implementing operator overloading, that's a task for library designers. Division of labor is there for a reason. I like how this separation between language features and their target audiences is made clear and explicit for Scala by its designer, Martin Odersky: http://www.scala-lang.org/node/8610 It's worth noting that both Scala and C++ are multiparadigm programming languages, comparing them with uniparadigm (or very-few-paradigm ;]) ones makes little sense. Incidentally, Scala goes even further as far as operator overloading is concerned: http://weblogs.java.net/blog/cayhorstmann/archive/2011/12/06/operator-overloading-considered-challenging Is this a problem? No. Was this ever a problem? Not at all. Multiparadigm programming languages useful *both* for library designers *and* application programmers have their place, division of labor is an inherent feature of the modern life :-) One more note from the Scala's perspective: "In Java, you cannot overload operators, and the Java designers claimed this is a good thing because it stops you from inventing crazy operators like !@$&* that would make your program impossible to read. Of course, that’s silly; you can make your programs just as hard to read by using crazy method names like qxywz. Scala allows you to define operators, leaving it up to you to use this feature with restraint and good taste." :-)

Tony Hopkinson
Tony Hopkinson

I'd say operator overloading was more relevant to the level of abstraction that is library design. Like any competent programmer I can work at any level of abstraction, once I've appreciated what fits and what doesn't. Leave operator overloading out of Java? Why not, how often would you be defining a primitive that some would expect to see in a language, like say a matrix, or a complex number. Not very. You would normally be working at far higher levels of abstraction than that, if you aren't I'd say you were using the wrong language. The sort of halfwit who overloads addition and assignment to do Cheque = Invoice + Authorisation is what I was alluding to. 9/10 the reason given is terseness, which is about the worst justification anyone could possibly come up with in the real world. Not someone who provides overloads of those operator for say matrices or complex numbers. That isn't some skill gap between application and library developers, it's a skill gap between incompetent and competent.