There's an online article where Richard Stallman debates briefly Perl vs. Scheme. See http://www.linuxcare.com/viewpoints/os-interviews/12-14-99.epl My little progress report certainly sparked some interesting stuff, although I probably will postpone studying it. It's sort of hard to tell how many of the concepts Jon mentions are covered by SICP. But, as Jon told me at a recent meeting, and as many other people say, this book is worth studying. So, in a way, reading SICP has developed a life of it's own that is distinct from from learning about Scheme and distinct from the problem of learning the Gnu-recommended way of developing programs with Guile and C. My principle goal, however, is the latter: understanding the Gnu way of using Scheme with C. The idea is that the Taos group might eventually want to get involved in a Gnu-style development project as a public service. (There are also other ideas for future projects for the Taos group.) I assume the Gnu people are practical, even Stallman himself. If they weren't they couldn't have developed Emacs, GCC, the GIMP, LilyPond, Gnucash, etc., and distribute and maintain them worldwide. Still, if tomorrow I got a big contract, I'd probably have to bet on PHP or JavaScript or Java or C++ or Perl--maybe Python--not Scheme/Lisp and C. Maybe after some more study of Scheme, however, I'll change my mind. The question I have about Scheme is whether the advanced concepts (first class functions, continuations, lazy evaluation, etc.) end up being useful in a real development project. I mean a situation where, for example, nine months into a six-month project the management decides to change the specs. This isn't going to involve textbook examples, but many thousands of lines of code. Is C/Scheme going to give you any advantage over Perl or Java or whatever? And, even if the advanced concepts would be good to know, is the effort to make learn them going to be a worthwhile investment? For example, I am currently clueless about any practical value in something like "applicative order Y combinator" that is discussed at some length in "The Little Schemer". I guess my question is where did the ideas for some of the advanced concepts come from. From practical necessity, or from theoretical considerations? Academic politics? Some other reasons? I'm curious enough now to proceed with SICP whether or not it has any practical value. But I don't want to make the mistake of jumping into a practical project using impractical tools, regardless of what Stallman and the Gnu group recommend.