add Racket link
[lambda.git] / how_to_get_the_programming_languages_running_on_your_computer.mdwn
index 5f4c9f5..1afe9b6 100644 (file)
@@ -1,6 +1,9 @@
 ## Identifying your system ##
 
 We'll assume you're using either Mac OS X, or Windows, or Linux.
+If you're running **iOS**, you'll have a much harder time (perhaps impossible,
+perhaps not) getting this software to run on your machine, and we can't give
+you any guidance.
 
 If you're using **Mac OS X**, take note of what version of the Mac OS you're
 running. (Under the Apple Menu, select "About this Mac".)
@@ -12,12 +15,11 @@ running. (Under the Apple Menu, select "About this Mac".)
 *    Mavericks (10.9)
 *    Yosemite (10.10)
 
-If you're running **iOS**, you probably can't use this software on that machine. (A bit more below.)
-
 Furthermore, Mac users will be in one of two subgroups:
 
 *   You'll have Apple's Xcode and the independent MacPorts system
     installed. (Probably you don't. If you don't know what I'm talking about, you don't have these.)
+
     If you don't have these, but want to try this route, you can read about
     the MacPorts system at <http://www.macports.org/>.
     This automates the building of Unix-type software on your Mac; it
@@ -27,16 +29,14 @@ Furthermore, Mac users will be in one of two subgroups:
 
     There are also other package management systems available for the Mac, notably Homebrew and Fink. I only know a little bit about them.
 
-    Xcode is available at
-    <http://developer.apple.com/technologies/tools/xcode.html>. Some
-    versions of this have been available for free, though you do have to
-    register with Apple as an "Apple Developer", which involves accepting a
-    legal agreement with Apple. I have an older version of this installed.
-    If you download a recent version, email me and let me know how the
-    process works so I can tell others. There are instructions about how to
-    get Xcode in the MacPorts installation guide.
+    There are instructions about how to get Xcode on the [Installing MacPorts](https://www.macports.org/install.php) page.
+    Some versions of [Xcode](http://developer.apple.com/xcode.html) are available for free on the Mac App Store.
+    Other versions are available through Apple's Developer website (some of these are free, but do require you to
+    register with Apple as an "Apple Developer", which involves clicking to accept a legal agreement with Apple).
+    I have an older version of this installed. If you download a recent version, email me and let me know how the
+    process works so I can tell others.
     <!--
-    The latest version of Xcode to work with Leopard is 3.14; more recent versions (>= 3.2) require Snow Leopard.
+    The latest version of Xcode to work with 10.5 / Leopard is 3.14; more recent versions (>= 3.2) require 10.6 / Snow Leopard.
     3.2.6 is last version that can be downloaded for free by users of 10.6 / Snow Leopard. (But if they pay, they can use up to Xcode 4.2.)
     Xcode 4.1 was free to all users of 10.7 / Lion. Is Xcode 4.6.x still available for free? Are Xcode 5.x and/or 6.x available for free?
     -->
@@ -50,8 +50,7 @@ Furthermore, Mac users will be in one of two subgroups:
 
 If you're using **Windows**, you'll be in one of two subgroups:
 
-*   You'll have the Cygwin system
-    <http://www.cygwin.com/> installed.
+*   You'll have the Cygwin system <http://www.cygwin.com/> installed.
     This puts a Unix-like layer on top of your Windows system,
     and makes it easier for you to use the same software everybody
     else will be using, without its needing as much special-for-Windows
@@ -69,31 +68,26 @@ systems.
 
 *   We'll give examples using the packaging system shared by Debian and Ubuntu,
     and we'll assume that those of you using different packaging systems will know
-    how to make the relevant substitutions. You may also want to take note of the
-    output of the "uname -srm" command. On my machine this tells me "Linux
-    3.12.8-extrastuff x86\_64". That tells me I'm running the x86\_64 (as opposed to the
-    i686 or i386 or whatever) version of Linux, and that I'm running kernel
-    version 3.12.8.
+    how to make the relevant substitutions.
 
 
-**For all of these groups**, a general item to take note of is what "processor architecture" your machine is running. Three of the possibilities are:
+**For everyone**, a general item to take note of is what "processor architecture" your machine is running. Three of the possibilities are:
 
 *   One of Intel's i386, i486, i586, i686 architectures. These are collectively known as "x86" or "IA-32" or sometimes just "32-bit".
-*   Intel or AMD's x86\_64 architecture. This is sometimes also called "x64" or "amd64" or "IA-64" or sometimes just "64-bit".
+*   Intel or AMD's x86\_64 architecture. This is also called "x64" or "amd64" or "IA-64" or sometimes just "64-bit". (Note that these *aren't* "x86" machines, even though "x86\_64" starts with those letters.)
 *   ARM or some other architecture. These are generally lower-powered machines, like iPads. Some of the software we're proposing *might* in principle be capable of running on such machines, but installers don't seem to be available. We'll assume you have access to an x86 or x86\_64 machine.
 
