(April 9, 2010 at 6:14 pm)cppman Wrote: Java compiles to its own byte-code, not the byte-code of the host machine. It can run on any platform which Java is compiled for. And don't forget that the Java compiler was written in C/C++. Therefore, any platform Java exists on, so can C++ (aside from the fact that some mobile devices have licensing issues).
No, there are compilers that compile Java down to the host machine byte-code. Yes, any platform Java exists on, C++ can run on too, but the point is that you have to compile your C++ program for that platform, whilst you don't for Java, which is the bonus you get when using Java
Quote:I'm referring to the built-in libraries. Yeah, Java itself has the same syntax as C, C++, C#, etc.
Ok, but even so, it is good to have consistency in any programming language. If you know that all methods in Java libraries are Camel Case, then you only have to remember that fact and you don't have compilation errors (although if you use an IDE it will alert you anyway). I see it as a moot point to be honest; it's just nitpicking that doesn't affect the functionality or usability of the language in the slightest.
Quote:Not in my opinion. Operator overloading is a very useful (and powerful) feature in C++ and C#.
The problem I have with operator overloading is consistency. You have the same operators doing different things depending on the type of the variable you are using. All these uses could equally just be made into different methods, so I fail to see how it makes C++ powerful and Java not. You can do the same things with methods in Java that you can with overloading operators in C++.
Quote:"strcmp" is C, though it could still be used in C++. C++ strings (from the STL) overload the '==' operator for string comparison. So does C#, and it is Object-Oriented from the bottom up. Rarely does someone want to compare the underlying pointer of a reference. They want to compare the value. Hence, Java should have implemented a "referenceEquals" (or similar) method and made the "==" a value-equality operator like every other language. In the cases where a "value" can't exactly be determined (or shouldn't be), the "==" can fall back on the "referenceEquals" method.
Again, it's consistency that is argued for. The == operator should have one purpose, and if it can be used on all objects, that purpose should be similar to all objects. The only such thing that all objects share is a reference, so == becomes the check for references. As you say, there aren't values associated with some objects, so it becomes absurd to use == for value checking. It also flies in the face and purpose of object orientation. Objects are containers for values, not values themselves. If you are dealing with objects, you may have multiple different values assigned within them, so the == operator is messy if used in this way.
Quote:I'm too used to Visual Studio (the most amazing IDE ever), so I suppose that gives me a lesser view of NetBeans.
If it's the most amazing IDE ever why doesn't it run on multiple platforms...just saying
Quote:A long time ago Microsoft distributed it's own Java virtual machine with Windows. Sun decided to sue Microsoft, and then Microsoft was forced to stop distributing it. Because of that, Microsoft developed .NET which became extremely popular. (I bet Sun is wishing they never forced Microsoft into that direction right now...)
Well I didn't know about that, cheers for the info. I don't see what the problem is with the suing though; if Sun make a product and don't want competitors from infringing their rights to the product, they have every right to sue. As for .NET, it still can't be run on multiple platforms, so I'm not so sure that Sun regret their decision (actually, I know a guy at Sun, and so I know they don't regret it!).
Quote:And you're right about the quality of the language having nothing to do with this. But with all my other reasons, this is just something that adds to it. Same thing with Apple. Along with my other reasons, I cannot stand the company itself.
Well I can't stand Microsoft, but I don't use that as a reason for not using C# or Visual Basic. I've used them in the past (XNA mainly) and whilst it is as easy to use as Java, it lacks the power of Java in terms of reliability and usability (on other platforms).
Quote:But all that aside, I'm a low-level programmer (ASM, C, C++) so naturally it is hard for me to like any high level language (C# excluded), or any interpreted language for that matter. Just personal opinion I guess.
Well C++ is a high level programming language with low-level features, as is Java (just with less low-level features). But yeah, I guess it is hard for low-level programmers to make the jump to high-level and like it...and vice versa