[plt-scheme] A Couple of Questions on DrScheme/Mzscheme

From: Neil W. Van Dyke (neil at neilvandyke.org)
Date: Wed Sep 25 22:54:28 EDT 2002

Jeff Stephens <jsteve17 at tampabay.rr.com> writes at 20:19 25-Sep-2002 -0400:
> As far as I can tell, Scheme isn't used much outside the academic
> community.  This despite the fact that it appears to be the introductory
> language for the two premier science and engineering colleges in the
> country, i.e. MIT and Cal Tech.  One would think that if the kind of
> student they have enrolled at these two institutions felt that Scheme
> was a useful language, it would be in wider use.

The PLT people have certainly done a lot of thinking about this, but
here's some non-expert comments from one MIT perspective...

A few years ago, I was trying to hire MIT students as undergraduate
research assistants, and I asked one undergrad why it seemed that most
all MIT students wanted to code in Java and have nothing to do with
Scheme after they passed 6.001 (the SICP course).

He felt that students were turned off by a combination of the tools and
the nature of the assignments.  The default Scheme implementation, he
claimed was painfully slow.  He said he ended up doing his assignments
using the Guile interpreter, which he called "scarily fast" by
comparison.  (I don't want to disparage the Scheme implementation used
for the course; I haven't used it myself, and perhaps it was not set up
well for the students, or was running on old computers.)

He also said something about students associating Scheme with unpleasant
problem sets in what is understandably a challenging first-year course.
Some time later, when I asked him why MIT Scheme says "Happy Happy Joy
Joy" when you exit, he said that was because exiting meant that your
problem sets were done.

      1 ]=> (exit)

      Kill Scheme (y or n)? Yes
      Happy Happy Joy Joy.

I don't think this fully explains the relative attraction of Java,
though I can certainly imagine a student passing 6.001 and then choosing
to use Java for projects in their next class.  A few ideas why...

  * With its more "modern" libraries and frameworks, tools like GUI
    dialog painters, and convenient static checking features, Java
    probably seemed more accessible and gratifying than Scheme.  I think
    PLT and some other Scheme developers have done some good work lately
    in making Scheme more attractive.  (The main thing I still want is
    GTK bindings for MzScheme, for making really slick GUI apps...)

  * Perhaps if the students had more time to learn to wield Lisp
    strengths like metaprogramming, and their successive coursework had
    made Lisp strengths a big win, more students would choose to use
    Scheme instead of Java.  To a Lisp beginner, Java the language
    probably seems just as powerful and convenient.

  * During the dotcom anomaly, there was also the employability factor
    in Java's favor.  Students were getting stock options in summer
    internships, and jumping immediately to six-figure jobs or founder's
    stock upon graduation -- and industry seemed to want a lot of people
    who knew Java.  Now that that industry temptation craze is over,
    speaking as a former (pre-dotcoms) software engineer, it's my
    opinion that students don't need to spend more than two semesters
    with the industry's current most popular programming language to
    maximize their first-job employability.  A solid grounding in CS and
    software engineering, is generally much more useful to a student who
    wants to become a first-class professional developer, and the IT
    language-of-the-week is generally not the best tool for that.

Those are some ideas on why students have been favoring Java over Scheme
in recent years.  I'll emphasize that I'm in favor of using Scheme as
the main educational and research language, over Java, Python, Perl, and
C#.  I think that the objections to Scheme can probably be addressed to
the extent that students choose to spend enough time in Scheme that they
become skilled enough with it to see the real programming benefits.
And, as we all know, more Scheme programmers means more libraries and
tools, which means more Scheme programmers...

                                                        Neil W. Van Dyke

Posted on the users mailing list.