VC++ programming in the UK

Chris you're living in a bubble if you think C++ is still being adopted like hot cakes. It's used through necessity (DTV embedded ware is a decent example).

Necessity is fine with me if it keeps me in a career :p. I've never really been exposed to application development or anything higher level so I just kind of assumed C++ still existed there. I guess C# is where it's at for that kind of stuff now?

What do you work on/in Nathan? I'm slowly coming to the realization that I'm more or less a engineering/code monkey and would be interested in what the industries like in higher level areas (code wise).
 
I'd say C# and Java are both used pretty extensively for applications, with C# more common for clients (especially desktop applications) and Java possibly more common for server side stuff.
I'm currently doing a lot of WPF stuff, which seems to be in pretty high demand right now.
There is still a fair bit of C++ stuff around, but I'd say for the most part it's legacy now.

Most of the projects I've worked on have had some sort of C++ component somewhere in there, but it's generally either just in maintenance or actively being phased out.
 
There are still many places where C++ makes the most sense to use.

(Apart from the obvious games etc)

For example, say your application needs to integrate into many different environments which expose APIs in different languages. It makes sense to write your core functionality in C++ and then add thin per-language interfaces on top.

The best part of C++ is its power.

The problem is that you have to put in a lot of effort to learn the language properly -- all too often, people end up using some "C with objects" subset of C++, which is just, well, poo.

If you're not up to your elbows in 5-page long template compiler errors, you're just not doing it right (or maybe you're doing it too well)

In all, C++ appeals to those with a healthy streak of masochism :p
 
A bit late to the party on this one, but anyway...

I've been a vc++ dev for 3 or 4 years now, and can count on one hand the number of times I've had to deal with MFC. I'm thankful for that, because MFC is not much fun. See nokia's Qt for a much more pleasant experience.

c++ will be around for a while because a lot of defense style projects wont let you (or make it pretty difficult to) use anything with auto garbage collection or interpreted languages.

It is a lot more effort than, say c#, though.
 
A bit late to the party on this one, but anyway...

I've been a vc++ dev for 3 or 4 years now, and can count on one hand the number of times I've had to deal with MFC. I'm thankful for that, because MFC is not much fun. See nokia's Qt for a much more pleasant experience.

c++ will be around for a while because a lot of defense style projects wont let you (or make it pretty difficult to) use anything with auto garbage collection or interpreted languages.

It is a lot more effort than, say c#, though.

What you do mean by defense style?
 
MoD projects and other government projects that need security clearance, I would think is what he means.

I don't think it is as simple as "if defence project then only C++ is allowed". As with all things, even defence projects, competent development teams tend to use the correct tool for the job. E.g. they will still use .NET or RoR if it's a web application they're building. Using C++ for that would be lolworthy. If however it's a program to capture Blackberry Messenger packets and decrypt them on a grid cluster, then of course C++ is going to be the preferred choice almost certainly.
 
Last edited:
Nathan, indeed. I said a lot, not all ;) I was thinking about software that is on defense (safety-critical) hardware when saying they virtually disallow interpreted languages.
 
Amleto, just to clarify, are you talking about Defense (millitary) departments OR are you talking about safety critical hardware (in private) companies?

I ask this because I work with interpreted languages (due to their ease) and until now, I've always thought that the major bonus for C++ is its speed (compared with Java/C#/VB). From what you are saying though, it would appear that there may be another major advantage.
 
If you have VB experience, then it should be trivial to move to C# or Java (or maybe Objective C) - and you'll have much better job prospects. C++ is mostly (in Windows) used for game programming (and that's on the wane), it's more broadly used platform independently in performance critical subsystems and embedded stuff. I'd say these days even most of that work would be placed into a library linked into a managed code application.
 
Amleto, just to clarify, are you talking about Defense (millitary) departments OR are you talking about safety critical hardware (in private) companies?

I ask this because I work with interpreted languages (due to their ease) and until now, I've always thought that the major bonus for C++ is its speed (compared with Java/C#/VB). From what you are saying though, it would appear that there may be another major advantage.

Specifically, I'm talking about software on e.g. aircraft, submarines, helicopters etc etc.

The are stringent rules for software on machines that ultimately are responsible for people's safety. I don't believe that interpreted languages can get past some of the regulations.
 
Specifically, I'm talking about software on e.g. aircraft, submarines, helicopters etc etc.

The are stringent rules for software on machines that ultimately are responsible for people's safety. I don't believe that interpreted languages can get past some of the regulations.

I guess a lot of the reasons for stuff like that not using managed languages is that it generally needs to be real time and if a garbage collection kicks in just when the software should be adjusting something that is critical to the aerodynamics of an aeroplane it could have a pretty major impact!
 
But hang on...isn't aren't the (automatic) garbage collection algorithms bullet proof?

I don't think I've ever encountered a problem with the garbage collector. And if I ever do, any problems are highlight (and fixed), during testing.
 
To get some code certified/audited to meet DO-178B (a certification process/objectives for s/w on aircraft) you have to prove traceability + verification + validation etc etc for your product.

For c#, java etc, your 'product' now includes the run time environment/interpreter. To get certified code for your product, you now have to do a whole lot more work to show the java run time environment works properly (on the target hardware). Fancy doing that job? No? Nor do many others, and sure as ***, nobody wants to pay you for your time doing that when you could be using c/c++/ada in the first place
 
But hang on...isn't aren't the (automatic) garbage collection algorithms bullet proof?

I don't think I've ever encountered a problem with the garbage collector. And if I ever do, any problems are highlight (and fixed), during testing.

GC stalls the VM usually which is not ideal in a realtime system. You can mitigate it somewhat using assorted methods of parallel GC - but it still locks access to objects for some milliseconds. I don't know about .net but assume it's similar to Java.
 
Last edited:
GC stalls the VM usually which is not ideal in a realtime system. You can mitigate it somewhat using assorted methods of parallel GC - but it still locks access to objects for some milliseconds. I don't know about .net but assume it's similar to Java.

Yep, pretty much this. It's the fact that you have no real control over when stuff like that happens that makes it a problem.
If you need a system on a plane to respond within x milliseconds of getting some external input otherwise the plane will enter a nosedive then you certainly don't want the garbage collection algorithm kicking off at that point.

I have heard of some systems (financial exchanges) where they use Java, but using a VM that can hold off doing a GC cycle until it is started manually, after trading has finished for the day generally. In those instances they make sure not to do any allocation on the heap for the processing of a regular transaction. Never worked on anything like that myself, but it sounds like an interesting way of doing things.
If they have to get certification for the VM as Amleto says though, I guess even that wouldn't be good enough for that sort of defence contract.
 
Back
Top Bottom