Which Programming Language Should You Learn For Software Development?

   Which Programming Language Should You Learn For Software Development?When starting on the path of programming, it’s important you invest your time wisely in choosing to learn something that will both benefit you in the immediate future with visible results on your platform of choice, as well as getting you set up for any future languages. Your choice will depend upon a number of factors, so let’s take a look at their characteristics, ease of learning, and likelihood of earning you a living. I’ll also show you some code to display “hello world”, the first application many people write when learning a new language.

In this first part, we’ll be looking at languages used to program software – as in applications which run on the computer or mobile devices. Next time we’ll look at the increasingly significant area of web-programming languages, used to create dynamic websites and interactive browser-based user interfaces.

There are two previous articles in this series which discuss some fundamentals of any programming languages, so if you’re new to programming then be sure to read those too:

Java

Java is a full object-oriented language, strongly typed, with an extensive feature set focused on networking and cross-platform compatibility. Applications written in Java can run on virtually any OS – though the performance won’t be as good as something designed to run natively.

It is the language of choice for most Computer Science courses, and consequently almost everyone has at least a little Java programming experience. Android applications are written in Java too, though you can’t simply run a regular Java app on your Android mobile nor vice-versa.

Likelihood Of Making You Money

If you can make an app worth charging for on the Android marketplace, then the world is yours for the taking. There’s also a lot of enterprise-level Java jobs, but the competition is high and pay low.

java   Which Programming Language Should You Learn For Software Development?

[Note: Don’t confuse Java with Javascript, which is a completely different language used for web programming - we’ll look at this more next time].

C/C++

Though actually separate languages, they are often grouped together, as C++ is basically an enhanced version of C, adding object oriented features. C++ is the serious programmer’s language of choice, forming the basis of most computer games and most advanced Windows software. It’s high performance, but requires a lot more precision on the programmers part when it comes to memory management and consequently has a steep learning curve. Not recommended for absolute beginners.

Likelihood Of Making You Money

With less competition than Java, C++ programmers will always be in demand and paid well, especially in the games industry.

c plus plus   Which Programming Language Should You Learn For Software Development?

C#

Pronounced C sharp, this is Microsoft’s clone of Java (though the two have since diverged with more pronounced differences) – a general purpose object-oriented strongly-typed language. Performance is good, though not as fast as C++. Software written in C# requires .Net framework to run and is Windows-only.

c sharp   Which Programming Language Should You Learn For Software Development?

Likelihood Of Making You Money

There’s a good number of corporate C# jobs out there for enterprise solutions, but you’re unlikely to make money on a single piece of software unlike mobile development. Still, it’s a fun language and easy to learn for beginners, certainly I’d recommend it if you’d like to focus on Windows only.

You can download Microsoft Visual Studio Express for free, which helps greatly with GUI designing and code completion. You can also use it for Visual Basic and many other Microsoft-branded programming languages.

Visual Basic

Another of Microsoft’s contributions, Visual Basic is an event-driven language focussed on simple GUI-based apps. Event-driven means that the code you write will generally be reacting to what the user does – what happens when they click that button, for example. It’s incredibly easy to learn and get a simple app up and running, but ultimately limited and perhaps not the best for actually learning fundamental programming concepts.

visual basic   Which Programming Language Should You Learn For Software Development?

Objective-C / Cocoa

This is the Apple Mac language upon which most OSX and iOS applications are built. Technically, Objective-C is an extended version of C with object-oriented features, much like C++, but is nearly always combined with the Cocoa framework for building graphical user interfaces and higher level features on the Mac platform. You must also be careful with memory management.

The syntax and concepts you need to learn are quite complex compared to a language like Java or C#, but on the other hand, Apple provides a comprehensive free development environment (XCode) and tools which make the process of creating real, useable apps fairly easy. There’s also a wealth of written and video tutorials out there to guide you, so it’s certainly more accessible than C++. It’s basically your only choice for OSX and iOS development, but you’ll be able to write for both the Apple desktop and mobile environment with the one language.

objective c   Which Programming Language Should You Learn For Software Development?

Likelihood Of Making You Money

With a developer account ($99 yearly) and a killer app, you have the potential to make a lot – Apple has paid out $2 billion so far. App Store developers stand a better chance than Android developers for making money with paid apps, while Android developers tend to see more returns on in-app advertising.

