MadSci Network: Computer Science |
You sound like someone who is trying to learn your second computer language! More on that in a moment. You’re making some assumptions that have no basis in reality. First, you assume that because Java came after C++, it should make a certain type of programming easier. As a matter of opinion, I think writing most applications in Java is easier than writing them in C++, but the relative newness of the languages is not a deciding factor on that issue. C++ came about to add object oriented programming to an already popular language. Java came about to make it easy to write applications that were both portable and secure. In C++, for example, there is no way for me to guarantee that your program will not wipe out all of the files on my hard drive. In Java, I can do exactly that. That said, Java is, in many ways, a better language for writing applications. Since it didn’t start with the baggage of a 30-something year old language, Java is also a much cleaner, better thought-out language than C++. Some of your frustration seems to come from the seemingly endless number of objects that appear to be a part of Java. Well, they are and they aren’t. Java is almost always implemented with a large collection of standard objects. Unlike C++, which is designed to run with no real knowledge of the machine it runs on, Java environments generally assume you will run on a specific run time platform that comes along with the language. When you learn Java, it’s like learning C++ and, say, Windows NT and Microsoft’s Foundation class library all in one. If you compare Java to the package of a language, O/S and class library you need to write real C++ applications on Windows, I think you can see that the languages look a bit more similar in size. As an added bonus, though, the Java application will also run under Windows 98, Mac O/S, Unix with X-Windows, and several other operating systems. C++, for all its reputation as a portable language, can’t say that. Finally, Java as a language is really a separate thing from its object libraries. You could implement Java without them, creating a version to use Windows and Foundation. You mentioned that Java has to be told what not to do. I really don’t know what you mean by that, unless you are referring to the error handling abilities built into the language and its libraries. If that’s what you are referring to, then I would turn the complaint around. C++ has no effective, universal way to deal with error handling throughout the language and its object libraries. Java does. In my opinion, Java is the winner on this issue. Finally, you say Java is more difficult than C++. This, coupled with your other comments, make me suspect that you learned C++ and have never used any other computer language extensively. Remembering back to when I learned my second computer language, and thinking about the people who I have taught to use a new computer language, the second language people learn seems to be the hardest. With the first language, you have no preconceived notions. You learn to think and express yourself in that language. When the next language comes along, you are forced to think in a different way, not a new way. That’s hard for most people. I would suggest that you give Java a chance. Accept it on its own terms, without comparing in too much to any other language. Look for the things it lets you do that C++ does not, as well as the things you’re already seeing that C++ can do that Java cannot. Java is not a perfect language. I’m not even going to claim it is a better language than C++, despite what you may read in this note. It is just a different language. In the last year I have used Java, C++, ANSI C, BASIC and Logo for various projects. Before that I’ve used Fortran, Algol, Pascal, several assembly languages, and dabbled with a dozen other languages. From that experience, I can tell you there are specific projects you could name that would cause me to pick almost any one of those languages, even today. (Algol is pretty dead. It’s about the only one I would eliminate.) They all have strengths and weaknesses. And they all taught me something about how to think about programming. If you give Java a chance, it will do that for you, too. Even if you end up doing almost all of your work in C++, you’ll take some ideas back to C++ that will help you there. Like error checking, for example! Mike Westerfield
Try the links in the MadSci Library for more information on Computer Science.