What Programming Language Should I Learn?

As I do my professional and personal work, I am always looking for the best tool for the job. In software development, there are several programming languages that can be used for a wide variety of reasons. I am often asked by people new to software development what is the best language to learn. They get confused when I ask them what they plan on doing. The reason is that people think there is going to be a best language for everything. However, everyone knows that there is no silver bullet. On the other hand, there are some languages which are better suited or more widely used in specific areas. So, given that idea, I came up with a list.

Enterprise Software DevelopmentJava is typically used in this space as people are moving many administrative applications to an intranet.

Windows DevelopmentC# should be used for any Windows development, this includes anything interface with the Microsoft Office Suite. Don’t tell me about POI for Java, I have used it, but the native libraries kick POI’s ass.

Rapid web prototyping and anything WordPressPHP is really good for rapid prototyping what a web site should act like. It may even qualify as v1.0 for your site. It may not be a good long term solution and there are better options for large-scale development. It is also the main language for anything related to WordPress.

Web Prototype with a backbonePython has quickly gained acceptance as the “next step” after PHP. Many current web applications use Python extensively. Adoption will continue as more services natively support Python like Google’s AppEngine.

General Web Development(X)HTML, CSS and Javascript must be in your toolbox for any significant web development. If you try to remain standards compliant (which you should) then you need to look at the XHTML standards.

Data IntegrationXML and JSON are the main data interchange formats on the web and in corporate development. With XML, there are various syndication formats (likely the subject of another post) and other business format standards to review.

DatabasesSQL is critical to almost any application. If you learn standard SQL, then you can translate this to almost any database product on the market especially the popular engines like Microsoft SQLServer, Oracle, DB2, MySQL.

Toolbox – Every programmer should be able to do more than just program in one language. In addition, there are many scripting tools that can be part of your toolbox which can make you extra productive. Cygwin is a Unix shell that you can install on Windows, and I can not live without it. Unix scripting is very powerful when dealing with batch processing of files or even just interacting with the file system. Perl, the Pathetically Eclectic Rubbish Lister, is another language that can be used for web development, but it really shines when dealing with file and text processing.

I know I have ignored various tools and languages, but this is really just a starting point. In software development, it is always helpful to keep learning new things and new concepts. If you really want to stretch your mind, start working in Artificial Intelligence and programming in LISP, or do some logic programming in Prolog. If you feel really adventurous take a look at Standard ML. I am not sure what it is really useful for, but it is a completely different language than most.

Reblog this post [with Zemanta]

