typo
[lambda.git] / how_to_get_the_programming_languages_running_on_your_computer.mdwn
index 345e6ae..6cbbcb0 100644 (file)
@@ -1 +1,316 @@
-Test
+## 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".)
+
+*    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 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.
+
+
+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.
+
+
+**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!) ##
+
+We haven't tested these instructions ourselves, and they're not explicit
+step-by-step instructions in any case. If you encounter troubles, please email
+to let us know so that we can amend the instructions to help others. If you
+figure out how to fix the problem youself (and please do), please also write
+with suggestions how we can change these instructions to make the process
+easier and more straightforward for others.
+
+
+## Getting Scheme ##
+
+**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 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.
+
+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.)
+
+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 -->
+
+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.)
+
+*   **To install on Mac without MacPorts**
+
+    Go to <http://racket-lang.org/download/>. Download and install the option for your system, most likely "Macintosh
+    OS X (Intel 64-bit)".
+
+*   **To install on Mac with MacPorts**
+
+    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:
+
+         sudo port install mzscheme
+
+    If you want the GUI components, I think you'll need to use the
+    "Mac/without MacPorts" installation options above.
+
+    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 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>
+
+