Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
1. Yes, Microsoft took Java and copied much of it to produce C# but unfortunately they also locked C# to the Windows platform rather than carry forward one of Java's greatest benefits - cross platform compatibility.

. . .

4. I think you will find that Java (and C based languages) will last a little bit longer than a "few years"... Java and C are still pretty much neck and neck at the top of the demand charts with the proprietary C# and VB a considerable distance behind. See the tiobe index for, and admittedly rough, guide.

Another small point to note - if you go with the Microsoft .Net tools then you are pretty well tied to Windows and practically tied to Visual Studio as your IDE. If you go with Java (and many other open languages) then you have a wider range of choices of platform and IDE. Personally I hate going back to Visual Studio after using Eclipse as VS is so clunky and crashes too often.

Sorry to appear argumentative but I felt your post was a rant against Java rather than something which the OP could benefit from.

Craig.

As someone who did most of his work for a course in C#/.Net 3.5 from tools native to a MacBook Air, I have to challenge your statements regarding platform-locking and .Net. I will agree that there is a lot that Visual Studio makes easier, I wrote a lot of C# using TextMate with a C# highlighting plugin, and the Mono project. All of the output files ran just fine when I copied the .exe files to a Windows machine. They also ran pretty well on my MBA, using Mono as a runtime.

Yes, there are libraries that aren't implemented. For the most part, that won't matter to someone 'new to programming', as WCF/WPF are fairly advanced areas, and WinForms works pretty well in most cases.

I do agree that C/C++/Obj-C/C# are going to be around for a long time... performance of the scripting languages is relatively abysmal(I wrote a raytracer in PERL once, I know whereof I speak), and there are plenty of issues surrounding distributing code in plain-text from a commercial standpoint.

The comment about distributing the java runtime (by wrldwzrd89) was pretty pointless too, as every Mac has a java runtime on it, most have at least 2-3, and most windows machines eventually have one too. There's no need to distribute the runtime, it's already out there. That is more of a problem when it comes to less common languages... like Python.

As to Java vs. Python for learning? Go with Python. You'll at least get the basics of functions, variables, and control structures, and without having to worry as much about a build process. After you're quite comfortable with what you can do there, move to a more structured language like Java/C# or one of the OO C variants, C++/Obj-C. They all have slight differences in how they handle classes, objects, and method calls, but pick one and learn to do everything you could do in Python, in the new language.

As for IDEs... some syntax highlighting and brace-matching are useful, but when you get to the point of VS.Net, it's doing so much for you, and smothers you with complex option panels, that it's hard to figure out just what is going on sometimes.
 
(I wrote a raytracer in PERL once, I know whereof I speak)

There ought to be some kind of merit badge for this :)

On-topic:

Java is a fine language for learning object oriented programming. Python is multiparadigm. On the other hand, it is much less verbose than Java. Out of the two, I would give Java a slight edge because it mostly sticks to one paradigm and verbosity may not be a bad thing when learning to program.

However, both are excellent programming languages and both can be used for learning about programming.
 
I really think LangA vs LangB kinds of threads are pointless.

People have languages that they are most productive in. For them that's the best language. I am extremely productive in LISP, but in my current job I have to use C++ and Java. I don't get religious about what I'm asked to use.

You can learn programming in any language. Learning the fundamentals is much better than learning a specific programming language. To that end, I've found generally, "learn to program in x in 21 days" series of books to be good. Of course each programming language will have a particular book that is highly regarded.
 
As someone who did most of his work for a course in C#/.Net 3.5 from tools native to a MacBook Air, I have to challenge your statements regarding platform-locking and .Net. I will agree that there is a lot that Visual Studio makes easier, I wrote a lot of C# using TextMate with a C# highlighting plugin, and the Mono project. All of the output files ran just fine when I copied the .exe files to a Windows machine. They also ran pretty well on my MBA, using Mono as a runtime.

Yes, there are libraries that aren't implemented. For the most part, that won't matter to someone 'new to programming', as WCF/WPF are fairly advanced areas, and WinForms works pretty well in most cases.

So are you saying that "someone new to programming" should do what you have done here? I'm aware of Mono but surely you would agree that Microsoft's .Net tools are geared towards the Windows platform. They are not cross platform in any meaningful way.

With Java I regularly develop commercial applications where I can develop and test the app on my work Windows machine before deploying it to a Windows CE.Net 5.0 PDA. I can (and have) brought work home on a USB stick and continued to develop it without any changes whatsoever on my iMac and then deployed it to my own Sharp Zaurus PDA, again without any changes. I can then go back to work the following day and pick up where I left off at home.

Anyway, this sort of discussion isn't helping the OP so I'm going to stop there.

I really think LangA vs LangB kinds of threads are pointless.
Perhaps but the OP asked a valid question and doesn't have sufficient experience yet to be able to switch back and forth between languages. Python and Java are both excellent choices to learn and the OP should be encouraged not told that their question is pointless. IMHO of course...;)
 
I do think it's important to pick a language that has lots of resources available. That means complete online documentation, online tutorials and walkthroughs, lots of sample code to look over, a wide variety of books you can purchase when you want more structured learning, third-party libraries written to extend the language and solve particular problems, and forums where you can get help when you get stuck. Both Java and Python meet those requirements, but I would give an edge to Java on that basis, there's just a mountain of Java resources out there. Personally I think one of these languages would be easier to get your feet wet with as opposed to a C-based language.
 
Personally I think one of these languages would be easier to get your feet wet with as opposed to a C-based language.

Conventional thinking places Java firmly in the C-based language category. Python is too to an extent although it is influenced by other language types as well (it has definite functional language traits).
 
I gave java a whirl. and its so complex.

So I tried python its just easy for me to get my feet wet with programming.

I want to master python and then move on to C-based languages once i have this one down completely.

Thanks for everyones input, I really appreciate it. :D
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.