Lately, learning how to program has become quite popular, so I figured I would put together a quick guide to help people get started. As I discuss in The Future of Education II, I think many people should learn some programming. Even if they don't want to do it full-time, they'll still be able to use it for various smaller things in life. In part I of this guide, I'll discuss the different popular languages that one can learn.
The first step is to pick a language. You shouldn't worry to much about this choice, since you can learn the basic programming fundamentals no matter what programming language you choose. However, you might as well pick the language that fits best with your goals. Since the web is the main area of action nowadays, I'll quickly review how websites work before going through different languages.
PHP is a language built for creating dynamic web pages, and it runs on the server-side. Let's say you just finished building websites without coding and now you want to be able to customize things further. You want to learn how to program the brains of the website, i.e. the back-end. A large number of websites and scripts are built using PHP, and web hosts often come with a list of one-click-install scripts. If you want to create a plugin for Wordpress or work with the same script that runs Wikipedia, then PHP is for you. Practically all dynamic web hosts run PHP, and its very easy to get started with it. However, PHP has some issues, such as a messy syntax and certain inconsistencies and quirks. This means it might be better to learn a different language if just want to learn programming or you want to create an entirely new web app. However, PHP has improved over time, and if it fits your purposes, go ahead and learn it.
Ruby is similar to Python in many ways. It is a general-purpose language which is focused more on programmer productivity than running-time on a machine. This 'slowness' isn't really an issue for most cases a beginner will deal with. Ruby has become very popular recently due to the website-building framework written in it - Ruby on Rails. Rails developed certain principles (such as "convention over configuration") that let programmers built websites quickly. If you are interested in creating websites with Rails, then it obviously makes sense to learn some Ruby. While Rails can be used without that much Ruby knowledge, I think a beginner should first learn a simple language before taking on a complex framework.
Java is different than the other languages listed here in a number of ways. All code created in Java needs to be "compiled" into another code before it runs, and all variables need to be "declared" with their name and type. Java also enforces a methodology known as "object-oriented programming", requiring all code to belong to an "object". While there are various benefits to these decisions, they can make it take slightly longer to play around with code and test things out. Java is a heavy-duty language that runs quickly on machines, and it is taught in schools and used in many big companies. People who program in Java use an IDE for programming, which can provide various features to help with programming, such as auto-completion suggestions while they code, and automatic highlighting of certain errors. Java is also the language that Android and Android apps are written in, so if you want to code such apps, you need to learn Java. Java's rules will help you detect certain errors before even running the code, so it does have certain benefits as a first language. However, Java is not the language to pick if if you are interested in quickly creating dynamic websites, or in writing quick scripts for various purposes.
Pick:__ if you want to:__
PHP - Work with existing PHP scripts
Python - Use a easy general-purpose language
Ruby - Create sites with Ruby on Rails
Java - Program Android apps, Strict rules prevent errors