typo
[lambda.git] / how_to_get_the_programming_languages_running_on_your_computer.mdwn
index 090c14c..6cbbcb0 100644 (file)
@@ -1,59 +1,93 @@
 ## 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: "Tiger" 10.4, or "Leopard" 10.5, or "Snow Leopard" 10.6. Furthermore,
-you'll be in one of two subgroups:
-
-*      You'll have Apple's Xcode and the independent MacPorts system
-       installed.
-
-       Xcode is available at
-       <http://developer.apple.com/technologies/tools/xcode.html>.
-       You have to register as an Apple Developer to download it. This
-       is free but requires you to accept a legal agreement with Apple.
-       The latest version of Xcode to work with Leopard is 3.14; more
-       recent versions require Snow Leopard.
-
-       The MacPorts system is available at
-       <http://www.macports.org/>.
-       This automates the building of Unix-type software on your Mac; it
-       makes it a lot easier to check for dependencies, use more-recent
-       versions of things, and so on.
-
-*      Or you won't have those installed. (Most Mac users will be in this group.)
-       Then you'll need pre-packaged (and usually pretty GUI) installers for
-       everything. These are great when they're available and kept up-to-date;
-       however those conditions aren't always met.
-       
+running. (Under the Apple Menu, select "About this Mac".)
+
+*    Leopard (10.5)
+*    Snow Leopard (10.6)
+*    Lion (10.7)
+*    Mountain Lion (10.8)
+*    Mavericks (10.9)
+*    Yosemite (10.10)
+
+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
+    makes it a lot easier to check for dependencies, use more-recent
+    versions of things, and so on. (Though as it happens, MacPorts only has an older version of
+    our chosen implementation of Scheme.)
+
+    There are also other package management systems available for the Mac, notably Homebrew and Fink. I only know a little bit about them.
+
+    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 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?
+    -->
+
+*   Or you won't have those installed. (**Most Mac users will be in this group.**)
+    Then you'll need pre-packaged (and usually pretty GUI) installers for
+    everything. These are great when they're available and kept up-to-date;
+    however sometimes those conditions aren't met.
+
+
 
 If you're using **Windows**, you'll be in one of two subgroups:
 
-*      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
-       treatment. However, many of you won't have this 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
+    treatment. However, many of you won't have this installed.
+
+*   You won't have Cygwin installed. (**Most Windows users will be in this group.**)
+    You might in theory have a different group of compilers installed
+    (MinGW, or Microsoft Visual C++) but we'll assume that the overwhelming
+    majority of users in this group don't have access to a compiler and
+    need pre-packaged installers for everything.
 
-*      You won't have Cygwin installed. You might in theory have
-       a different group of compilers installed (Microsoft Visual C++) but
-       we'll assume that the overwhelming majority of users in this group
-       don't have access to a compiler and need pre-packaged installers
-       for everything.
 
 If you're using **Linux**, you could be using any one of numerous packaging
 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
-       2.6.35-ARCH 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 2.6.35.
+*   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.
+
+
+**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 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.
+
+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!) ##
@@ -68,140 +102,215 @@ easier and more straightforward for others.
 
 ## Getting Scheme ##
 
-**Scheme** is one of two major dialects of *Lisp*, which is a large family of
-programming languages. The other dialect is called "CommonLisp." Scheme is the
-more clean and minimalistic dialect, and is what's mostly used in academic
-circles.
-
+**Scheme** is one of two or three major dialects of *Lisp*, which is a large family
+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.
 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 used to be called