-In the Linux example above, I could tell my machine is running x86 because the
-result of the `uname` command said "i386" at the end. Another machine I have
-says "x86\_64" at the end. On a Mac, you can also say `uname -m` in a Terminal
-session, and it will say something like "i386". I think that Mac OS Xs from Lion
-/ 10.7 forward have all been x86\_64-only. On Windows, I don't know how to
-collect this information. But generally, machines running Windows XP will
-probably be i386/32-bit (unless it's a version of Windows with "64-bit" or
-"x64" in its title); machines running Windows Vista or Windows 7 or Windows 8
-could be running either x86/32-bit or x64/64-bit.
-(Update: I found
-[this Microsoft page](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows)
-that may help.)
+On Linux or Mac OS X, you can open a terminal and type `uname -m`. If the
+result is "x86\_64", then you've got x64/64-bit. If it's "i386" or something
+like that, then you've got x86/32-bit. I think that Mac OS Xs from 10.7 / Lion
+forward have all been x86\_64-only.
+
+On Windows,
+[here is a page that can help you figure this out](http://windows.microsoft.com/en-us/windows/32-bit-and-64-bit-windows).
+I think that most machines running Windows XP will be x86/32-bit (unless it's
+a version of Windows with "64-bit" or "x64" in its title); machines running
+Windows Vista or Windows 7 or Windows 8 could be running either x86/32-bit or
+x64/64-bit.
 
 
 ## PLEASE REPORT PROBLEMS (AND SOLUTIONS!) ##
@@ -112,9 +106,14 @@ easier and more straightforward for others.
 of programming languages. The other dialects are called "Common Lisp" and "Clojure".
 Scheme is the more clean and minimalist dialect, and is what's mostly used in
 academic circles.
+
+*   In your web browser:
+
+    There is a (slow, bare-bones) version of Scheme available for online use at <http://tryscheme.sourceforge.net/>.
+
 Scheme itself has umpteen different "implementations", which share most of
 their fundamentals, but have slightly different extensions and interact with
-the operating system differently. One major implementation is called Racket,
+the operating system differently. One major implementation is called [Racket](http://racket-lang.org),
 and that is what we recommend you use. (A few years back they were called PLT Scheme, but then
 they changed their name to Racket.)
 If you're already using or comfortable with
@@ -127,17 +126,13 @@ try are
 or [Chibi](https://code.google.com/p/chibi-scheme). The later in that list you go, the more likely it
 is that you'll have to compile the software yourself. (Thus Mac users will need Xcode.)
 
-Racket stands to Scheme in something like the relation Firefox stands to HTML. It's one program among others for working with the language; and many of those programs (or web browsers) permit different extensions, have small variations, and so on.
+Racket stands to Scheme in something like the relation Firefox stands to HTML. It's one program (or platform) among others for working with the Scheme language; and many of those programs (or web browsers) permit different extensions, have small variations, and so on.
 
 Racket has several components. The two most visible components for us are a command-line interpreter named "racket" and a teaching-friendly editor/front-end named "DrRacket". You will probably be working primarily or wholly in the latter.
 <!-- "racket" used to be mzscheme, "DrRacket" used to be DrScheme -->
 
 The current version of Racket is 6.1.1 (released November 2014).
 
-*   In your web browser:
-
-    There is a (slow, bare-bones) version of Scheme available for online use at <http://tryscheme.sourceforge.net/>.
-
 *   **To install in Windows**
 
     Go to <http://racket-lang.org/download/>. Download and install the "Windows x64" version. (Or the "Windows x86" verson if you have an older, 32-bit system.)
@@ -156,14 +151,21 @@ The current version of Racket is 6.1.1 (released November 2014).
 
          sudo port install mzscheme
 
+    <!-- mzscheme v4.1.5, from March 2009; latest mzscheme is 4.2.5, from April 2010 -->
+
     If you want the GUI components, I think you'll need to use the
-    "Mac/without MacPorts" installation options above.
+    "Mac/without MacPorts" installation options above. Or you could try the Chicken Scheme implementation instead of Racket. This is more current.
+    To do that, type:
 
-    I recommend also typing:
+        sudo port install chicken readline
+
+    <!-- chicken v4.8.0.2, from Feb 2013; latest available is 4.9.0.1, from Nov 2014 -->
+
+    Whether you use mzscheme or Chicken, I recommend also typing:
 
         sudo port install rlwrap
 
-    then if you ever use the command-line program `mzscheme` (or `racket`), you should start it by typing `rlwrap mzscheme`. This gives
+    then if you ever use the command-line program `mzscheme` (or `racket`, for that matter), you should start it by typing `rlwrap mzscheme` (or whatever). This gives
     you a nice history of the commands you've already typed, which you can scroll up and down in with your
     keyboard arrows.
 
@@ -183,7 +185,7 @@ The current version of Racket is 6.1.1 (released November 2014).
 
         sudo apt-get rlwrap
 
-    then if you ever use the command-line program `mzscheme` (or `racket`), you should start it by typing `rlwrap mzscheme`. This gives
+    then if you ever use the command-line program `mzscheme` (or `racket`), you should start it by typing `rlwrap mzscheme` (or whatever). This gives
     you a nice history of the commands you've already typed, which you can scroll up and down in with your
     keyboard arrows.
 
@@ -204,12 +206,15 @@ However, if you're not able to get that working, don't worry about it much.
 
 The current version of OCaml is 4.02.1 (released October 2014).
 
-Another instruction page focuses on [OPAM](http://ocaml.org/docs/install.html), also [this](https://opam.ocaml.org).
+*   *Another instruction page focuses on [OPAM](http://ocaml.org/docs/install.html), also [this](https://opam.ocaml.org).*
+
+*   *[More details about installing OCaml on Macs, if needed](http://cocan.org/getting_started_with_ocaml_on_mac_os_x)*
 
 *   In your web browser:
 
     There is a (slow, bare-bones) version of OCaml available for online use at <http://try.ocamlpro.com/>.
 
+
 *   **To install in Windows**
 
     Go to <http://caml.inria.fr/download.en.html>.
@@ -262,8 +267,6 @@ Another instruction page focuses on [OPAM](http://ocaml.org/docs/install.html),
     you a nice history of the commands you've already typed, which you can scroll up and down in with your
     keyboard arrows.
 
-*   [More details about installing OCaml on Macs, if needed](http://cocan.org/getting_started_with_ocaml_on_mac_os_x)
-
 *   **To install on Linux**
 
     Use your packaging system, for example, open a Terminal and
@@ -293,7 +296,7 @@ Another instruction page focuses on [OPAM](http://ocaml.org/docs/install.html),
 
 ## Getting Haskell ##
 
-This last step is less crucial than the others, since we will be focusing
+This last installation is less crucial than the others, since we will be focusing
 primarily on Scheme and OCaml. However we, and the readings you come across,
 will sometimes mention Haskell, so it might be worth your installing this too,
 so that you have it available to play around with.
@@ -311,12 +314,33 @@ other.
 
     There is a (slow, bare-bones) version of Haskell available for online use at <http://tryhaskell.org/>.
 
-sudo apk-get install haskell-platform
+Like Scheme, Haskell has a couple of different implementations. The dominant one, and the one we recommend you install, is called GHC, short for "Glasgow Haskell Compiler". To install this on your machine, there are a couple of different strategies. It's helpful to understand some lingo as you begin this process:
+
+*   As mentioned, **[GHC](https://wiki.haskell.org/GHC)** is the main Haskell engine or compiler you'll be installing. The current version is 7.8.4, from December 2014.
+*   **gcc** and **llvm/clang** and **Xcode** and **MinGW** are names for other compilers on different systems. Oftentimes these will be used during the installation process to get GHC up and running. Some of the strategies described below will help you install these if they're not already on your machine.
+*   **alex** and **happy** and **haddock** are names of various Haskell helper programs that GHC uses to get up and running.
+*   **cabal** is a "package manager" for Haskell. It allows you to install libraries or extensions that other people have built. (Usually those are published at the [Hackage](http://hackage.haskell.org) web site. Some of these are experimental and may not always work; others are quite fundamental and are almost de facto parts of what people expect in a Haskell system.
+*   **[Haskell Platform](https://www.haskell.org/platform)** is a standard bundle that includes a fixed version of GHC, plus fixed versions of some of the most popular libraries or extensions. This is updated once or twice a year. The current version is 2014.2.0.0, from August 2014. It includes GHC version 7.8.3.
+
+The easiest way to get up and running with Haskell/GHC is to install the Haskell Platform. Here's how to do that on Ubuntu or Debian Linux:
+
+*   In a Terminal, type `sudo apk-get install haskell-platform`.
+
+On a Mac without MacPorts:
+
+*   \<Instructions>
+*   <https://github.com/pittsburgh-haskell/haskell-installation>
+
+On a Mac with MacPorts:
+
+*   \<Instructions>
+
+On Windows:
 
-<https://github.com/pittsburgh-haskell/haskell-installation>
+*   \<Instructions>
 
-<https://www.haskell.org/platform>
 
-Getting started: <https://wiki.haskell.org/Haskell_in_5_steps>
 
+*   Getting started: <https://wiki.haskell.org/Haskell_in_5_steps>
+*   <new-www.haskell.org/downloads>