What tools do you use for commercial development in the Scheme language?
August 20, 2007 4:08 PM Subscribe
What tools do you use for commercial development in the Scheme language?
I’d like to be able to develop quality, worthwhile software in Scheme. There are so many different implementations, and I don’t know how to pick one. From what I’ve seen, they all seem to have different module and OOP implementations, and varying support for R5RS. I don’t necessarily want a monolithic framework or IDE. I would like for my code to be portable, so that I can develop on a Mac laptop and deploy on a Linux server. Oh yeah, did I mention I want to talk to clients and other servers on the WWW? The tools would ideally be open source, of course.
What is your preferred implementation, and why? What modules do you use for network communication? What's the best source for off-the-shelf, open source, third-party libraries?
I’d like to be able to develop quality, worthwhile software in Scheme. There are so many different implementations, and I don’t know how to pick one. From what I’ve seen, they all seem to have different module and OOP implementations, and varying support for R5RS. I don’t necessarily want a monolithic framework or IDE. I would like for my code to be portable, so that I can develop on a Mac laptop and deploy on a Linux server. Oh yeah, did I mention I want to talk to clients and other servers on the WWW? The tools would ideally be open source, of course.
What is your preferred implementation, and why? What modules do you use for network communication? What's the best source for off-the-shelf, open source, third-party libraries?
i do not do commercial scheme development, but since starting with scheme a short time ago i have been shocked/depressed at how fragmented and non-interoperable the scheme communities are. imho you need to go with the biggest implementation you can find. i think that will probably be one of drscheme (aka plt/mzscheme), bigloo, chicken or, perhaps chez scheme. but i am not sure any will be as good as you expect.
one alternative is to use something like kawa and fall back on java libraries. that may be the best practical solution if you're an old java hand.
on preview: i use gambit with snow. the support is very good, termite (erlang in scheme...) is cool, and it's a fast implementation, but it does not get anywhere near your requirements.
posted by andrew cooke at 5:27 PM on August 20, 2007
one alternative is to use something like kawa and fall back on java libraries. that may be the best practical solution if you're an old java hand.
on preview: i use gambit with snow. the support is very good, termite (erlang in scheme...) is cool, and it's a fast implementation, but it does not get anywhere near your requirements.
posted by andrew cooke at 5:27 PM on August 20, 2007
oh, sorry, i thought you wanted oo, modules and ide. reading again, you don't seem to actually require much except tcp sockets, so perhaps gambit is ok.
posted by andrew cooke at 5:30 PM on August 20, 2007
posted by andrew cooke at 5:30 PM on August 20, 2007
Up front, I love Scheme. I've done a ton of work extending and embetting PLT Scheme, and I recommend it. PLT's got what poster wants.
andrew cooke notes the fragmentation of the scheme community. This is really true, and I think it's clear why. One of the first things a Scheme student is taught about the language is how to implement it. One of the wonders of Scheme is the brevity of a basic metacircular interpreter. Scheme interpreters are easy to implement in most any language. Combine this with the general not-invented-here attitude of most programmers, and the outcome is a proliferation of Scheme implementations. If for some reason a programmer is fed up with all implementations, there's a good chance he can be productive solely on his own. No other language is like that.
That's a tiny derail, but there's already been a best answer marked, so hey.
posted by rlk at 8:44 PM on August 20, 2007
andrew cooke notes the fragmentation of the scheme community. This is really true, and I think it's clear why. One of the first things a Scheme student is taught about the language is how to implement it. One of the wonders of Scheme is the brevity of a basic metacircular interpreter. Scheme interpreters are easy to implement in most any language. Combine this with the general not-invented-here attitude of most programmers, and the outcome is a proliferation of Scheme implementations. If for some reason a programmer is fed up with all implementations, there's a good chance he can be productive solely on his own. No other language is like that.
That's a tiny derail, but there's already been a best answer marked, so hey.
posted by rlk at 8:44 PM on August 20, 2007
Hopping on this bus: is there a non-commercial Scheme interpreter that won't make me learn Emacs-like key combos? Like, up-arrow rather that meta-p for "redisplay last input line"?
posted by orthogonality at 10:51 PM on August 20, 2007
posted by orthogonality at 10:51 PM on August 20, 2007
i just tried with gsi (gambit's interpreter) and up-arrow does what you'd expect. but then it does in emacs too...
posted by andrew cooke at 3:56 AM on August 21, 2007
posted by andrew cooke at 3:56 AM on August 21, 2007
This thread is closed to new comments.
As for libraries, PLT Scheme (with PLaneT) is probably your best bet. Another choice is Chicken's Eggs. Both of those have libraries that are specific to a particular implementation. There are also two (much younger) efforts at making cross-implementation-compatible sets of libraries: Snow, run by the Gambit people, and ScmPkg, run by the Bigloo guys.
PLT also comes with good tool support and documentation, and it's got a list of cool features as long as your arm. Its major shortcoming with respect to the others on the list is that it's probably the slowest. It's quite a bit faster than it once was, though, and it's easily fast enough for many commercial purposes. I have done commercial web development in PLT Scheme, as have these guys, who wrote an experience report you ought to read. I should also say that I'm one of the developers of PLT Scheme (in particular of PLaneT), so I'm clearly biased :).
posted by jacobm at 4:58 PM on August 20, 2007