X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=how_to_get_the_programming_languages_running_on_your_computer.mdwn;h=add8e271327f8619beefed01588a77127c4daae9;hp=eb27a7f4063b23fe86f8512869faac64bb63ad4f;hb=0fe3f133e39fac5cc2a6dc10784a8313cbd63092;hpb=eb36d396cfaa2d04857a0e1b5ad815a90cb9fa68 diff --git a/how_to_get_the_programming_languages_running_on_your_computer.mdwn b/how_to_get_the_programming_languages_running_on_your_computer.mdwn index eb27a7f4..add8e271 100644 --- a/how_to_get_the_programming_languages_running_on_your_computer.mdwn +++ b/how_to_get_the_programming_languages_running_on_your_computer.mdwn @@ -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 - - 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 - - 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 . + 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. + + +* 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 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 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,223 @@ 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. + +* In your web browser: + + There is a (slow, bare-bones) version of Scheme available for online use at . 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. + +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 (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. + + +The current version of Racket is 6.1.1 (released November 2014). + +* **To install in Windows** + + Go to . 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** -Since the name change is so recent, you're likely to run across both sets of names. + Go to . Download and install the option for your system, most likely "Macintosh + OS X (Intel 64-bit)". -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. +* **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: -* **To install in Windows** + sudo port install mzscheme - Go to . Download and install the "Windows x86" version. + -* **To install on Mac without MacPorts** + If you want the GUI components, I think you'll need to use the + "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: - Go to . Download and install the option for your system, most likely "Macintosh - OS X (Intel)" + sudo port install chicken readline -* **To install on Mac with MacPorts** + - You can install a command-line version of - PLT Scheme (dating from early 2009) by opening a Terminal - and typing: + Whether you use mzscheme or Chicken, I recommend also typing: - sudo port install mzscheme + sudo port install rlwrap - If you want the GUI components, I think you'll need to use the - "Mac/without MacPorts" installation options above. + 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. -* **To install on Linux** +* **To install on Linux** - Use your packaging system, for example, open a Terminal and - type: + Use your packaging system, for example, open a Terminal and + type: - sudo apt-get install plt-scheme + sudo apt-get install racket - 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: - Choose the option for your version of Linux (Ubuntu, Debian, and two - varieties of Fedora are available) + 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 . + 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` (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. ## 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 . + +* **To install in Windows** + + Go to . + 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 . + +* **To install on Mac without MacPorts** + + To install OCaml 3.12 (just released this summer), go to + + 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 + . + 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 + . + 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 + . + 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: + . + + 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 . + +sudo apk-get install haskell-platform + + + + + +Getting started: -* **To install in Windows** - - Go to . - 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: . - -* **To install on Mac without MacPorts** - - To install OCaml 3.12 (just released the summer), go to: - - 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: - - 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: - - 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: - - 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: -