Well, I'm pretty much a C person, however CPP has some advantages for certain things like making database programs or for certain programs that involve passing complex data between things.
Java? Java is damn ugly. It makes you do a lot of stuff, even if you don't need it for your program. It's extremely strict. If you say "Hmm..for this program, I think I'm going to do things *this* way and since it's just a small program, I won't bother doing *this* because it's really not necessary"
And in reply Java says "NO! YOU CANT DO THAT! YOU MUST DO AS I SAY AND BE LIMITED AND WRITE YOUR PROGRAMS LIKE THIS!" Then it destroys all your will to live and mocks you.
Every programming language forces a grammatical or canonical structure. This is no different in C or C++. The point of Java is to take away the lower level details of C++ and provide higher lever structure. So in many ways, C++ is more complex than Java. For example, you don’t have to deal with pointers and memory management, you have an array type and bounds checking, you have string types, a Boolean type, multi-threading, etc.
Also, C is a well balanced language, it is effecient but not overly low-level. Java is slooooooooooooooooow. Java is designed to run on different machines and be cross-platform. You *can* compile it to an executable, but it's not as optomized for that. Hence, instead of running on one system well, it runs on all systems, badly....very very badly. It's like Esperinto: nobody speaks it natively. It would be better to make a cross-platform compilable package.
C is not good for gui interface, but is good for speed. VB is great for making a nice interface, but isn't very effecient for heavy stuff.
Java can be used for both and sucks equally at each. Java won't allow you to use stuff liek OpenGL, because that's platform-based. You could put it in the VM, if you don't mind even more overhead.
What is this heavy stuff you are talking about? Are you talking about business applications, Internet applications, Web Services, off-the-shelf programs like Word, Exel, etc., or Gaming software, something else?
Aside form questioning your claim that Java is inefficient, I would like to inform you that efficiency is not always the most important thing. That is why many development environments give you the option not to do it. For most applications, programmers should not focus too much on efficiency at the low level but at the higher, algorithmic level making sure to select the right approach. Efficiency for the business application developer would be defined differently as it is for those developers creating the algorithms for a database engine.
Your analogy with Esperanto is way off. Esperanto happens not to be the language of choice except for a very limited number of linguistics researchers. Whereas Java is a language of choice—especially where there is a very possible need to have something run on multiple platforms. Think of what you are doing right now: surfing the net. You will find that the vast majority of applications on the Internet have Java and not C nor C++ as their underlying language. Go ahead and do a right-click on your browser right now and view the source code behind the web page. You will likely find scripting code. It is probably Java Script or VB Script and your Windows environment probably has a Java virtual machine.
So that all depends on your point of view. Welcome to this world!
java programs are huge...actually....massive. If you want to write a hello-world program, you need to make sure your PC has at least a few gigs to hold the files in.
I guess you consider a “hello world” program to be heavy stuff. In some cases Java programs are wordier than C++ programs. Of course, the “hello world” program is not one of those cases. How would you do it in C++.
http://en.wikipedia.org/wiki/Java_programming_language
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Also read the part on performance on the Wikipedia.
But it's not the programs I really hate. It's the language. I hate java so goddamned much.... I would *never* take a job where I'd work with it. You may say "Well, that would limit your job options and pay." Okay, that may be true, but there are certain things that I just won't do to myself. I wouldnt want a job as an undertaker either.
So the tool is more important to you than its use. Interesting!
However, to be completely fare to you. Your C++ skills may come in handy in the world of .NET where you are again re-integrated into the world. But if you want to continue to progress in the computer industry, I would pay some attention to C# or something new if I were you.