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
http://www.neilvandyke.org/