That’s all the languages I’m going to cover today, and they form the majority of real-world software development on PCs, Macs and mobile environments. Before I get blasted in the comments, I’ve decided to include Python in the web-based list because that seems to be where it’s used most.

The truth is that once you have the basics down in any language, it’s relatively easy to learn another; just as knowing Chinese kanji makes reading and writing Japanese easier – programming languages often cross over and borrow from each other, sharing the same set of basic characteristics and syntaxes. Stay tuned for the next article in which I’ll look at web-based languages such as Javascript and PHP.

Hat-tip to Jeffery, an avid commenter here at MakeUseOf and often on-hand to help out in the tech Answers section, who suggested this article and some of the languages it should cover.

The comments were closed because the article is more than 180 days old.

If you have any questions related to what's mentioned in the article or need help with any computer issue, ask it on MakeUseOf Answers—We and our community will be more than happy to help.

51 Comments -

SRG

Java is definitively (imho) the best language today and for the few coming years. It’s a good language, good bases, good principles (JVM, write-once-run-everywhere), and the rich ecosystem is a good clue about the fact that it will last at least for a few years, including the varioues other languages running on the same JVM (Scala, Groovy, Clojure and so on).
About my background : i’m a software architect / developper for a big (industrial) company, and all of our softwares are running in Java these days (including the applications working at low-level in production).

Miggs

You’re right. Java is an excellent language but the applications resulted are crap.

James Bruce

I’d tend to agree here. It’s certainly the language of choice for many corporations as SRG demonstrates, but every Java app I’ve ever tried to actually use had been buggy as hell and just looks stupid with it’s own special interface elements rather than native. And so sloooooooow too. I hope it dies off soon…  

SRG

Well, i suppose you’re partly right.
Most of Java client applications used to have a poor design.

First, Java applications may have back- and/or front- office.
– “server” applications only have back-office part (no GUI) ;
– some server applications have back-office and front-end (either as a rich client in SWING or SWT, either through a web-client) ;
– some applications only have a front-end part (local clients) ;

I really think Java is great for the back-office part.
About the front-end part, thinks have evolved. SWING is not so ugly or slow anymore since a few years, and SWT applications (running on the Eclipse developper platform) have a great – and quite native – look, either in Windows or Linux. Moreover, it’s pretty fast. Swing tends to become as fast as SWT. 
But indeed there are not so much applications running SWT yet, and SWT applications tends to be rather “huge” (not a small 200ko .exe, even if you have only a few forms, the SWT/java version will be bigger). 

Botond Barabás

you should not forget about the special ones, LabVIEW is a good example. It makes less sense to learn something everyone knows already….

James Bruce

Good point Rebecca. Learning something obscure is great for established geeks as it’s get them bonus points for being unique, and possibly even a better chance at a job if they can really get into it – but no good for beginners. 

Botond Barabás

I was thinking about people who already have programming experience and want to evolve forward…
Learning C or C++ as the first real language is not that easy…
I was learning basic when I was a kid and it helped a lot to understand C, than I moved over to Java and C#, than to LabVIEW and now I’m not a programmer anymore. 
I can tell you that your value on the job market raises with everything you know but after a while you will have to specialize into something. And all of these are the general use programming languages. 

James Bruce

Absolutely. I would argue that simply learning more programming languages is not a good tactic to increase your job value though – rather, learning another communicative language may be more likely to put you strongly in demand. 

Even though I’m not the most skilled programmer and have very few support qualifications, with fluent Japanese under my belt I am often approached by Japanese companies in the UK for support and other technical positions. Something like that will definitely give the edge, especially when a lot of companies understand that if you’re good at one programming language, the chances arre you’ll pick up their own corporate choice quite quickly. 

freds4hb

Wow, nothing about Ruby on Rails. Wow.

James Bruce

Next week – it’s a web based language, hence I said “we’ll be covering web based languages next week”. 

Bruce Epper

Apparently you haven’t hear of Mono.  Binary compatible with .NET.  Allows C# programs to run on Mac, iOS devices, Android devices.  Haven’t tried it myself, but a few friends have stated that porting a MS C# app to Mono generally requires few modifications at all.

James Bruce

