Tuesday 8 February 2011

Your friend's first programming language

Your friend wants to dip a toe into the world of computer programming...and has asked you for advice.  There are so many languages out there...which would you recommend?

So you ask your friend some questions, like:

  • What do you want to do with the language...what kind of programs do you want to write?
  • Is this the first of several languages you want to learn lightly, or do you want to go deeply into one language for an extended period of time?
  • How important is the personality of the user community?

 And then you recommend the one that's most aligned with their needs and personality.

However, before your friend can get started using this first programming language, they're going to have to install the language on their machine.  Here's a reminder of what they'll need to do before they get started:
  • JavaScript:
    • Pre-installed in the browser
    • (optional in theory) Firebug or Chrome Developer Tools or IE debug bar
  • Java:
    • Pre-installed on OSX, or download from http://www.java.com. 
    • (optional in theory) Install free IDE (Eclipse, IntelliJ, Netbeans, etc.)
  • Python: (Beyond trypython.org)
    •  Pre-installed on OSX, or download from http://www.python.org/downloads
    • (optional, in practice) If you don't like IDLE, there are several other IDEs.
  • Ruby: (Beyond tryruby.org)
    • Pre-installed on OSX, or download from http://www.ruby-lang.org/
    • (optional in theory) Rails.  Pre-installed on OSX, or download from http://rubyonrails.org/
  • PHP:
    • Pre-installed on OSX, or download from http://www.php.net/
    • (optional in theory) Webserver. (if not preinstalled).
  • C + make:
    • Likely pre-installed on Linux, on developer-tools CD for OSX, or use cygwin on Windows.
    • (optional)  Subscription to O'Reilly Bookshelf.
  • C#:
    • On Windows, install Visual Studio, else suffer using Mono port.
    • (optional, in theory) MSDE developer account
  • Objective-C:
    • On OSX, install from developer-tools CD, else suffer using GNUSTEP port.
    • (optional, in theory) Apple developer account and iPhone/iPad
  • LISP:
    • Pre-installed on OSX and several others, else install emacs.
    • (optional)  A *readable* LISP book, last published in the 1980's
  • Go: (Beyond golang.org)
    • Install Python (see "Python", above).
    • Use Python to install Mercurial
    • Use Mercurial to check out the Go source code.
    • Install C and Make tools on the platform.  (See "C+Make", above)
    • Build the Go source code.
    • Modify your environment to add GOROOT and add $GOROOT/bin to your PATH
It's a shame that the process of installing Go is so painful.  Go's rather simple syntax makes it a really promising language for teaching beginners, but the installation process is so onerous that beginners are going to have a really tough time doing it unchaperoned.

But this is totally fixable...Go just really needs an installer so that you aren't required to install two other languages and a DVCS before you can write "Hello, World."

No comments:

Post a Comment