Choosing a Language

Spooner

Well-Known Member
Joined
Apr 26, 2009
Messages
361
Reaction score
0
Location
Richards Bay
I need to choose a main programming language to study further but how does one decide which language to choose? There's C#.NET and Java available to me at the moment and any advice of what to keep in mind when deciding or even opinions would be helpful :)

Thanks :)
 
That question is not much different than asking which language you should speak - whichever you want to.

How much do you know about programming already?
 
I've been mostly a casual C# programmer (would probably say its beginner level) and just done simple small programs for the fun of it but I've decided to do it professionally cause I enjoy it. I've done some reading and it seems Java and C#.NET seem to be the most popular.
 
I am a C# developer - so call me as biased as you want...But I would recommend C#. I have done both but gave up on Java because I hated it for a bunch of reasons.

So why do I prefer C#?

- First and foremost, the IDE. I tried a bunch of the "top" java IDE's and none of them come close to Visual Studio - plus Visual C# is free (plus SQL server Express is free too).

- Next, although the actual languages look rather similar, I preferred the look of C# (yes, I know how superficial this is).

- Another big thing for me was to look at ecosystems and the environment(not IDE) around the language. Simply put, Microsoft has done way more recently for C# than Sun/Oracle has for Java. To see this, just look around for tutorials and resources. Microsoft has massive amounts of videos/literature/tutorials/docs, all of which are free. Plus with their MVP program alot of great developers feel special and end up writing amazing blogs.

- Also to do with the previous point, when I was learning both I relied alot on online material. And I found that alot of Java stuff(think j2me etc) is not clearly marked out and can be confusing for a new dev to even know what paths to take to get what they want done.

- Something that is big for me is to have a language that has quite a wide spectrum. Now I know that all of the Java dev's here will disagree with me on this one - but as much as Java is meant to be the open language that anything from a toaster to a car can run...it's not. For an example of this, simply find a webpage that has a Java applet. Atleast 80% of all PC's I've owned have never once managed to run a Java applet successfully. To this day on one of my PC's, every time I turn on (which isn;t often because I leave it on) Java pops up and tells me theres an update - and continues to never actually manage to install it. Then there's mobile devices. You get Android and the older J2me(correct me if im wrong Java folks!) which I'm sure you know from the beginning of MXIT days. Those were great days, but as soon as touch screen came in those apps sucked. There has been improvements that allow touch in them but it's pretty terrible. So Android is the new shiny thing now. But I watched a friend developing for it and two things stuck out for me very clearly. 1: The tools are terrible. 2: The docs are terrible.

- (continuation of previous point) So now how is C# different to that? Well, it runs on Linux and MACOSX via Mono - so that is possible (I do not know how good this is, as I have never needed to develop for either - but one of my previous students used to develop on his Mac). Next, ASP.NET is supported and integrated into IIS which means that without any installation (in some cases, minor installation) you have a server already setup for you. Now alot of people will tell you how terrible IIS is, and the older ones were, but since version 6 it has really improved and is now really descent. Then if you look at mobile development, for Windows Mobile 6 it is exactly the same as developing for Windows. But those phones are really dated, so lets move onto Windows Phone 7(WP7)...I installed the emulator, and had a working media app connection to the net and serving content in minutes, with no prior phone knowledge - this is because if you know .NET, you can develop across all it's platforms. Next is Silverlight. Silverlight is what Flash should have been, and is gaining traction for LOB (line of business) apps. So with that you can develop great stuff for the web, and desktop with OOB(out of browser). But once again, this isn't just restricted to web, because this is what WP7 uses for it's apps. Plus XBOX360 is about to allow Silverlight apps to be run on it. Also XBOX360 allows games to be written for it in XNA(a C# framework). And XNA also runs on desktop, Zune, and WP7. Then there are hardware things like the Netduino that allow you to write C# Micro straight to the circuitry to allow for things like little robots(yeah, terrible example - theres ALOT more to this!).
So to recap C# will allow you to learn ONE language and write apps for these things: Windows, MacOSX, Linux, Web Browser, Windows Phone, Netduino, Zune, and XBOX360.


Look, in the end it really does rest with you to decide which one you want to do. Find out all the fact's yourself (DON'T just take for granted that people on here - including me - are correct), and then decide what you think is right.

You have taken the most important step, which is deciding that you want to be a coder - congrats :)
I hope this helps!

p.s. I am currently a fulltime Silverlight developer about to go onto Windows Phone. Before that I was a C# lecturer(university level).
 
Not too distract too much from roguemat or the fact that as a Java developer I disagree with almost everything he said about Java, I still think you need to take a step back and think a bit.

What do you actually want to do? Programming / Software development is a very, very big industry. I personally specialise on server side development, with a huge amount of database modelling, implemented usually in a 3 tier environment.

Now for this I need to know: Java. But more specifically I need to understand J2EE and related technologies, I need to know SOAP / XHTML etc, Transact SQL, JSON, etc, etc.

I don't really like front ends, so I don't do a huge amount of graphic or multimedia related programming.

Now, if you go Java you will only really be able to program when you know / understand and can implement something like Swing, Struts, or whatever other framework you would like to use.

Same thing with M$ .NET: You can easily code in VB.NET or C# or whatever, but until you understand the frameworks in the .NET language you won't really be able to implement anything bigger than a basic 'hallo world' application.

Learning a programming language is a very small aspect of actual programming.
Learning the place of your programming language and how it fits in with the different technologies, now that's the trick.

Anyway: Just my very biased opinion.

In my opinion: As long as you don't learn Visual Basic you should be ok ...
 
the fact that as a Java developer I disagree with almost everything he said about Java
Well, if you didn't, you would be a .NET developer :)


Learning a programming language is a very small aspect of actual programming.
Learning the place of your programming language and how it fits in with the different technologies, now that's the trick.
Also, @Spooner, before even touching a language there is the logic side. If you have logic, and the right way of thinking, you will be fine.


In my opinion: As long as you don't learn Visual Basic you should be ok ...
Yes, we can all agree on that.
 
Thanks a lot guys, really appreciate the opinions :) given me a lot to think about before I decide on which path to go. Hopefully I can decide soon so I can get started :)

In my opinion: As long as you don't learn Visual Basic you should be ok ...
Yep this much I do know and agree with :)
 
Language is language, it's what you want to do with it that counts.

Having done both C# and Java, I personally think you'll probably find it easier to learn programming starting with C#. This is because I think the information Microsoft and other third parties provide to beginners to be of a much higher quality in terms of explaining what needs to be done and how to do it. You'll also spend a lot less time configuring your development/production/testing environment when using .NET because Java can have many many components (depending on what you're trying to do), and most of the time there is little information giving you an idea on how to fit everything together: you'll have to rely heavily on forums such as this. Many people berate .NET as being an easier/simpler/weaker etc. framework (which could be considered true in some respects depending on who you ask and what the topic is) however it does allow you to start producing functional code/applications/servers quicker than Java, bottom line. And developing actual functioning code quicker can help with self-confidence, especially when you're still learning.

Final words: just because you start developing in C# doesn't mean you can't ever move to Java (and vice-versa).
 
If you took some time to actually browse this forum you'd have noticed several threads with the exact same question in there discussing the exact same things being discussed right now giving you the exact same information and the exact same opinions.

Learn to program. Don't bother with a language; Meaning, if you have the ability to break something into logical steps you don't need no education. Just Google the mother****er

Step 1: Get girl to say yes
Step 2: ???
Step 3: Panties
 
Top
Sign up to the MyBroadband newsletter
X