Programming - C# vs Java

Are you really going to do cross platform development?
Or rather what do you understand cross platform to be, since it does not apply to just windows vs linux anymore?

Desktop
If your'e going to do apps on windows, learn c#
If you're going to do linux apps, learn java/python

Web apps
If you're going to do .net web server apps(asp/silverlight/WPF etc), learn c#
If you're going to do web server apps, learn java or PHP or Ruby or flex etc

Mobile
If you want to do windows mobile development, learn c#(and visual studio)
If you want to do iOS/Mac(iWhatever) development, learn objective-C(and get a mac)
If you want to do android mobile development, learn Java(and use eclipse)


Any case syntactically there is so little difference between c# and Java that if you are comfortable with one you'll pick up the other one quickly
So if you just want to learn the language pick any one(Visual Studio Express is free and nice to develop with for C#, or try eclipse for Java)
 
Are you really going to do cross platform development?
Or rather what do you understand cross platform to be, since it does not apply to just windows vs linux anymore?

Desktop
If your'e going to do apps on windows, learn c#
If you're going to do linux apps, learn java/python

Web apps
If you're going to do .net web server apps(asp/silverlight/WPF etc), learn c#
If you're going to do web server apps, learn java or PHP or Ruby or flex etc

Mobile
If you want to do windows mobile development, learn c#(and visual studio)
If you want to do iOS/Mac(iWhatever) development, learn objective-C(and get a mac)
If you want to do android mobile development, learn Java(and use eclipse)

Any case syntactically there is so little difference between c# and Java that if you are comfortable with one you'll pick up the other one quickly
So if you just want to learn the language pick any one(Visual Studio Express is free and nice to develop with for C#, or try eclipse for Java)

Nice suggestion there.

The main advantage of Java/PHP is that servers and supporting infrastructure can be cheaper as you don't get tied to Microsoft's environments.

That said, Microsoft has excellent tools and support that make the basics easier.

I currently work in C#/.net. One thing I do miss about Java is the 'strict' error handling. You HAVE to know which errors a object could potentially throw. It feels like a schlep at times, but it makes it more likely that a competent error handler will be in place.

I never had good tools to work with Perl/PHP, and wasn't too fond of its loose handling of variable types, but it was quite fast and good for my needs in a Unix environment. It seems like it should be fairly easy to pick up for a newbie.
 
my 2c

Learn Java or C#, it doesnt matter which, just pick one.

Get to grips with the various "frameworky" stuff offered by these languages.

If you want to become a leet coder, move onto C/C++

but youre still young, so just focus on Java/C#

If it were me I would go Python. its stupidly easy to learn, there is so much to it. however there are a couple of design paradigms which you might not understand (esp in Python 3) but just wing it aww yea!
 
Ok, so I reckon I'll go with C# for now.

Now, any good books someone can recommend?

Thanks :)

Now that you are starting with C#, I strongly recommend that once you have your initial console applications out of the way, that you look at WPF for building desktop user interfaces from the get go. Winforms (read "Grey and boring") applications are falling by the wayside at a rapid rate, and WPF will also stand you in better stead when moving to HTML and web development with asp.net as it uses a markup (XAML) for layout which is similar in form to HTML.

This may all sound greek... so come back to this post in a few weeks and read it again.
 
Ok, so I reckon I'll go with C# for now.

Now, any good books someone can recommend?

Thanks :)

For C# I will recomend "Wrox Beginning C#2008/2010" for Java You can try "Big Java 3rd Ed " by Cay Horstmann, "Core Java Vol 1" and "Core Java Vol 2" By Cay Horstmann & Gary Cornell.
After learning one you will easily pick up the other, I didn't really had to study C# before. I picked it up from my previous VB.Net combined with Java knowledge.
 
Good points, but I don't understand why should one move to python development? Thx

it was joke, what i mean is you'll spend a whole bunch of time on one thing, only to later on wanna go in a different direction..
 
I hate "teach yourself xyz in 3days" its a slap
In the face.

Sent from my Desire HD using MyBroadband Android App
 
Indeed!

Even for the BSc in IT degrees, you will only be taught C# and Java.
I'm going the BTech route though.

I did a BSc in IT

We spent the whole of 1st year doing C++ and VB .NET, 2nd year in Java...We didn't do any C#, had to go through that on my own in 3rd year. The language isn't what is important, its the fundamentals behind it. You need to go to a more lower level of programming to understand certain things better. Eg. Pointers
 
Ok, so I reckon I'll go with C# for now.

Now, any good books someone can recommend?

Thanks :)

try safaribooksonline.com they have a base subscription ($28 a month) that allows you 10 books at a time, and they can be rotated on a monthly basis. they cover all sorts of subjects and I found it much more useful than buying the individual books (at a huge price and then its not worth it either).
 
The language isn't what is important, its the fundamentals behind it.

