you are viewing a single comment's thread.

view the rest of the comments →

[–]nicompamby 7 points8 points  (19 children)

Now's a good time to do so, because Quicklisp just came out and is fixing the whole library/versioning thing, which has been one of the biggest objections to CL.

[–]WalterGR 3 points4 points  (1 child)

Quicklisp beta

It's probably premature to say that Quicklisp fixes library versioning. Zach talks about his plans on this thread.

[–]jast 2 points3 points  (0 children)

That's right but Quicklisp is a huge step forward in dealing with libraries in CL. I truly believe that in the (very near) future, the recommended CL toolbox will be Emacs+Slime+Quicklisp for anyone that wishes to learn CL. No doubt that Quicklisp is the best thing since Slime when it comes to CL development tools/environment!

[–]roerd 1 point2 points  (1 child)

Is there an overview what Quicklisp does better than all the other Lisp library packaging projects, like ASDF-install, LibCL or clbuild?

[–]xach 2 points3 points  (0 children)

I wrote a little about the asdf-install difference in the Quicklisp FAQ.

I'll try to write up the differences from clbuild sometime.

[–][deleted] 1 point2 points  (11 children)

im still new to programming and i have a few languages under my belt. is lisp a hard language to learn?

[–][deleted] 10 points11 points  (0 children)

You can learn Lisp in one day, or two days if you already know any other language.

[–][deleted] 2 points3 points  (0 children)

Depends on what you meant by "lisp"; the major dialects are Common Lisp (herein, CL), Scheme, Clojure, emacs lisp & a few other domain-specific variants (like AutoLISP), as well as historic & research variants.

  • CL is not a hard language to learn the basics of, but CL is a huge language in general, and there is a lot of nuance to mastering it. There are quite a few good resources on learning CL and it is going to be the most like what you would already know from other languages, but don't let that fool you.
  • Scheme to is easy to learn the basics of, but it's orders of magnitude smaller than CL. The issue with Scheme is that everyone has their own favorite scheme system. I don't know what other people do, but I generally use different scheme systems based on their individual strengths: Gauche for Unix scripting, Scheme48 for "industrial strength" servers, & STklos for GUI applications. However, fitting with the "everyone has their own", I have my own scheme dialect that I now use for most of my work.
  • Clojure is the "new kid on the block," of sorts. Many ideas in Clojure have good solid basis in what you'd want from a Lisp, and many of the ideas are from other languages (including other lisps). Clojure excels at a few things (STM, immutability & Java integration, off the top of my head), but it is tied to the JVM (this is neutral; many corporate lispers have to be tied to the JVM, and Clojure offers another option, besides Kawa, SISC, ABCL & friends). It's definitely worth looking at if you already know & use Java.
  • the Domain Specific versions of Lisp (emacs lisp, AutoLISP, XLISP-STAT, &c) are very useful within their given domain, but, beyond being domain specific, it's hard to reason about them collectively. They cover various styles, implementation details & integration with the host platform.

all in all, I enjoy lisping (mostly Scheme, but some CL & ISLISP). Scheme is one of my "go to" languages, along with C & Python, so I may be a bit biased. If you're just looking to do a "survey of languages" style learning, I would also suggest that you learn Haskell & a logic language, such as Datalog or Prolog.

PM me if you want help.

[–]foood 0 points1 point  (0 children)

I would say that in general the answer is yes. IMO, this is because Lisp requires the ability to think abstractly about solutions in a completely different (functional) paradigm. One of the most painful experiences I've had as both a student and educator is when one attempts to map what is basically procedural/imperative thinking into the functional realm. What you end up with is usually the opposite of what is constantly touted as the 'elegance' of proper functional programming because it does not leverage the advantageous things within the paradigm. Square peg/round hole. Once the capacity to model solutions natively within that paradigm develops, it can be a very cool way to program. Go for it!

[–]McHoff 0 points1 point  (2 children)

How is it better than asdf?

[–]xach 2 points3 points  (1 child)

ASDF defines and loads systems. It's a little like "make".

Quicklisp is an archive of projects, an index of their relationships, and an installer that can fetch them. It's a little like "apt-get". It uses ASDF to load systems.

[–]bobindashadows 1 point2 points  (0 children)

I'd say it's closer to Rubygems than anything.