-PLT Scheme, and has just in the past few weeks changed their name to Racket.
-This is what we recommend you use. (If you're already using or comfortable with
-another Scheme implementation, though, there's no compelling reason to switch.)
+the operating system differently. One major implementation is called Racket,
+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
+another Scheme implementation, though, there's no compelling reason to switch.
 
-Since the name change is so recent, you're likely to run across both sets of names.
+If for some reason you have problems with Racket, other implementations you could
+try are
+[Chicken](http://www.call-cc.org),
+[Gauche](http://practical-scheme.net/gauche),
+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.)
 
-PLT Scheme had three salient components: the command-line version "mzscheme", a
-GUI extension "MrEd", and a teaching-friendly editor/front-end "DrScheme". In
-Racket these have been renamed "racket", "gracket", and "DrRacket",
-respectively.
+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 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 -->
 
-*      **To install in Windows**
+The current version of Racket is 6.1.1 (released November 2014).
 
-       Go to <http://racket-lang.org/download/>. Download and install the "Windows x86" version.
+*   In your web browser:
 
-*      **To install on Mac without MacPorts**
+    There is a (slow, bare-bones) version of Scheme available for online use at <http://tryscheme.sourceforge.net/>.
 
-       Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
-       OS X (Intel)"
+*   **To install in Windows**
 
-*      **To install on Mac with MacPorts**
+    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.)
 
-       You can install a command-line version of
-       PLT Scheme (dating from early 2009) by opening a Terminal
-       and typing:
+*   **To install on Mac without MacPorts**
 
-                sudo port install mzscheme
+    Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
+    OS X (Intel 64-bit)".
 
-       If you want the GUI components, I think you'll need to use the
-       "Mac/without MacPorts" installation options above.
+*   **To install on Mac with MacPorts**
 
-*      **To install on Linux**
+    Unfortunately, MacPorts doesn't have Racket itself available. It only has an older version from when they still called
+    themselves PLT Scheme. And even then, it only has the command-line program "mzscheme" (what's nowadays called "racket"); it
+    doesn't have the GUI program that corresponds to what's now called "DrRacket". You can install mzscheme by opening a Terminal
+    window and typing:
 
-       Use your packaging system, for example, open a Terminal and
-       type:
+         sudo port install mzscheme
 
-                sudo apt-get install plt-scheme
+    If you want the GUI components, I think you'll need to use the
+    "Mac/without MacPorts" installation options above.
 
-       It's very likely that your packaging system has some version of
-       PLT Scheme available, so look for it. However, if you can't find it you
-       can also install a pre-packaged binary from the Racket website at <http://racket-lang.org/download/>.
-       Choose the option for your version of Linux (Ubuntu, Debian, and two
-       varieties of Fedora are available)
+    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
+    you a nice history of the commands you've already typed, which you can scroll up and down in with your
+    keyboard arrows.
+
+*   **To install on Linux**
+
+    Use your packaging system, for example, open a Terminal and
+    type:
+
+         sudo apt-get install racket
+
+    It's very likely that your packaging system has some version of
+    Racket available, so look for it. However, if you can't find it you
+    can also install a pre-packaged binary from the Racket website at <http://racket-lang.org/download/>.
+    Choose the option for your version of Linux (Ubuntu and Debian are available).
+
+    As above, I recommend you also type:
+
+        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
+    you a nice history of the commands you've already typed, which you can scroll up and down in with your
+    keyboard arrows.
 
 
 ## Getting OCaml ##
 
 **Caml** is one of two major dialects of *ML*, which is another large family of
 programming languages. The other dialect is called "SML" and has several
-implementations. But Caml has only one active implementation, OCaml, developed
-by the INRIA academic group in France.
+implementations. But Caml has only one active implementation, OCaml or
+Objective Caml, developed by the INRIA academic group in France.
+Sometimes we may refer to Caml or ML
+more generally; but you can assume that what we're talking about always works more
+specifically in OCaml.
 
 It's helpful if in addition to OCaml you also install the Findlib add-on.
 This will make it easier to install additional add-ons further down the road.
 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).
+
+*   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>.
+    You can probably download and install the
+    "Self installer for the port based on the MinGW toolchain"
+    even if you don't know what MinGW or Cygwin are.
+    Some features of this require Cygwin, but it looks like
+    it should mostly work even for users without Cygwin.
+    At the time of this writing, only an installer for the previous
+    version of OCaml (3.11.0, from January 2010) is available.
+
+    To install the Findlib add-on, you must have the
+    Cygwin system installed. We assume few of you do,
+    so we're not going to try to explain how to do this.
+    If you want to figure it out yourself, go to the
+    Findlib website at <http://projects.camlcity.org/projects/findlib.html>.
+
+*   **To install on Mac without MacPorts**
+
+    To install OCaml 3.12 (just released this summer), go to
+    <http://caml.inria.fr/download.en.html>
+    and download and install the "Binary distribution for Mac OS X"
+
+    To install the Findlib add-on, you'll need the Xcode development tools
+    to compile it yourself. Once you get that far, it's probably easiest
+    for you to install MacPorts and just install things using the MacPorts
+    instructions. (Use the MacPorts version of OCaml, instead of installing
+    the package from the caml.inria.fr website, as described above)
+    However, if you do have Xcode, and want to do without MacPorts, then
+    what you need to do is download Findlib from
+    <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
+    Unpack the download, open a Terminal and go into the folder you just
+    unpacked, and type:
+
+        ./configure
+        make package-macosx
+
+    This will build an installer package which you should be able to
+    double-click and install.
+
+*   **To install on Mac with MacPorts**
+
+    You can install the previous version of OCaml (3.11.2,
+    from January 2010), together with the Findlib add-on, by opening a Terminal
+    and typing:
+
+        sudo port install ocaml caml-findlib
+
+    As with Scheme, it's helpful to also have rlwrap installed, and to start OCaml as `rlwrap ocaml`. 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.
+
+*   [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
+    type:
+
+        sudo apt-get install ocaml ocaml-findlib
+
+    That will install a version of OCaml and the Findlib add-on.
+
+    If for some reason you can't get OCaml through your
+    packaging system, you can go to
+    <http://caml.inria.fr/download.en.html>.
+    Pre-packaged binary installers are available for several Linux systems.
+
+    If you can't get findlib through your packaging system, you'll
+    need to download it from
+    <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
+    and use gcc to compile it yourself. If you don't know how to
+    do that, you probably don't want to attempt this.
+    Here are the INSTALL notes:
+    <https://godirepo.camlcity.org/svn/lib-findlib/trunk/INSTALL>.
+
+    As with Scheme, it's helpful to also have rlwrap installed, and to start OCaml as `rlwrap ocaml`. 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.
+
+
+## Getting Haskell ##
+
+This last step 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.
+
+Haskell is used a lot in the academic contexts we'll be working through. At one point, Scheme
+dominated these discussions but now Haskell seems to do that.
+
+Haskell's surface syntax differs from Caml, and there are various important things one can do in
+each of Haskell and Caml that one can't (or can't as easily) do in the
+other. But these languages also have *a lot* in common, and if you're
+familiar with one of them, it's generally not hard to move between it and the
+other.
+
+*   In your web browser:
+
+    There is a (slow, bare-bones) version of Haskell available for online use at <http://tryhaskell.org/>.
+
+sudo apk-get install haskell-platform
+
+<https://github.com/pittsburgh-haskell/haskell-installation>
+
+<https://www.haskell.org/platform>
+
+Getting started: <https://wiki.haskell.org/Haskell_in_5_steps>
 
-*      **To install in Windows**
-
-       Go to <http://caml.inria.fr/download.en.html>.
-       You can probably download and install the
-       "Self installer for the port based on the MinGW toolchain"
-       even if you don't know what MinGW or Cygwin are.
-       Some features of this require Cygwin, but it looks like
-       it should mostly work even for users without Cygwin.
-       At the time of this writing, only an installer for the previous
-       version of OCaml (3.11.0, from January 2010) is available.
-
-       To install the Findlib add-on, you must have the
-       Cygwin system installed. We assume few of you do,
-       so we're not going to try to explain how to do this.
-       If you want to figure it out yourself, go to the
-       Findlib website at <http://projects.camlcity.org/projects/findlib.html>.
-
-*      **To install on Mac without MacPorts**
-
-       To install OCaml 3.12 (just released this summer), go to
-       <http://caml.inria.fr/download.en.html>
-       and download and install the "Binary distribution for Mac OS X"
-
-       To install the Findlib add-on, you'll need the Xcode development tools
-       to compile it yourself. Once you get that far, it's probably easiest
-       for you to install MacPorts and just install things using the MacPorts
-       instructions. (Use the MacPorts version of OCaml, instead of installing
-       the package from the caml.inria.fr website, as described above)
-       However, if you do have Xcode, and want to do without MacPorts, then
-       what you need to do is download Findlib from
-       <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
-       Unpack the download, open a Terminal and go into the folder you just
-       unpacked, and type:
-
-               ./configure
-               make package-macosx
-
-       This will build an installer package which you should be able to
-       double-click and install.
-                       
-*      **To install on Mac with MacPorts**
-
-       You can install the previous version of OCaml (3.11.2,
-       from January 2010), together with the Findlib add-on, by opening a Terminal
-       and typing:
-
-               sudo port install ocaml caml-findlib
-
-*      **To install on Linux**
-
-       Use your packaging system, for example, open a Terminal and
-       type:
-
-               sudo apt-get install ocaml ocaml-findlib
-
-       That will install a version of OCaml (probably 3.11.2, from January 2010)
-       and the Findlib add-on.
-
-       If for some reason you can't get OCaml through your
-       packaging system, you can go to
-       <http://caml.inria.fr/download.en.html>.
-       Pre-packaged binary installers are available for several Linux systems.
-
-       If you can't get findlib through your packaging system, you'll
-       need to download it from
-       <http://download.camlcity.org/download/findlib-1.2.6.tar.gz>.
-       and use gcc to compile it yourself. If you don't know how to
-       do that, you probably don't want to attempt this.
-       Here are the INSTALL notes:
-       <https://godirepo.camlcity.org/svn/lib-findlib/trunk/INSTALL>.