• Quick note - the problem with Youtube videos not embedding on the forum appears to have been fixed, thanks to ZiprHead. If you do still see problems let me know.

what are the facts on java vs C# vs C++?

PHP uses C syntax (like C++ and java) but PHP has variables more like Perl. Unfortunately, as PHP is normally used to produce HTML output, it becomes difficult to maintain a proper object-oriented approach.

Plenty of jobs out there for PHP jockeys at the moment.
Oh, I loathe PHP.

Well, I guess I mostly loathe the programs written in it, because PHP lends itself to the creation of truly awful messes.

Then again, they say that a real programmer can write COBOL in any language. :)
 
Several years ago, I heard that some programmers wrote a COBOL compiler in COBOL just for fun.

And people think I'm weird...
 
Write some programs in Assembler and come back and talk to me.

: old fart :

Nitpicking here. High level languages and assembler are two different animals. One describes the actual hardware you are working with, and makes no pretense at abstraction, (unless you want to go macro mad), high level languages are an abstraction that makes the hardware architecture irrelevant.
 
C++ is of course theoretically faster than Java/C#, but in practice this can sometimes require an expert to achieve. GC confers benefits in non-obvious ways (read: locality). Combine that with the fact that you can generally crank out a managed app twice as fast and the performance criticism loses steam very quickly.

I wouldn't bother learning a language just because "there are a lot of jobs in it." People who are smart can learn any language, and interviewers for good jobs know this.

Pros for each (trying to be original):
Java - Nice tools and library support. Huge community.
C# - .NET is by far the most productive platform for writing Windows applications these days.
C++ - Ability to do absolutely anything, any way you please. Power your computer using nothing but your own sense of self-satisfaction.

Cons for each:
Java - Frequently espoused by gasbags.
C# - MSDN Magazine can be extremely annoying.
C++ - Byzantine and/or tedious.
 
Don't know about C#, but I will second that C++ is faster than Java.

The big advantage of Java is that it's a hybrid between an interpreted and compiled language, and the advantage of this is platform independence (to a degree, anyway). With a C++ program, the program is written and then must be compiled seperately for each platform it is to be run on...one for a PC, one for a Mac, etc, etc. THis means that in a multi-platform environement you end up with several exe files and each system has to get the right one.

With Java, it's compiled in to a code language, not an exe. The code language is sort of like a "shorthand" Java. The clients then have their Java interpreter on, and any client can run any Java program (in theory). Java is a better choice when you plan on supporting a wide range of platforms, which is part of the reason it's gained popularity in web-based apps. C++ is better for directed programs, especially where performance is a factor.
 
After trying some .net and mono stuff, i must admit, i really do fancy it.

Coming from a linux/freebsd fanboy, that is saying something.

Trying java next wednesday.. Thanks for all your replies, i'm still very much interested in opinions and facts.. GIVE ME DATA. :D
 
Actually the facts behind why Java can on some occasions be faster than C++ is because of the GC. When a C++ program asks to allocate memory it usually must go to the operating system. Operating system calls are usually expensive. When the JVM in java asks for memory it does it the same way, but with one difference when the GC reclaims the memory not referenced by objects the JVM keeps the memory and the next time you allocate some object it checks if there is available in the reclaimed memory. This means that it can avoid some "expensive" operating system calls. Of course this process can be simulated in C/C++ with a construct called memory pooling.

Also the JVM has the possibility of optimizing running programs by collecting information on how the code is used and optimize appropriately. It works usually best with long running processes like servers and such. It is called HotSpot. There is no similar construct for C/C++ available. Closest is some stuff from Intel.

Now the problem is that these things that allow the programs run faster doesn't help some types of applications. Like most numerical applications does not benefit from the possibilities of the JVM.
 
Isn't multithreading supposed to be faster with Java than C++, too?
 
I wouldn't bother learning a language just because "there are a lot of jobs in it." People who are smart can learn any language, and interviewers for good jobs know this.
I'm sorry but that's just plain naive. Not that I don't agree with you, but by and large companies want someone who knows the particular languages/OSs/etc they have or are implementing. Plus it's hard to say from most interviews just how "smart" a given programmer really is.

Unless you're really young or have a really secure job or are rich (or some other condition I'm not thinking of offhand), it makes a GREAT deal of sense to learn a language (or database or whatever) because the job market demands it. Java and Oracle remain among the highest in demand, at least based on what I can tell/have seen and heard.
 
Isn't multithreading supposed to be faster with Java than C++, too?

It's isn't faster, but it's easier because it's built into the language. This is something at which Java excels.
 
I'm sorry but that's just plain naive. Not that I don't agree with you, but by and large companies want someone who knows the particular languages/OSs/etc they have or are implementing. Plus it's hard to say from most interviews just how "smart" a given programmer really is.

