I’ve been using Scheme for going on 25 years. Really.
While I’ve always had a soft spot for the Lisp with “an exceptionally clear and simple semantics and few different ways to form expressions,” I had a big complaint once I tried to use it outside the classroom. Call it “no batteries included”. At least throughout most of the 90’s, many Scheme implementations didn’t come with enough libraries to usefully interface to the rest of the real world. You always had to build up a lot of stuff from first principles, or try to leverage some library off the net with ill-defined provenance.
Meanwhile, you could get rolling with Perl, Python, and Tcl right out of the box. And yes I know all the reasons this was, and the pros and cons.
While Scheme will probably always be a niche language, times have changed on the “batteries included” front. To wit JazzScheme:
JazzScheme is a development system based on extending the Scheme programming language and the Gambit system. It includes a module system, hygienic macros, object-oriented programming, a full featured cross-platform application framework, a sophisticated programmable IDE and a build system that creates binaries for Mac OS X, Windows and Linux. JazzScheme has been used for more than 10 years to develop high-quality commercial software.
I also remember having an entertaining dinner in Chicago with Matthias Felleisen, the godfather of PLT Scheme, soon to be PLT Racket.
PLT Scheme is an innovative programming language that builds on a rich academic and practical tradition. It is suitable for implementation tasks ranging from scripting to application development, including GUIs, web services, etc. It includes the DrScheme programming environment, a virtual machine with a just-in-time compiler, tools for creating stand-alone executables, the PLT Scheme web server, extensive libraries, documentation for both beginners and experts, and more.
I’m pretty happy with Python these days, but if I was suddenly banned from using that language, I’d happily migrate back to Scheme.