At last, someone who gets it. Programming is not about the language: any monkey can learn syntax and APIs, and read a whole lot of documentation and tutorials. Becoming a great programmer is about being an expert in the principles of software development and a master of the thought process behind problem solving and designing robust and scalable solutions. It doesn't matter which one you choose but try to pick one that (1) is relevant, (2) is popular, (3) has jobs and (4) you enjoy. Relevance so that you're learning skills that can be transferred across languages, popularity so that you can find lots of useful information and people to help you, jobs so that you can make a living from it and enjoyment, well that shouldn't need explanation.
 
At last, someone who gets it. Programming is not about the language: any monkey can learn syntax and APIs, and read a whole lot of documentation and tutorials. Becoming a great programmer is about being an expert in the principles of software development and a master of the thought process behind problem solving and designing robust and scalable solutions. It doesn't matter which one you choose but try to pick one that (1) is relevant, (2) is popular, (3) has jobs and (4) you enjoy. Relevance so that you're learning skills that can be transferred across languages, popularity so that you can find lots of useful information and people to help you, jobs so that you can make a living from it and enjoyment, well that shouldn't need explanation.

Quite a lot of people get that. The concepts matter, but you're free to implement them in just about any programming enironment you wish.

The choice does affect the ease of implementation, and there are some solid limitations on what you can do with some languages, but generally the language doesn't matter.

That said - you will take longer to implement something in a language you are unfamiliar with. You'll have to learn the words before you can write the book.
 
Quite a lot of people get that. The concepts matter, but you're free to implement them in just about any programming enironment you wish.

The choice does affect the ease of implementation, and there are some solid limitations on what you can do with some languages, but generally the language doesn't matter.

That said - you will take longer to implement something in a language you are unfamiliar with. You'll have to learn the words before you can write the book.

Didn't really mean it that way :)

I just think that a conversation like "C# vs Java" just incites fanbois. I've moved from Delphi to C# to Java without any problem except a few days of getting used to nuances in the syntax. In fact, getting used to a new IDE takes longer than geting comfortable with the syntax. Obviously these languages are quite closely related (in terms of being object oriented and mostly statically typed). Switching from one of these to something like F# is obviously more of a challenge but in my opinion generally means you're working on a whole different paradigm.
 
Didn't really mean it that way :)

I just think that a conversation like "C# vs Java" just incites fanbois. I've moved from Delphi to C# to Java without any problem except a few days of getting used to nuances in the syntax. In fact, getting used to a new IDE takes longer than geting comfortable with the syntax. Obviously these languages are quite closely related (in terms of being object oriented and mostly statically typed). Switching from one of these to something like F# is obviously more of a challenge but in my opinion generally means you're working on a whole different paradigm.

The only problem with the new languages is that if you only do C# for a few years and then go back to something like C to program microchips you feel like a total noob again.

The newer languages are getting to be more configuration than actual programming IMO.
 
The only problem with the new languages is that if you only do C# for a few years and then go back to something like C to program microchips you feel like a total noob again.

Of course, the differences between development of applications and microchips is quite different :) but then again, in the local market there is a lot more employment opportunity in application development as opposed to microchip development.

The newer languages are getting to be more configuration than actual programming IMO.

Definitely agree with you there. Much of modern software development is getting dumbed down which means future generations of programmers learning in this environment are unlikely to have the skills necessary to become truly great at what they do. I strongly advocate that, for learning the basics, one should choose a language that doesn't hide it all away from you. If it does, all you'll be learning is how to put the blocks together. On the flipside, if doing the most menial task requires hours and hours of pain and suffering, a person can be quickly disillusioned. While interesting for some and probably a good learning exercise, situations like this can lead anyone other than the most die-hard wannabe programmer to think twice about their future.

So back to the topic, IMO no language is better than another: just make sure you choose one that meets the previously mentioned points. For example, if you go for a Java or C# interview as an Assembler expert and having no knowledge of object orientation or database development, you may look cool but you're unlikely to get the job. And if you're either a Java developer or a C# developer and know your stuff, in an interview they shouldn't really care which you are. And if they do, you probably don't want to work there anyway.
 
Cool thanks guys. Looking at c# in my spare time, but find out we have a 600 paged java book ahead of us this first year.
 
I always reckon a good developer should be language agnostic. The fact is everything you know today will be obsolete at some point, but the basic principles of programming remains the same. Of course to be a true expert you need to be intimately familiar with the platform or framework you are working on, even though that will also be obsolete at some point.

I currently work in both C# and Java and I lean strongly toward Java. Not because it is better, but because I like the philosophy and openness of the platform. MS in general makes me crazy, basic things are missing. How is it that 10 years down the line .Net does not have native POP3 and IMAP support?

Of course one nice thing about C# is the fact that it has true generics that the compiler will replace with the proper classes at compile time, whereas I believe Java still does a lot of boxing and unboxing. But I could be wrong

Anyhoo... Learn to program like a ninja, and learn new platforms as your needs require
 
Top
Sign up to the MyBroadband newsletter
X