This is a new site that looks friendlier and prettier, more like the sites for newer, hipper languages. Looks to be a nice advocacy site and portal to info and resources.
… and a powerful debugger lets you inspect trees of live values, or rewind the stack to undo an exception.
Really? How? I’ve been using slime for about two years, and I’ve never seen those features.
powerful debugger lets you inspect trees of live values
Go to the frame, press <enter> to get a list of local variables. Then go to the value (the thing after the <name> =) and press I for inspect. You’ll get an inspector to that value.
Can’t help but notice that most of those success stories are 10-15 years old.
I feel like what I want to know most is not being addressed: why, in 2016, would I choose Common Lisp over anything else? In contrast to 2000, most or all of what made Lisp special is available in many other languages today – homoiconicity (Clojure, LFE, Elixir), a strong object system (Scala, Ruby, Perl), native compilation (Go, Rust), etc.
You listed 8 different languages. Part of the appeal of Common Lisp is that it has the advantages of all of those languages in one.
Last time I checked, ITA (bought by google), Grammarly and SISCOG are in business today and use CL today.
[Comment removed by author]
If “what technology startups are picking” is our barometer than we’re never going to escape the pop culture. The options afforded to greenfield development aside, startups are not exactly incentivized to make good engineering decisions.
I’ll add that OCaml is a language under active development. That fact shocked me!
Can the lisp community mold itself into something that appeals to outsiders in today’s world? I think it can, but it hasn’t yet.
Right, “most” is a word that leaves room for a few counterexamples.
Even so, two of the three companies you mention wrote the bulk of their Lisp code prior to ten years ago. I also hear from people inside Google that most of the ITA Lisp code has been rewritten at this point.
My question remains: why use Lisp now?
The examples I picked are the ones highlighted in the main page, not ones I cherry picked. I’ve taken the time to count them all. Of the 15 examples, 7 are current and 8 are old. The author has gone out of its way to not only list use cases from the ‘glory days’ of CL. Given that people mostly write in what they are familiar (the reason why C#’s GC was written in CL and then mechanically transformed, the author already knew CL) and that the Lisp community is small, it seems to me that the author done a fair job in listing current success stories of Lisp.
I don’t know people inside google, but given the fact that people at google are still contributing to SBCL features from their own fork, like the fast-interpreter ~5 months ago, or build their lisp code with Bazel, there is still lisp code there, don’t know how much.
Common Lisp provides all of the above, for one thing. :-) So you don’t have sacrifice X for Y and struggle with the tradeoffs.
What Common Lisp provides, specifically, that the above struggle to, is a fully integrated system of interactive development in the tradition of Smalltalk. I’m tempted to believe that Erlang might provide such a thing as well, but I regret to say that I don’t understand it well enough.
Simply put: if you want to invest in Common Lisp for your company and deploy it everywhere, it will take you through the entire modern stack of development without having to port functionality into new languages. You can build a company on it and deliver products with it, for platform after platform, product after product. I think out of all the other existing languages, only C provides the same level of cross-platform capability, and at a profoundly lower level of capability.
What Common Lisp does not provide, however, is strong compile-time type checks: for that, Rust and Scala (from the above list) stand out. Libraries can be an issue, if you have some genuinely complicated problems that you don’t care to address in-house.
What Common Lisp does not offer, further, is the “whipitupitude” that Perl & Perl’s children so prize. It and its community have valued studied and thought out solutions to problems over quick hacks. This has made it less than perfectly popular in the 2008+ Zeitgeist.
If I wanted to get back into writing CL, what compiler would one use (OS X)? I had a license ages ago for Allegro, but am more interested in SLIME + ??? these days.
Either CCL or SBCL. CCL will have more OSX-y integrations; SBCL is tuned finely for Linux and works well on OSX; SBCL is, AFAIK, what 80% of people in the open source community use, however.
I’d suggest seeing what your Allegro license will get you today. It’s the case that SLIME pretty much integrates with everything out there AFAIK.
The purpose of this page is to sell you on CL. To do an honest comparison between other languages would take a considerable amount of effort, outside the scope of this project. That is why most of the ‘comparisons’ are mostly fluff, touching syntax and using weasel words/marketing slogans like ‘pythonic’. The goal of the page seems to be to sell you on CL and to provide clear, easy to follow instructions to set up your own CL development environment.
Some further comments:
native compilation (Go, Rust), etc.
that is a property of an implementation not of a language
a strong object system (Scala, Ruby, Perl)
What does strong mean in this context? Seems like a weasel word to me. I know Perl has a MOP but not much about it. Ruby does have hooks like to respond_to_missing? but afaik (I may be wrong) slots/attributes are not instances of classes themselves, and so the programmer is not able to extend and modify their behaviour.
I don’t know much about Clojure, but someone who does and thinks CL is better designed
More importantly, a PL is more than a collection of features. It is also important how the features play of each other. Now, by no means is CL perfect. I think the MOP could be further improved. For example Pascal Costanza has written about the woes of make-method-lambda. But it does have a lot to offer even 20 years into the future.
Everything you can refer to in ruby is an instance of class (including Class, Object etc). Methods are definitely instances.
Clojure and cljs are very appealing to me for new projects
Interesting, I look forward to seeing how this plays out.
N.b.: if you want to do any sort of general purpose development in a dynamically typed language, Common Lisp is still the premier tool. This is particularly true if you’re doing interesting software development as opposed to gluing libraries together.
This reminds me, I need to see if I can revive clisp. I mostly want to do this for the sake of Land Of Lisp, which I found to be a very fun book.
The only code that is implementation dependent in that book is the sockets parts, it may be easier to put up code for running under SBCL. The only loss is that only CLISP is not horrible to use from the CLI of all the implementations if know of.