Java knowledge Vs. C++ knowledge

Pages: 123
Hi.

I am studying computer science and I am at least aiming at becoming some kind of engineer in programming. Ofcourse I want to be employed and work as this.
But I wonder, are good C++ programmers more rare and more attractive on the market than let's say Java programmers? If I would guess, there are less C++ programmers since Java seems much easier and more simple imo. but maybe I am wrong.

The reason for why I am asking this is that I do not know which language I should focus on. I have most experience from making simple CLI and GUI projects in Java.
But I like learning C++, since I think it's more interesting to know a language which offers a better performance and where you can work closer to the hardware if you want/need to.

What do you know about this?
The stats for programming job offers in the UK can be found here. Not sure how meaningful they are... (or that the equivalent sites are for elsewhere.)

IT Jobs Watch
http://www.itjobswatch.co.uk

C++ currently figures in 5.46% of the jobs ads (over the last 3 months), whereas for Java it's 14.09%

So Java's more popular.

But good C++ programmers are rarer and more attractive on the market than (any old) Java programmer.

It does depend on what sector you want to work in. In London, the big investment banks are prob the main recruiters of C++ developers; to work on their algorithmic trading engines. To progress in this area you do need to understand financial mathematics, which doesn't appeal to everyone.

Andy
Last edited on
The language is irrelevant.

If you know the concepts of OOP, understand and recognize design patterns, and can create a good design, the language which you use to implement that design is just not that important. I've heard people say: I'm 90% done, now I just have to code it.

I think it's actually harder to learn a new API than it is to learn a new language.

I'm doing a masters in software engineering right now after a few years in the industry. During the coursework, the only language used is UML. Sometimes we need to submit an implementation, but the language is always open because the difference is really just the syntax. If we really wanted to, we could submit in asm, Ada, or FORTRAN. Though C++, Java, or C# will present a particular high-level design in a more obvious way.
Last edited on
It is very hard to find C++ programmers here in New York too, takes months of interviews to find someone who can tell the difference between C++ containers, let alone understands basics of multithreading, C++ object model, or template metaprogramming. But with all the Java mills out there churning out beginners, I would imagine the situation should be similar.
New York? I'm here too, maybe you can get me a job when I'm older. ;P

Actually, why wait? ;)

Well, if there are very few of any programmer, I'd personally go for the fewer.

It is very hard to find C++ programmers here in New York too, takes months of interviews to find someone who can tell the difference between C++ containers, let alone understands basics of multithreading, C++ object model, or template metaprogramming.


It is just as hard finding a good Java developer. There are plenty of beginners both in C++ and Java (because those get taught at universities), but the good ones are very rare. That's why, whcn recruiting, we're always looking at knowledge of some less popular languages than the mainstream ones. This is usually a good indicator of being passionate about programming.


In London, the big investment banks are prob the main recruiters of C++ developers; to work on their algorithmic trading engines.


They are also prob the main recruiters of Java developers as well. Somehow I know more of Java coders working in finance in London than C++ coders doing the same. This might be because Java and C# are main languages taught in many economic schools in Europe, yet they teach rarely C++ (currently use of C++ in new financial software is very limited).


I think it's actually harder to learn a new API than it is to learn a new language.


You did not learn anything non-Algol-like (C, C++, Java, C#, Pascal), did you? If you did, you'd know switching paradigms is hard. Only learning a new language in the same paradigm is easy. But generally I agree sometimes APIs can be more complex and convoluted than languages. See WinAPI. :P
Last edited on
winAPI is just messed up. Even if I don't plan on making cross platform apps, I just use SDL because it's a lot better than nasty winAPI.

They are also prob the main recruiters of Java developers as well. Somehow I know more of Java coders working in finance in London than C++ coders doing the same. This might be because Java and C# are main languages taught in many economic schools in Europe, yet they teach rarely C++ (currently use of C++ in new financial software is very limited).
Would Java or C# have more job opportunities?
For sure Java/C# offer more job opportunities (however, more competition, too). Unless you want to create 3D games.
Unless you want to create 3D games.

Though a terrifying number of game developers are starting to use Unity (which is C#/Java/some other language I forget the name of). I have a sinking feeling that the next few years of the game industry are going to be filled with a lot more random crap than we've had in the past, without much increase in product quality.
use of C++ in new financial software is very limited).

... to mission-critical components.
The main mission-critical component in finances is Microsoft Excel. :D

Jokes aside, the problem is those mission-critical components are often purchased as black-boxes (operating systems, trading platforms, trading platform APIs, databases, JVMs, CRM systems, even the Office suite etc.). So if you're willing to develop them, you need to look for a job in a software company, not in a bank (where if you're lucky, you'd only *maintain* and *adapt* software, not design it).

And at least as for database systems and trading platforms, I'm not very convinced C++ dominates there. It certainly *is* used there, but C, C# and Java are used there as well very heavily.
I'm mostly working in research and more theoretical domains, but I do see a trend to more Java, even though our software is considered performance-critical (solving NP-hard problems; shaving off percentages is massive).

I keep hearing/reading that Java just isn't that much slower C++ these days and while I wouldn't call it "easier" (it's all about the design, the algorithms and the data structures), it's definitely "less of a hassle". C++ is complex in places where it shouldn't be. It's still my first love, but I'm no longer pushing for it when we start new projects.
@rapidcoder
That's why, whcn recruiting, we're always looking at knowledge of some less popular languages than the mainstream ones. This is usually a good indicator of being passionate about programming.


What about PL/X that I know for IBM mainframe?:)

There was a thread from a 13 years old young man who reported that he knows about 20 languages and programming technolodgies that he learned during 2 or 3 years.:) But I would not recommend him to you.:)

I do not think that there is some shortage of qualified C++ or other languages programmers. Moreover it is very often that firms try to get rid of qualified programmers. More often they need programmers of some average level that is not far from the level of beginners.:)

And I would like to say that recruting agencies do not search any qualified programmers. They wait when some qualified programmer will come to them himself.:)

By the way the more requirements for the qualification of programmer usually means the less salary he will be proposed..:)

Last edited on
I can see why C++ may be less used these days. Java/C# are great at the high-level implementations and are very good at OOP. There is a ton of support for anything ANSI C when we get to lower-levels for drivers. In the aerospace industry, anything that actually goes into an on-board computer MUST be at a very low level (C, FORTRAN, asm) and every single line of code will have a 3-ring binder describing why that line is there.

C++ is a hybrid where you can have that low-level support and use OOP. Some of us call it the best of both words, but others could say that it doesn't make sense. C++ APIs can't support C users and so it makes more sense to write a low-level API in C, and an OO API in C# than to write one in C++ and support neither group.
C# is a programming technology while C++ is simply a programming language. C# libraries already incoporate all possibilities of Windows. For example there is no any problem to use different colors of the console in a console application while that to achieve the same effect in C++ you should learn Windows API and be able to apply Windows API functions correctly.
It is very hard to find C++ programmers here in New York too, takes months of interviews to find someone who can tell the difference between C++ containers, let alone understands basics of multithreading, C++ object model, or template metaprogramming.
Is that all you request to hire a new person?
By the way I do not know what is the C++ object model.:) I think it is from some fiction about C++.:)
@maeriden

http://en.wikipedia.org/wiki/Object_model


As I correctly pointed out it is from some fiction about C++.:) This verbiage that you referenced to has no any sense in practical programming. You can invent similar terms but their usefulness will be equal to zero.
Last edited on
Pages: 123