Monday, October 29, 2012

Learning How to Program - Picking a Langauge

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.

The webpages you view have been sent over by a server. Sometimes, its just a static page that was just sitting there on the server, but on modern sites, the page is often dynamically created for you. That means some code was being run on the server (the "back-end") to generate the page that it sent over to you. Websites can use any language on their back-end that is supported by their web host. The page that gets displayed is formatted in static HTML (a markup language), but it can contain Javascript that runs in the browser which allow it to do many more things.

Javascript
Since Javascript runs in all browsers, it can be a good choice of language to learn. No installation is required, since it can immediately be tried out in the browser. Javascript can be used for visual effects, but also for doing things without having to update the entire webpage. Modern web apps require Javascript for many of their features. (For example, try loading Gmail without javascript.) Javascript is also used in many web-related areas, such as creating browser extensions. It is often used for other areas that beginners might be interested in, such as creating AppScripts to work with Google Apps, or On(X) to automate things on Android. If you are interested in any of these purposes, javascript may be a good language to learn. However, Javascript has certain confusing parts, so if you're not planning on using it for one of the above purposes, you can try a more elegant language  such as Python.

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

Python
If you just want an easy and elegant language to learn programming, Python is a good choice. Unlike PHP and Javascript, which are made for the web, Python is a general-purpose language that can be used outside of websites. Python tries to be a very readable language, so even a beginner should be able to figure out what a sample of Python code accomplish.  Python has the unusual feature of using indentation to mark different parts of code. This makes the code look less cluttered, but can sometimes cause issues when copying code. If you don't have a specific goal that fits with one of the other languages  Python is a good choice to go with.

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

Summary: 

Pick:__      if you want to:__
Javascript - Program front-end webpages, extensions, Appscripts, etc.
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

 

6 comments:

  1. [...] the last post I discussed picking a programming language; this post will discuss a a general plan for learning programming. The next post should link to [...]

    ReplyDelete
  2. [...] As discussed, Python is a great language to learn programming with, and there are tons of learning resources [...]

    ReplyDelete
  3. [...] if you want to create or customize things beyond what your software has options for. In recent posts, I gave some tips for getting started with programming, and linked to some resources on Java and [...]

    ReplyDelete
  4. [...] on Ruby and Rails is the final one in a series on Learning How to Program. Previous posts were: Picking a Language, General Tips, Java and Python, and Web: HTML, Javascript, [...]

    ReplyDelete
  5. [...] to reference, but most videos below are short and to the point. The chart is based on these posts: Picking a Language, General Tips, Java and Python, Web: HTML Javascript and PHP, Learning Ruby and [...]

    ReplyDelete
  6. [...] Now that I finished the series on programming, I figured I would make some charts for it. This flowchart will help people pick a language. Click below to enlarge, or view it on Scribd. For more info, see the original post. [...]

    ReplyDelete