I hadn’t actually, thanks Bruce. That’s interesting though – an open source cross-platform c#? Might be a better candidate for some beginning articles than native c# then. 

Progger

I’d like to mention that C# is the default language for developing Windows Phone 7 applications. Thank you for the great summary and helpful ideas :)

James Bruce

Thanks Progger, I totally forgot that. It’s shame Windows phone 7 isn’t more awesome, because c# is generally a fun language to develop in. 

Justin9

ruby ….?

James Bruce

Next week – web based…

xeeker

what abt python?

Jeff Fabish

Python is considered a scripting language, which doesn’t really give you the low level capabilities that Java and C do. Regardless, it’s a good language to start from as it introduces multiple paradigms and enforces decent programming syntax. 

James Bruce

If you read the article, you would notice that I said I would be covering python next time, since it’s primary use appears to be in web based projects (though not exclusively). Still, I thought it was more appropriate to classify it there. 

Jeff Fabish

As always, good article James! 

To add on, the majority of operating system’s are written in c/c++. Once you learn C++, any language down the road is bang-zoom, easy as pie. It will also inadvertently give you a fundamental understanding of how applications and operating systems work (message queue, events, compilation, etc.)

I was expecting to see more VB bashing, since no one has I’ll go ahead and start. If your primary language is Visual Basic, your code looks like spaghetti and you’re not a real programmer. Visual Basic masquerades itself as a software development language, when in reality no self respecting programmer would ever recognize it as such. It’s a drag and drop scripting language.

I feel better.

James Bruce

But there is a quite a learning curve to c++ … 

Anyway, yes, thank you for handling the VB bashing. I had to delete my original paragraph for fear of the backlash ;)

Jeff Fabish