152 thoughts on “What Programming Language Should I Learn?

  1. My opinion is that many universities and colleges focus on teaching programming languages such as Java, C, C++, etc… and do not pay too much attention to the programming languages currently used in the majority of companies, such as .Net (VB, C#) and PHP. Just look at dice.com or monster.com and you’ll see that most of the programming job openings require experience with .Net using VB or C# and a lower percentage also looks for PHP developers.

    Like

  2. is there any hierarchy of languages between all that I’ve heard mentioned? Lame Example but functional: let’s say there are 2 hackers competing in a contest to hack the other’s computer. Would one of them end up saying, “oh no, my language is rendered useless by so-and-so’s because he is using _______”

    layman’s terms i guess, if you’re going into cyberbattle, which would be the biggest gun?

    If you answer “depends on the application” can you give an example app and put who would win between ______ vs. __________ ?

    Maybe dumb questions, but i bet i’m not the only one who’s thought this….

    ps. let’s not get into discussion about the definition of “hacking” “cracking” or any of that, i’m sure everyone here knows what all those mean already…. you know the jist of what I’m asking… I’m not interested in or advocating hacking or cracking, just don’t want to start learning a wimpy language, i plan on investing a lot of time in my career.

    Like

  3. You’re all wrong.

    Python is the perfect beginner language. It’s easy to read, easy to learn and there is a massive number of libraries out there so they could likely do what ever they need to.

    After that, they’d naturally start immerse and see what the different languages excel at gradually. These beginners aren’t looking to fulfill a task typically– they are looking to see what programming is all about and python can do that for them.

    Like

  4. @dawsdesign you just said “You’re all wrong”
    How can you assure us that we’re all wrong?
    Have you tried Ruby?
    What can you say about Ruby or Rails?

    Like

  5. Almost a years, most of my works are done in PHP with Cake but i want to try new prog-language. i dont know where i would go.

    i’m just curious who got paid well, Ruby programmer with Rails background or Python programmer with Django skills?
    Assuming 2 years experience in programming field.
    Thanks

    Like

  6. You were missing Assembly Language, C++, C, and tons of others.

    But then I realized the site was about how programming, internet, and media, comes together.

    So Assembly is very much for being close to machine language or extremely low level abstraction.

    C++ is for programming games,
    C is for programing drivers.

    However, C++/C has been used for web dev stuff.

    There’s so many others, like rubies, etc.

    Visual Basis is where you learn the curves of programming (It’s kindergarten programming).

    Like

  7. Sorry, I made one mistake. The word “visual basis” in the previous upper post should be changed to “Visual Basic”.

    Like

  8. There is also a growing community for Oracle’s Application Express(ApEx). Requires you to know PL/SQL and basic HTML/CSS/JavaScript. That is what my company uses seeing how we are an all Oracle shop.

    Like

  9. Very good article. I am really trying to learn a little of many of these. I really don’t have much of a desire to be a GURU but feel that if I know a little of a little of everything I can get pretty much anything done.

    Thanks for the suggestions!

    Like

  10. I think Cory’s idea of learning about all these languages is a good one.

    As I alluded to earlier, I think the key to success in this kind of endeavor is to absorb the common ideas across the languages and try to recognize the similarities and differences. The are many textbooks that address this sort of study, but they can be very intimidating to the beginner who can program in only one language.

    You might begin by using something like wikipedia to understand the key concepts and then move to a textbook. (I certainly understand the limitations of wikipedia, but it often is a good place to start–just don’t stop there). A good collection of keywords is
    Abstract Data Type (ADT), Object Oriented Programming (OOP), Structured programming, functional programming, logic programming, database programming, mark-up languages, variables, control structures, encapsulation, abstraction, composition, inheritance and polymorphism, events, exceptions, parameter, methods, functions.

    The list is hardly all-inclusive, but it is a place to start. If your interest is peaked, I suggest my favorite programming languages book: “Concepts of Programming Languages” by Robert W. Sebesta. This book is very academic and theoretical is places, but selective reading on the introduction to each topoc is worth the effort for those interested in learning about the Programming Language Foundations.

    Like

  11. some of these aren’t really programming languages.

    also considering the very basic scope of this list i’m suprised that vb.net isn’t listed. i think most entry level programmers would find it very easy to learn…. however i do think they should make sure to uninstall it and never use it again till they master a real language

    Like

  12. Tyson Jouglet –

    I am not trying to bash at all, but while Oracle’s SQL engine and database is second to none, PL/SQL is really… horrible. I’ve had too many PL/SQL programs that I rewrote in SQL called from some other language ending up over 1000% faster. You may want to drop the PL and use something more efficient. Again, I use and love Oracle the database, it’s only the addons that, well, stink just now.

    Like

  13. If you want to get into cross-platform Pascal, try FreePascal. Add a great development environment on top: Lazarus
    It’s nice and.. free!

    Like

  14. I believe your title is inaccurate. Several of the languages you list are not programming languages. HTML/XHTML, CSS, JavaScript, XML, JSON, SQL, all of these are not programming languages. Most of them are mark-up or scripting languages. The article is useful to someone new to this area, but the title is not *technically* accurate.

    Like

  15. I think that Visual Foxpro 9.0 is the best language for windows. It’s text and data handling are amazing connects and consumes any types of data and is mature platform to develop applications in a fraction of the time as other languages.

    Like

  16. […] What Programming Language Should I Learn? Currently 11/3 Submitted February 02, 2009 by jsuggs Tags: programming! technology! As I do my professional and personal work, I am always looking for the best tool for the job. In software development, there are several programming languages that can be used for a wide variety of reasons. I am often asked by people new to software development what is the best language to learn. They get confused when I ask them what they plan on doing. The reason is that people think there is going to be a best language for everything. However, everyone knows that there is no silver bullet. On the other hand, there are some languages which are better suited or more widely used in specific areas. So, given that idea, I came up with a list. […]

    Like

  17. You’re all wrong.

    Python is the perfect beginner language. It’s easy to read, easy to learn and there is a massive number of libraries out there so they could likely do what ever they need to.

    After that, they’d naturally start immerse and see what the different languages excel at gradually. These beginners aren’t looking to fulfill a task typically– they are looking to see what programming is all about and python can do that for them..

    Like

  18. @Sebastian you just said “You’re all wrong.”
    why can you say that? Have you tried using Ruby?
    Now, assuming 2yrs experience, who got paid well Rails programmer or the Django programmer? My friend is a Django however my other friend a Rails developer got well paid. That’s why Rails is so popular today. So i think Ruby+Rails is good for beginner if they are looking for more $$$.

    Like

  19. Learn Java 1st, this will provide you a great introduction to programming without the “gotchas” of segmentation faults, etc. Spend some time learning all the ins and outs of programming with Java, make some GUI apps, do some networking, some threaded stuff, etc. After you master the basics of high level programming, move on to C. C will teach you about the nitty gritty of how stuff actually works. If you know Java and C, C++ will be easy to pick up. C# will be easy to pick up also, learn Visual Studio and how useful it can be to create Windows Apps.

    After you learn “Real Programming”, then move on to more specialized technologies. SQL and Database Design are important and useful. Learn XML. A background in SQL will help with XML.
    Internet Technologies are important too. Learn how to set up a web server. Learn HTML and scripting languages.

    If you can be proficient in all these things, you will have base to be a productive team member is many companies.

    The worst people in the world to hire are people that know a hot language or technology but don’t have the general foundation that allows them to make good decisions on when to use what technology.

    Additional skills to master: Pick a coding standard and stick with it – homogeneous readable code is important when you have to maintain it. Get in the habit of adding logging and debugging code – it will help you in the long run.

    Like

  20. ^empa7hy, are you saying that C# is a stupid choice for Windows Development?
    What else would you recommend for Windows Desktop Development?

    Like

  21. What about C?

    C doesn’t require any libraries that aren’t already included on basically every system/OS. It doesn’t require a crazy-expensive compiler or development environment.

    C is simple and can be used for essentially anything. That’s why most apps today are still written in either C/C++.

    Learn C and everything else will come easy, if you even need to use anything else.

    Like

  22. Learning C++ may not be the best thing at this point.

    You can master the basics of C++, but you will never be to appreciate the actual complexities of the language unless you sift through the entire standard.

    The thing which I don’t like about C++ at this point is some thing which the standards committee wants to work on now (standardized threading libraries, some optional capability of automatic memory management)

    I think learning Functional paradigm would be a good idea (Haskell, Lisp)

    And learning Cobol may also open more opportunities for you. You can always focus on things like software constraints, software architecture, OOD etc and later master a language which you will need in your career (the chances of it being Java EE luckily/sadly are very high though)

    Like

  23. In the past just about every new programmer cut their teeth on one form of BASIC or another. Back then BASIC was largely interpreted, cumbersome and slow.

    Today modern compilers, such as Emergence BASIC, produce professional applications with a very short learning curve.

    Like

  24. Hello

    i want to creat Invoice software for my shop but i do not know what kind of programing software should i used please clear for me ?

    Like

  25. bew – google work mainly on C++, Java and Python, but really don’t know how they recruit. MS is more demanding, you must know all MS stuff, best would be placement via campus if you are college student I am not sure if their is any other shortcut.

    Ramin – If you can go for Java, ASP.NET or PHP because you can easily find companies using that for solution.

    Like

  26. >>I would suggest looking into what schools and colleges are teaching to get an idea of what will be big in 5 years.

    Actually that’s a lagging indicator. Usually universities are the last ones to update because they follow the trends very conservatively.

    If you want to know what’s hot and what’s coming up next, take a look at what big corporations are advocating (google, ibm, sun, oracle, etc)

    Like

  27. VB.NET and C# it’s all you need. VB.NET is NOT entry level like one commenter said.
    Silverlight, ASP.NET can be used with either. Get to grips with XML then XMAL. One step at a time. Get basic books first (better still use the web). Get express copies of either or both, Bob’s your Uncle and Fannies your Aunt.

    Learning a programming language is exactly like learning an instrument. The more effort you put in the better you become. There are no shortcuts. Unless you want to be a roadie and not a rock star! 🙂

    Like

Comments are closed.