2008/9/2 Bradley Lucier <lucier@math.purdue.edu>
I like VI!

So do I! I use a slightly tuned "limp", which is some kind of LISP mode for vim, which I made a bit more Scheme compliant (needs much more work though).

As far as debugging and GUIs are concerned, I think the following:
- since the debugger can be another remote program, writing a GUI for it shouldn't be too hard, should it?
- in case of interpreted code, adding/removing "real" breakpoints on instructions should be possible with a JIT and those (ERROR "debug"), but one has to be careful with the semantics of call/cc when code is dynamically changed... (what if you store a continuation containing a breakpoint, and then remove the break and call the continuation? I would expect the breakpoint not to be executed.)

As of Scheme considered "behind", maybe its main drawback is that "apart from scheme interpreters and compilers, no useful application is ever written"... To have scheme used, perhaps we first should have users run Scheme programs... Ruby took off with RoR, since people willing to have a nice dynamic website (and really easily) had to learn basic Ruby. JS, ActionScript and friends are successful because they are often embedded within webbrowsers. We can easily conclude that the success of a language is not its features only, but rather what's written with it that everyone uses... Write a browser, a video player, or a currency converter that people use, and those who like the app and can program will use the language, first to extend the program, then to write their own programs with it... I believe that "pervasive desktop programs" are the best target for any language to take off... Have it included in gnome and ubuntu and voila, everyone will fight to learn Scheme just like python!

One last thing about debugging, even though much of the syntactic sugar (or macros) of CL can be translated into "pure Lisp", I've heard that actually it can (and will) be implemented directly in the target language or VM for better efficiency. Therefor, it can be really better to use LOOP rather than MAP even on lists for the compilation process may generate observationally equivalent code, but with much more optimisations... (and I also believe that listing such programming habits based on Gambit's compilation process could be useful).

P!

--
Français, English, 日本語, 한국어