That’s what I’m here for, the dirty work (:

gb

I don’t get the belittling of VB .NET. It’s a fully capable language able to use all the functionality of the platform. The only thing missing is multiple inheritance … And you can work around that easily if you ever find the need.

Jeff Fabish

Visual Basic is not an object oriented language, so obviously is missing multiple inheritance. Again, it has elements of OOP but it is not. It’s a nice language if you want to make a …. a form.

Khaled

I think the C/C++ is the most powerful programming language ,but, it’s depends on what you are going to work on, and the time required to accomplish the mission?

el tio ska

Good article as always James!
I’ve just started learning Java as part of a Computer Science MSc… Previously had dabbled a bit in PHP, but only as a hobby. Java seems like a solid language to my non-experienced eyes.But maybe, as mentioned in the comments above, while the language is great the results tend to be crap (which sounds counter-intuitive to me, but anyways, life can be surprising…)My question: how hard is it to learn C++ after learning Java? And what route would you suggest to learn C++? (Course/online stuff/find work in the area and learn on the job/…)

cheers

Jeff Fabish

Java derives its syntax from C++, it will be very easy. As for learning C++, it’s the same as any other language. Buy a few books, find videos online, etc. 

James Bruce

Dude, come on, C++ is hard as hell to learn. Sure, it may be worth it, but I wouldn’t call it easy to learn coming from Java. 

I dont think it’s something you could learn on the job either. Do a few beginner youtube videos, anything will do, and get a feel for it. You might find it just puts you off entirely. 

Jeff Fabish

The hardest part for me was learning the concepts plus where and why I would apply it, I think if you knock that out with one OOPL than the next should be a breeze, in theory. Java and C++ are equally difficult in my book, wouldn’t you agree? 

xeeker

hi i have started college and am going for a computer science as my major. Right now we are being taught python as our main programming language. I have some basic java knowledge. I would like to know what programming language should i learn? i wanna be a programmer (prolly code to make games and software). Which language will I benefit from the most. I do not wish to learn objective c atm as i cannot afford a mac :(

Jeff Fabish

Hi Xeeker,

Did you even read the article? Most game engines use a hybrid of C++, such as Lua or UnrealScript. If you decide you want to make your own game engine, C++ is still the best language.As I stated previously, once you learn one object orientated language, the rest are easy. It’s then just a matter of changing implementation and syntax once you know the concepts. 

James Bruce

Python in college eh? Interesting, where is that?

As Jeffery says, C++ is probably the best route if you’re serious, but I think it’s a long path to go down unless you really can commit to it. iOS programming on the other hand could be picked up quickly, and you’d have useable apps out there in a year or two.

Personally, C++ was a little bit too difficult for me to take it seriously – games programming was kind of a childhood dream for me, and I realised I’d much rather spend my time playing them ultimately! 

James Bruce

Yeh… Not really anything special though are they? Just a list of niche and not particular good applications … And as for Java on Blu-Ray disks! Assuming the format isn’t dead in a few years because no-one needs physical media nowadays, I’m not sure why being able to run applications on a blu-ray disk/on a compatible blu-ray player is useful in the slightest. Some badly designed movie-tie in flash-like games? No thanks. 

Isuru Madusanka

Most corporations use Java as Server side architecture. Actually java is not a programming language, it is a platform. Java always tries to be platform independence while most of you tried only windows or microsoft applications. That’s why Swing acts weird on Windows systems. It is been almost more than 15 years and still big heads in industry including Google prefer java over other languages of because it can run on unix, linux, and microsoft softwares. If you want to check out good software I tell you to check out eclipse software. It isn’t buggy, or weirder….

muotechguy

Well, actually it is a programming language, but it may also be a platform. The distinction is somewhat irrelevant really. Other programming languages work cross-platform. 

Eclipse is an IDE to develop other software. It’s not really a good example of java software itself. I mean something consumer level that someone can actually use. Any examples there perhaps?

xeeker

Yea I go to Southwest Minnesota State University. They used to teach in java but switched to python and i do not have any idea why

huntandpeck

I think Python and PERL should have their own group, or put in with JAVA.  Sure they can be used for web CGI, but then so can C.

Python and PERL are more of what I would have called a working mans tool set as they are used in hard sciences, have a look at NASA for Python, bioinformatic for Python and PERL.  PERL is utilized heavily in *NIX environment administration.  Also both scripts can be compiled into a run time binaries to make apps for whatever your OS.In the end, after looking at many languages out there, I would probably point most beginners to Python for a starting place, since it forces programmers to conform to good practices, while being versatile in use and with a gentle learning curve.  Plus there is a plethora of resources for it.If that does not entice your then find a language that lets you do what you want, for me the flavor of the month is JAVA, so I can tweak my phone.There is much more to Python than just django, as knights who say ni would agree! IMHO:)

James Bruce

Well, I cant fit everything into the same article so those languages will come next week, and ultimately any language can do anything given the right compiling/interfaces to connect it; so I went with the *most popular* usage of the language. 

Ishar Jay

IT jobs are worst, We have to keep in touch with it every day otherwise we can’t earn some good money. I’m searching for another field which I can use that knowledge for whole life.

Jeff Fabish

That’s the fun part, though! IT isn’t for these five day a week nerds, you truly need to eat and sleep code.

James Bruce

Learn a real language Ishar. Chinese would be where my moneys at, or Spanish. 

Burningsoul

Java is helping allot to  my beloved PHP

Anonymous

Objective-C isn’t the only choice for Mac applications. I can program in other languages too and run them on OS X. I think it’s the only one for iOS though.

randomperson

…Python?

Patrick

Sir James, does all of the programming languages there are arranged according to their difficulty? because I want to learn from the very beginning of it

wei2912

Some applications use Java technology but mainly uses native languages like Firefox. If you look in Firefox files, you should be able to see a .jar file.

joseph eagan

     I started out learning C in college then of course C++ along with a rather painful, and rather difficult class in data structures hahaha. Well it was difficult until you finally grasped the idea of pointers, and then . I then later moved to advanced programming with C#, and now am learning Java(currently intermediate).

     Java by far has been extremely simple to learn, but I can thank the fact that I already know what linked list, arrays, int, strings, bytes and bool are I already understand loops and, and if statements. SO i would be curious if it was already easy to learn already knowing and comprehending all of this?

     However I think that C/C++ is the language to start of in. Though tedious and difficult, it makes learning other programming languages easy.

Vivitech Ltd

We have been using C Sharp and VB.NET at our company for years now. We find it is easy to understand for developers, and with the CodeRush plugin we can develop cleaner, reusable code.

Vivitech Ltd

We’ve been developing with C Sharp and VB.NET for a number of years now, the Visual Studio tools are very powerful and versatile. We use it with the CodeRush Plugin and prefer it over other languages. In the future we will be adopting Objective-C, it will be interesting to learn.