4 ms·
I've been programming in Common Lisp for about a year and I consider myself an intermediate beginner. Someone made a terrific comment in response to Ron Garret'
by sbt 18y ago
I've been programming in Common Lisp for about a year and I consider myself an intermediate beginner. Someone made a terrific comment in response to Ron Garret's post earlier: the way you get productive in today's environment is primarily through libraries.
Thus the situation is inescapable. You need tons of libraries to be productive. You need tons of programmers to write these libraries. You need an easy learning curve and appealing features to get these programmers. The bottom line is that you need the bad coders as well.
As a beginner, I can safely say that it took a while before I finally got reasonably productive in Lisp. I still consider it 'the best' programming language. But the learning curve is much steeper than Python.
Lisp will get nowhere without all the bad programmers. This may sound cynical, but the reason is that academically minded programmers won't spend time writing things like a download library for youtube videos, which many people find useful. These programmers are now all over Python.
So why is Lisp difficult to learn? The most severe in my opinion is assignment. People find it intuitive to make temporary variables and store intermediate results in these. This is done by 'let' in CL, but if the previous style of programming is assumed, 'let' is clumsy and inconvenient to use.
Another achilles heal I would like to mention is the lack of an editor with propper auto-completion. Yes, slime does this, but using emacs is too geeky for many programmers (remember you need these people) and this creates an additional stumbling block.
Yet another problem is the CL websites. Remember that many people are in a hurry. The Python website is ripe with snippets that lets you do stuff fast without understanding much. In contrst, CL gives you some of the most monotone autogenerated documentation sites I've ever seen. Again, fine for people who already know Lisp, tedious for people that want to try stuff out as beginners.
Faced with these realities I don't blame anyone who just want to get things done and run with Python. Unfortunately.
- jimbokun 18y ago"The most severe in my opinion is assignment." Clojure solves this problem by going all the way to the opposite extreme. "No assignment for you." Clojure data structures are immutable, and if you really want to do assignment, you need to explicitly use a ref/var/atom, which means you are going to figure out a way to write your program without assignment if at all possible. Clojure, of course, is designed around functional programming that has many idioms to make assignment-less programming the natural way to do things. I guess what this means is that Clojure can appeal to Python/Ruby/Perl hackers wanting to learn a different way to think about programming.
- jrockway 18y agoSomeone made a terrific comment in response to Ron Garret's post earlier: the way you get productive in today's environment is primarily through libraries. I think that was me. FWIW, I find CL's libraries to be adequate in many cases, but certainly not as good as Perl's. (I have done a few Java projects, and I don't consider their libraries adequate at all. You are either stuck with full-stack frameworks, or a legacy API from 1995. I've also found that most Java programmers that write libraries don't know what OO is, and that makes the libraries painful to use. YMMV. Slime is also vastly easier to use than Eclipse, even with "emacs emulation" turned on. Again, YMMV. :)
- 10ren 18y agoI don't know the specific Lisp or libraries involved, but reddit (YC funded) famously switched from Lisp to Python, (mainly) due to libraries. http://blog.reddit.com/2005/12/on-lisp.html http://blog.reddit.com/2005/12/on-lisp.html
- 10ren 18y agoyou need the bad coders ... to write these libraries. Great egalitarian point: it's not just karma, but that everyone has a unique point of view, with something to offer. Rejecting some segments of the population as inferior seems destined to fail, similar to (excuse my Godwin) rejecting people like Oppenheimer. And when you "just want to get things done", aren't we all "bad coders"?