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 Development – Java is typically used in this space as people are moving many administrative applications to an intranet.
Windows Development – C# 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 WordPress – PHP 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 backbone – Python 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 Integration – XML 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.
Databases – SQL 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]](https://i0.wp.com/img.zemanta.com/reblog_c.png)
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.
LikeLike
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.
LikeLike
[…] What Programming Language Should I Learn? | Regular Geek Read the comments as well!!!! (tags: webdesign learning programming development computers language languages lisp java web-development) […]
LikeLike
[…] VIEW ORIGINAL ARTICLE […]
LikeLike
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.
LikeLike
@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?
LikeLike
Yes. Ruby is hard than python.
LikeLike
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
LikeLike
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).
LikeLike
Sorry, I made one mistake. The word “visual basis” in the previous upper post should be changed to “Visual Basic”.
LikeLike
I guess we’ve covered just about every modern programming language that’s out there.
LikeLike
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.
LikeLike
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!
LikeLike
[…] What Programming Language Should I Learn? […]
LikeLike
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.
LikeLike
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
LikeLike
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.
LikeLike
[…] Advice For Geeks […]
LikeLike
[…] Upcount Party Pictures: What The Internet Will Look Like in 2012 Internet: What Programming Language Should I Learn? Movies: The Top 8 Movies To Get You Laid Funny: Zombie Tennis […]
LikeLike
If you want to get into cross-platform Pascal, try FreePascal. Add a great development environment on top: Lazarus
It’s nice and.. free!
LikeLike
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.
LikeLike
PHP is worth more than prototyping. Something must be right about PHP if Flickr, Digg and Engadget use it. Not scalable my ass.
LikeLike
For Bioinformatics: we mainly program in C, a bit python – all under Linux-Environment..
LikeLike
My vote is for Python. But it really should be determined by what your goals are.
LikeLike
[…] blog gets over the course of months. I have Digg to thank for that traffic. That post was regarding what programming language I recommend to people new to software development. Once Digg gets a hold of a story, the comments flow rapidly. […]
LikeLike
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.
LikeLike
[…] two weeks ago, an article from a blog I read fairly regularly made its way on to the Digg frontpage. It was the opinions of […]
LikeLike
[…] 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. […]
LikeLike
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..
LikeLike
@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 $$$.
LikeLike
Where is C++? I learnt it 18 years ago, but it seems that C# took over as the most popular language. I use PHP for my web application.
LikeLike
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.
LikeLike
WSDL is a great language-neutral language to learn if you want to go into Grid Computing – Arunabh Das
LikeLike
I come from a Art background and I’m currently learning Java, Cygwin,Putty and XML at my new job.
LikeLike
Windows Development – C#
One of the stupidest things in this post.
LikeLike
^empa7hy, are you saying that C# is a stupid choice for Windows Development?
What else would you recommend for Windows Desktop Development?
LikeLike
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.
LikeLike
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)
LikeLike
[…] a continuation of the idea behind my “What Programming Language Should I Learn” post, people always ask how to learn a language. These are people who have not learned a […]
LikeLike
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.
LikeLike
C is my top choice. Asm is second.
LikeLike
hello, I plan to work for google or microsoft later, what language should i focus in?
LikeLike
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 ?
LikeLike
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.
LikeLike
>>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)
LikeLike
[…] Read the rest here: What Programming Language Should I Learn? | Regular Geek […]
LikeLike
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! 🙂
LikeLike
http://javascript.crockford.com/popular.html
JavaScript is quite a capable programming language. HTML/CSS are not in the same league.
LikeLike
What programming language will the “smart grid” use?
LikeLike
Keith,
I am soon purchasing a new laptop to begin programming. What laptop would you reccomend? OS X or Vista? Hwo much ram?
LikeLike