Web Culture

Which Programming Language Should You Learn For Software Development?

James Bruce 04-11-2011

programming languagesWhen 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 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.

programming languages

[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].


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.

computer programming languages


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.


computer programming languages

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.

computer programming languages

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.

programming languages

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.

Interested in the best browser IDEs programmers should know about The 13 Best Browser IDEs Every Programmer Should Know About Looking for a reliable browser-based integrated development environment? Start developing anywhere with these browser IDEs. Read More ? Take a look at our list:

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.

Related topics: Programming, Study Tips.

Affiliate Disclosure: By buying the products we recommend, you help keep the site alive. Read more.

Whatsapp Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Vijay
    July 21, 2017 at 6:46 am

    I want to make software which will used for billing in shops.
    I have knowledge of C, C++, Java, C#, Python.
    So which languages I need to use?
    Please let me know .

  2. Baber khan
    January 2, 2017 at 9:02 pm

    I m doing computer systems engineering and i know upto many extent C and C++..
    by reading this blog i was thinking to choose C++ as my career language

  3. Tribute
    November 5, 2016 at 6:20 pm

    What about Lua?

  4. Sriram.garapati
    October 6, 2016 at 5:42 pm

    It was very difficult for me to get on programming languages

    September 28, 2016 at 4:57 am


    I am a mechanical engineer, now i am planning to change my career into IT and i have a very little knowledge in C and C++ that i studied during my graduation. So i am planning to start studying C/C++ thoroughly, what do you recommend me to start with?

    • Muhammad Junaid
      February 20, 2018 at 2:43 pm

      C than C++

  6. AjithBalakrishnan
    August 29, 2016 at 1:55 pm

    Thanks for the good article James Bruce. I am an embedded developer. We need to create an attendance monitoring system. We can create the hardware but i don't know where to start in the case of software section. What i need is , i will get some data through USB port of computer.I need to collect those data's and save those in a text file. I know C programming. Please suggest whether which language is better & simple for me and the requirements for those.
    please give a replay also on ajithkannampara@gmail.com

  7. Unimax Software
    May 28, 2016 at 11:56 am

    I think C# and Java both are much better languages.

  8. Vivek T
    February 23, 2016 at 1:09 pm

    Likelihood of making you money; I don't want to be money!

  9. Anonymous
    June 9, 2015 at 9:26 am

    I know the basic c/c++. For create any software do i need to learn any other language or just continue to learn the c language? if so where can i get the materials to develop my knowledge?

  10. Brian
    April 23, 2015 at 2:00 pm

    Thanks for the good article James Bruce. I am still beginning to learn and I want to start with a simple project "A College Management System" - a system that should run on and be accessible by multiple users on a LAN. I honestly don't know which language I should use for the development. Is there anyway you can advice me on this? also advice on which DBMS i should use, between Oracle and SQL.

    Just advice on the best language i can use for developing this irrespective of whether or not it is hard to learn. I willing to learn the hardest ones but also the best. You may also send the advise direct to my email as registered


    • James Bruce
      April 23, 2015 at 2:35 pm

      PHP/MySQL is the easiest and most widely supported combination to get started on. "Best" is subjective, and no doubt someone on here will argue their case for any language.

  11. MS
    April 5, 2015 at 8:48 am

    cool informative article. i like c++ too. although at the start it may be a bit harder to learn for those new, but it'll become easier, much easier.

  12. sean
    March 30, 2015 at 2:18 pm

    This is an excellent guide. I have been looking to learn some programming languages to take over for the programmer at my company. I know that everything we do is in C#. However, I have also been looking to get into software development, I think C++ might be a good choice for me.

  13. David
    March 6, 2015 at 4:24 pm

    I think softwares like windows and even iTunes are created with C++|. James Bruce seems to believe its only good for gaming apps??

    • James Bruce
      March 6, 2015 at 4:38 pm

      "forming the basis of .... most advanced Windows software".

      Yeh, I can see how you read "only for gaming apps" from that.

  14. M.L
    February 26, 2015 at 5:58 am

    As a beginner, Sir James which is the best programming language I should prefer and from where to collect information for it? As I want to make games and software and how to continue with after that?

  15. Me
    February 25, 2015 at 11:25 pm

    C++ isn't difficult to learn.

  16. Vivitech Ltd
    January 26, 2012 at 4:10 pm

    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.

  17. Vivitech Ltd
    January 26, 2012 at 11:56 am

    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.

  18. joseph eagan
    January 16, 2012 at 9:08 am

         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.

  19. wei2912
    December 25, 2011 at 8:52 am

    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.

  20. Patrick
    December 24, 2011 at 4:14 am

    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

    • Kyle
      July 5, 2017 at 9:00 pm

      Yea me to Ive been looking at comments and many suggest C and then C++, and then maybe Java or python being difficult. Please let me know if you have gotten any information on the easiest but most useful programming language. :)

  21. randomperson
    December 4, 2011 at 1:37 pm


  22. Anonymous
    November 27, 2011 at 3:26 am

    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.

  23. Burningsoul
    November 19, 2011 at 9:36 am

    Java is helping allot to  my beloved PHP

  24. Ishar Jay
    November 8, 2011 at 1:34 pm

    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
      November 8, 2011 at 2:52 pm

      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
      November 10, 2011 at 8:56 am

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

  25. huntandpeck
    November 8, 2011 at 7:28 am

    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
      November 8, 2011 at 8:41 am

      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. 

  26. xeeker
    November 7, 2011 at 9:55 pm

    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

  27. James Bruce
    November 7, 2011 at 9:22 am

    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
      November 27, 2011 at 7:33 pm

      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
        November 28, 2011 at 10:52 am

        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?

  28. xeeker
    November 7, 2011 at 5:16 am

    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
      November 7, 2011 at 5:27 am

      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
      November 7, 2011 at 9:25 am

      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! 

  29. el tio ska
    November 6, 2011 at 11:35 pm

    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/...)


    • Jeff Fabish
      November 7, 2011 at 5:29 am

      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
        November 7, 2011 at 9:27 am

        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
          November 7, 2011 at 9:53 am

          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? 

  30. Khaled
    November 5, 2011 at 7:03 pm

    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?

  31. gb
    November 5, 2011 at 12:53 am

    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
      November 5, 2011 at 1:49 am

      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.

  32. Jeff Fabish
    November 4, 2011 at 7:14 pm

    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
      November 5, 2011 at 8:45 am

      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
        November 5, 2011 at 9:04 am

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

  33. xeeker
    November 4, 2011 at 6:50 pm

    what abt python?

    • Jeff Fabish
      November 4, 2011 at 7:18 pm

      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
      November 5, 2011 at 8:46 am

      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. 

  34. Justin9
    November 4, 2011 at 6:30 pm

    ruby ....?

    • James Bruce
      November 5, 2011 at 8:47 am

      Next week - web based...

  35. Progger
    November 4, 2011 at 6:06 pm

    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
      November 5, 2011 at 8:48 am

      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. 

  36. Bruce Epper
    November 4, 2011 at 5:47 pm

    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
      November 5, 2011 at 8:49 am

      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. 

  37. freds4hb
    November 4, 2011 at 5:27 pm

    Wow, nothing about Ruby on Rails. Wow.

    • Jeff Fabish
      November 4, 2011 at 7:08 pm

      Ruby on Rails is a web application framework

    • James Bruce
      November 5, 2011 at 8:50 am

      Next week - it's a web based language, hence I said "we'll be covering web based languages next week". 

    • zed
      February 18, 2015 at 3:04 am

      A program is as good as the programmer. Many of the Java programmers out there are real Dumbo.

  38. Botond Barabás
    November 4, 2011 at 5:26 pm

    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
      November 5, 2011 at 8:51 am

      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
        November 9, 2011 at 7:30 pm

        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
          November 10, 2011 at 8:50 am

          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. 

  39. SRG
    November 4, 2011 at 5:20 pm

    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
      November 4, 2011 at 5:42 pm

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

      • James Bruce
        November 5, 2011 at 8:53 am

        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
        November 9, 2011 at 7:35 pm

        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).