Unless you're really young or have a really secure job or are rich (or some other condition I'm not thinking of offhand), it makes a GREAT deal of sense to learn a language (or database or whatever) because the job market demands it. Java and Oracle remain among the highest in demand, at least based on what I can tell/have seen and heard.

I agree. On the odd occasion that I have interviewed or otherwise been involved in taking people on, I have looked for people who can be useful immediately. This is largely due to the short notice nature of activities that I get involved with but that engagement model is pretty common in IT.

Its also pretty obvious that if someone is advertising for Java programmers and you only know C++, clearly they will not take you on as a Java programmer - maybe as a trainee Java programmer but that's a different job spec and will certainly attract lower wages than the full position advertised.
 
I agree. On the odd occasion that I have interviewed or otherwise been involved in taking people on, I have looked for people who can be useful immediately. This is largely due to the short notice nature of activities that I get involved with but that engagement model is pretty common in IT.

The problem is that if you know Java and C++, say, then managers automatically assume that you can't possibly know either well. It's some sort of zero-sum game, and it's more than a bit goofy.
 
The problem is that if you know Java and C++, say, then managers automatically assume that you can't possibly know either well. It's some sort of zero-sum game, and it's more than a bit goofy.

Do they?

Generally, if I am looking for people I want them to have product (i.e. an enterprise s/w system) and / or industry (i.e. telecommunications in my case) experience - its not enough to know a programming language but Java (J2EE) is essential as a baseline. Its normally even more specific than that but I won't bore you with the details.
 

That's been my experience, looking for a job.

There's a specific instance from five years ago. I applied to a consulting company. I was given a choice between taking a test in C++ or Java. I chose C++. I only missed one question, and I would have argued about it because I think I got it right but didn't use the right buzzwords, except that it was only 3% out of 100%.

Because I had taken the C++ test, after the followup interview (which didn't ask any Java questions), it was determined that ipso facto I couldn't be brought up to speed in Java. Which is rather absurd, frankly. But it happened.
 
That's been my experience, looking for a job.

There's a specific instance from five years ago. I applied to a consulting company. I was given a choice between taking a test in C++ or Java. I chose C++. I only missed one question, and I would have argued about it because I think I got it right but didn't use the right buzzwords, except that it was only 3% out of 100%.

Because I had taken the C++ test, after the followup interview (which didn't ask any Java questions), it was determined that ipso facto I couldn't be brought up to speed in Java. Which is rather absurd, frankly. But it happened.

Obviously the people doing the recruiting were idiots - I have also been on the recieving end of stupid recruitment processes so I take your point. It doesn't mean that your experience is a general rule though.
 
No, but I can tell you that stupidity, recruiters, and esp. HRers quite often go hand-in-hand. Don't get me started.......
 
No, but I can tell you that stupidity, recruiters, and esp. HRers quite often go hand-in-hand. Don't get me started.......

Hah hah - HR is just a way for admin people to justify higher wages. In my experience they provide no value whatsoever to the business.
 
I'm sorry but that's just plain naive. Not that I don't agree with you, but by and large companies want someone who knows the particular languages/OSs/etc they have or are implementing. Plus it's hard to say from most interviews just how "smart" a given programmer really is.

Unless you're really young or have a really secure job or are rich (or some other condition I'm not thinking of offhand), it makes a GREAT deal of sense to learn a language (or database or whatever) because the job market demands it. Java and Oracle remain among the highest in demand, at least based on what I can tell/have seen and heard.

I suppose I don't disagree with you either, in that sense. What I should have said is that the original poster should concentrate on learning to learn new skills, since that's what ensures long-term viability in the industry. The fact of the matter is that Java is popular now, but it's far from a given that it will still be a reasonable choice for applications in the future. And, jobs in big companies mostly suck, so avoid them if you can :).

hodgy-- I would definitely hire a C++ programmer for a Java job, if I thought he were smarter than any of the Java applicants. I might be using Java on this project, but since I use the right tool for the job I might be using Visual Basic on the next one and Lisp on the project after that.

If you are a consulting company it may make sense to hire based on immediate need, but it makes no sense if you are trying to build a software company.
 
Obviously the people doing the recruiting were idiots - I have also been on the recieving end of stupid recruitment processes so I take your point. It doesn't mean that your experience is a general rule though.

Well, it's my experience, and I've been looking for a job unsuccessfully for a couple of years now.

And if it isn't a general rule, perhaps you could give me a telephone number or an email address or something for a recruiter or manager who 1) is not an idiot, and 2) is looking for people who are way smart and way competent. I will work anywhere on the planet except Atlanta.
 

Back
Top Bottom