Hacker News new | ask | show | jobs
by CyberFonic 2348 days ago
Depends on what you are implementing and how.

I find Lisp good if you have a rough top-down design and lots of bottom-up implementation details to suss-out. You can test each bit as you build and in passing you might implement a DSL for your domain. There are many compiled Lisps (both CL and Scheme) so performance can be quite good.

Generally, it is hard to deploy Lisp on client systems (if that is a requirement) without introducing many dependencies. Loko Scheme being an exception, since it (like Golang) compiles to a single executable with no dependencies.

GC and VMs are common in many alternative environments so that's not a point of difference.

If you like Lisp and your dev and target environments are suitable and you are a solo developer or have a team of Lispers then why not use it? In most general terms Lisp is no better nor worse than the alternatives.

3 comments

Traditionally Lisp systems are incredibly easy to deploy by saving an image. Images are so different from what is practical in C or Java that I found it hard to wrap my head around. An image is a saved running state. It requires a runtime that allows interacitvity. Smalltalk, Common Lisp, and ML are all examples. Scheme based systems typically don't provide it...but like anything there are exceptions.

Some documentation about images in SBCL: http://www.sbcl.org/manual/#Saving-a-Core-Image

Loko Scheme is certainly not an exception in producing a single executable with no dependencies. All major Common Lisp implementations do this. I shipped a program for Windows quite easily using Clozure Common Lisp ("CCL").
Generally that's true. Loko Scheme is interesting, though - but probably not widely used. Check the documentation.

Probably he meant 'zero' dependencies. Like not depending on C libs. I see that Loko Scheme depends on running on Linux (unclear, which versions) and AMD64 cpu - it seems to be able to run on bare metal, too - but the dependencies on the hardware are unclear. To bootstrap, it might need another Scheme implementation.

Many Lisp systems can generate executables, some of which then may depend on some external libraries (maybe in specific versions), specific OS versions or even specific CPU variants (not unknown on ARM hardware which has a lot of CPU variants).

A language implementation that depends on no C libraries, on a platform whose documented interfaces are C libraries, still has a platform dependency, and that platform dependency is worse.
Clojure does pretty well on clients, ClojureScript for web and single .jar for JVM Clojure.