Why Scheme for Introductory Programming?
Questions and Answers
Testimonials
Articles
- A Scheme Story, an
article by student Natasha Chen
on her experiences (from 6th through 12th grades)
in BASIC, Pascal, Logo, and Scheme.
Note that the languages in which she was so
frustrated by memorizing syntax -- BASIC and Pascal -- have far less
syntax to memorize than the currently popular Java and C++.
- Scheme and
Java in the First Year, a paper published in the Journal of
Computing in Small Colleges, May 2000.
- Lisp
as an Alternative to Java, an article comparing the performance of
the same programs written in C++, Java, and Lisp or Scheme. In brief,
it concludes that the Lisp/Scheme programs ran about as fast as C++
programs, significantly faster than Java programs, and that they were
developed far faster than either C++ or Java programs.
- Two
talks presented by TeachScheme! team members at regional educators'
conferences
- Teach Yourself
Programming in Ten Years, an article about what it really
takes to learn to program. Not specific to Scheme, but discusses what
different kinds of languages to learn, and why, and in what order.
Scheme in the Real World
Who uses Scheme or Lisp in the real world? Actually,
quite a lot of people.
- Derivatives trading firm Jane
Street Capital does most of its work in the functional programming
language OCaml, and specifies "experience with functional
programming languages (OCaml, SML, Scheme, Haskell, Lisp, F#, Erlang,
etc)" in its hiring. See their
presentation about how and why they switched to functional programming.
- Beating the
Averages describes the development of Yahoo!
Store, a Web-based application for building e-commerce
sites, and how doing it in Lisp allowed him to add new
features faster than his competitors could. See
also Lisp
in Web-based Applications, from a talk by Paul Graham about the same
software.
- Extremely
Successful Software, a similar "success story" article about using
Pair Programming, a lean and customer-responsive management style, and
Lisp to develop software.
- Graham also has an article about why Orbitz and other
travel sites are written largely in Lisp
- Continue is a
commercial Web application for managing academic conferences
and workshops, written entirely in Scheme.
- Margrave
is a security policy analyzer written in Scheme.
- Abstrax provides software
for "build to order" manufacturing plants, writing most of
the software in Scheme.
- NASA uses software written in Lisp to control
autonomous spacecraft and manage
mission plans for Mars landers.
- I'm told that Disney controls virtual rides,
the Air Force controls telescope batteries, the Navy runs its
weather service for carrier-borne jet fighters, Motorola runs its
ordering system for packaging hardware, a number of Russian banks control their Web-based account
access,
and Pixar Animation does a lot of its
animation, using software written in Scheme or Lisp. I don't have
details on these projects.
- Kathi Fisler's
list of articles about real-world uses.
However, industrial uses of Scheme are sorta beside the point. If
you're teaching students who need to get programming jobs next month,
you teach them whatever is currently "hot" in industry. If
you're teaching students who need to become good programmers, you teach
them whatever will allow you to best teach the habits and principles of
good programming -- which is not necessarily the same thing!
Or as Prabhakar Ragde puts it,
Ever visit a gym? You were wasting your time. I've never seen a
Nautilus machine or a treadmill outside a gym. Barbells -- repeatedly
lifting two balanced weights connected by a narrower piece of metal --
completely contrived and artificial...
At the high end, Scheme has long had a number of features that other
languages have only recently added, e.g. lexical closures (as in Python,
Ruby, C#, and Perl 5) and continuations (as in Ruby).
To find other schools and teachers who use this approach, try
a
Google search for htdp.org or
a
Google search for drscheme.org.
Last modified:
Sunday, 27-Jan-2008 19:51:52 EST
Stephen Bloch / sbloch@adelphi.edu