What Language Should I Choose?
by Patrick Godwin on May.10, 2009, under Programming, Technology
I get asked this question at least once a month. Someone I know will come up and ask me this question. I can never answer this in a clear, concise way. So I’ve decided to write a blog post on all the Pros and Cons of the languages I know, and refer my friends to this post.
VB.NET: I love this language and I would recommend it to anyone starting programming. I learned how to program in Visual Basic 2005 and I can safely say it is one of the easiest languages I have ever used. The syntax reads in an easy, clear way. You don’t have to worry about silly semi-colons or curly braces. Building a User Interface is simple with the Visual Studio WinForm designer. The inclusion of the .NET Framework in Visual Basic has given some great resources to this already great language. The only downside to VB.NET is the dependence on the .Net Framework/Mono Runtime. While this is possibly one of the greatest features in the language, it takes away a lot of the power you see in an unmanaged language. Not to much of an issue, but still a con.
C#: C# is another great language that I would recommend C# to someone who has some prior experience. While the syntax and program design can be annoying at times, it is a very powerful language. While sharing the same advantages as VB.NET, it also has integration with the XNA Framework. This is by far the best managed Graphics API available. With it’s support for Windows, XBox 360, and the Zune it destroys every feature available in Managed DirectX. The biggest issue with C# is, again, it’s dependence on the .Net Framework/Mono Runtime and it’s slightly annoying program design.
C++/C: This is the language I always suggest when I am asked that question. While it is one of the hardest languages to learn, it is the best. I feel that learning a good, unmanaged language gives you a proper idea of independent programming. You aren’t relient on a managed environment, like in the .Net and Java languages, which means you have to manage your own memory. This teaches developers safe coding practices and helps them develop clean code. Once you have a good hold on the language, the object oriented concepts should be studied. This is when C++ becomes a true powerhouse. This allows you to develop complex applications or even great game engines. Once you have C++ under your belt, most other languages should come quite easily.
Python: A very powerful scripting language. You can accomplish many tasks in Python with relative ease, given it’s large, supportive user base. The only issue with Python is it’s annoying syntax. I swear I have so much trouble reading Python code for education. In a language like Python it can be hard to enforce good style, which is a big minus for the language.
Java: What can I say about Java? It has to be one of the worst languages I have ever TRIED to learn. I want to know who the genius was that, while writing the AP Computer Science Curriculum, thought “Well, we assume that these students have very little, if any, prior programming experience. What language should we choose? I know! Java!”. Whoever this man, or group of men, was, he screwed up big time. Why choose a language that has an annoying syntax and no advantages over the .Net Framework and force students to learn it for what should already be a tough class. While it is managed like the .Net languages, the Java Runtime Environment is receiving updates ALL the time. What are they constantly changing? Honestly, if you program in Java you have the patience of a saint. It takes real skill to tame this monstrosity of a language.
Now there are many more languages thant those I have covered here. MANY more. But these are the languages that have seen the most attention in recent years, and these are the languages I have used. I’ll always suggest C++ and then VB.NET for a beginner, but you should take everyone’s suggestion as just that, a suggestion. Read some tutorials, try each language, form your own opinions. Whatever you find the easiest and cleanest should be the language you chose.
Thanks for reading,
Patrick Godwin
Edit: Forgot to mention Mono when talking about the .Net Languages. Edited for clarity.
3 Comments for this entry
1 Trackback or Pingback for this entry
-
Twitted by ximplosionx
May 10th, 2009 on 7:32 pm[...] This post was Twitted by ximplosionx – Real-url.org [...]
May 10th, 2009 on 3:07 pm
This was a blog that needed to be written. I myself do not write code, i prefer that my writings be in the english language and on the creative side.(hence my push towards an english major) I do however find that practice of computer code very fascinating and would enjoy doing it if i felt i had the know how and the technical skill. But until this day my domain will be that of the English mastery. If i were to pick up code writing tomorrow i would be very thankful for this blog.
May 10th, 2009 on 3:13 pm
@Noah Dupes
Thanks man. I felt this needed to be said. And from now on, when people ask me what they should start with, I’ll refer them here.
January 28th, 2010 on 2:40 pm
I guess for the cross platform compatibility. I like .Net, but Java has some cool features and I think a lot of support for it.
But talk about updates, I know a company that wants to know which way to go, VB 2005, 2008 but no 2010 coming out in April. So yes there may be updates to Java, but don’t dispair, it’s a lot like C# and it works on a Mac, Unix, Linux or Windows.