* you don't need to read AMOP to use CLOS. It's there if you want to know 'MORE'. Much more. Much more than you ever wanted to know about reflective OOP. Alan Kay of Smalltalk fame recommended the book as the best book on objected-oriented technology in a decade. ordering it over your book store is easy. But I don't recommend it to anyone wanting to learn Lisp. Read it if you want to know how CLOS is implemented or extended. A bonus point: it shows excellent coding style.
* 'Yet none of the links discuss this directly or provide tutorials.' The LispWorks, SBCL, Clozure CL manuals discuss that. Since there is so much stuff to link to, I recommend to go fully old-school and read the fine manual.
* as the starting book most will point you to Practical Common Lisp by Peter Seibel. Free online and available printed. It even explains a lot of CLOS.
* 'The author goes on to recommend LispWorks as a platform.' I do that too. Not the free version. The full commercial version. I even have the full 64bit 'Enterprise' version of LispWorks on my Mac.
* Web 1.0: Even worse, a comic book about Lisp programming using Common Lisp. http://landoflisp.com
* '$4500 a seat [and calling it Enterprise Edition] is only going to hit some [potentially profitable] edge cases.' - well you may want to compare what a commercial Smalltalk, Ada or Prolog system costs... The market is small and lowering the cost would help letting the company survive. Something must be working for them: LispWorks was first released 25 years ago.
* 'Everything else screams "This ain't for you" at most people.' - well, Common Lisp is not for most people. For most people there are many simpler options. For those wanting to work on fancy Web X.0 stuff in an easy way, there are better options - and that's totally okay.
Common Lisp is not for most people.
For those who want to use Common Lisp as free and no-cost software, the article mentions 'Clozure Common Lisp' and 'SBCL'. I'd say that's excellent choices. I use those, too. Still I prefer the commercial and expensive LispWorks...
Don't get me wrong, 4500 bucks is probably a bargin. But again the landscape is dominated by FOSS. More to my point the points of comparison are pre-www. Ada, Smalltalk, and Prolog as alternatives suggest a time before twenty-something developers' parents were in college. Those languages were hot at the same time as Lisp Machines. Was an opportunity missed to mention Modula-2 and rotary dial telephones?
The Common Lisp community doesn't handle onboarding well. Seibel's Practical Common Lisp is ok, but how long has it been since CD's were an important recorded music medium for people spending their time with computers? Well over a decade since the days of Napster. Coming up on a decade of iTunes. CD's are more old-school than landlines.
This is to take nothing away from Common Lisp as a language. It's not a knock on the individuals who make up the Common Lisp community. It's pointing out the Common Lisp community's blind spot. Mcarthy was brilliant. He also could have been Rich Hickey's grandpa. We don't make phonecalls on party lines anymore.
Figuring out how to reach the next generation of programmers doesn't require compromising on principle. It does require recognizing that what didn't really work in the past [that is the past since the days when Prolog and Ada were hot, e.g. since C++] probably won't work today, either.
I mean, what's the case of Common Lisp over Clojure? And by that I mean:
+ point me to a webpage that sells me on the idea
+ has a clear call to action
+ and looks at least as vibrant as Clojure's homepage
As I said, Common Lisp is not for most people.
This Web 1.0 page describes the concept: "Teach Yourself Programming in Ten Years" http://norvig.com/21-days.html
> But again the landscape is dominated by FOSS.
Which landscape? There is not one landscape. Is Apple's XCode FOSS? Windows dev tools? Open Source?
If you believe in FOSS, you can use SBCL, CMUCL, CLISP, ECL, MKCL, Clozure CL and several others. I use SBCL and Clozure CL.
> CD's are more old-school than landlines.
Write games with Land of Lisp then. But sorry, the Common Lisp community is not large enough to rewrite books every so often. In the mean time there are classics like Peter Norvig's PAIP, which are even older and even less exciting. Still it is easily one of the best programming books ever written.
> Ada were hot
Ada was never 'hot'. It is a tool used in a lot of mission critical software.
> I mean, what's the case of Common Lisp over Clojure?
I think you have to find that out yourself. Don't be sad if Common Lisp is not for you. Few people drive a Mercedes Unimog, though Arnold Schwarzenegger had one. http://i.dailymail.co.uk/i/pix/2014/09/04/1409847539952_wps_...
You might ask what the Unimog does better than some Toyota, why it costs so much and why so few people have one. If you might spend some time, you might find out what the Unimog is, why it exists and who uses them for what...
> Which landscape? There is not one landscape. Is Apple's XCode FOSS?
Xcode the IDE is not. The Clang/LLVM compiler, LLDB debugger and many of the other tools are open source.
Apple's Cocoa is not FOSS, for example.
This won't really do anything to bring people closer to Common Lisp.
This is a bad thing btw.
Seriously reading this thread makes me so happy that we don't attract these douchebags.
Edit: friendly fire, sorry
Especially since "brudgers" states his case with arguments and politely and has not sweared at anyone.
So yes, I consider it douchey to open a completely pointless debate where there could have been a constructive discussion about the strengths of CL.
That doesn't warrant a "douchebag" stamp.
Plus I don't think the word "douchebag" or "douchey" os appropriate for a discussion among people that are not 17-year olds, 20-yo tops. There are far better adult swear words available if needs be.
For example, it can be like beef liver. It's not that I don't eat it because of a commitment to vegetarianism. I'm not a vegetarian and I'll gladly eat rare cow on a bun. It's not that I don't believe beef liver is nutritious. I just find eating beef liver an inherently unpleasant experience. It's how I feel whenever I try to use Python [even though it is quite likely more popular than beef liver].
There are also languages which aren't right for me because they don't really fit with what I want to do. Swift for example is only available on the OSX platform and I don't own a Mac.
Neither of those apply to Common Lisp. The reason Common Lisp isn't really for me is that there are simply less painful alternatives for the sorts of things I want to do. And one of the ways in which those alternatives are less painful is because of their communities.
It's not that language communities shouldn't be opinionated. I listened to DHH talk about Rails in the early days on an older Hansel Minutes podcast. The object is "person" and the table is "people". If that offends someone, then Rails might not be for that person.
But the Rails community gets to the point quickly. It lays out the facts and moves forward. Within that community it is not considered acceptable to say, "read this book and these five papers and drop a few thousand on commercial software, and then we might consider you worthy."
They tend not to tolerate that. But from the heritage of usenet.comp.lang.lisp that's still considered by some a perfectly entertaining way to treat novice questions in the Common Lisp community. Answering easy questions is dull and being snarky is an outlet for creativity in comparison.
By analogy some members of the Common Lisp community often behave as if it's wrong for babies to babble, that toddlers should learn the alphabet by reading Faulkner, and that only then are they qualified as persons.
Norvig's article is about learning programming, not taking ten years to learn a programming language. Contrary to a portion of our dialog, he's a bit language agnostic.
You totally distort the Common Lisp community and you post FUD. You attack Charlotte's preferences for no reason. She presented HER preferences. Still you attack the Lisp community as if individual opinions are not allowed and as if she speaks for all.
Chearlotte speaks for herself and I think her recommendations are good.
There are a multitude free and open source implementations. Many were developed before stuff like Rails or Java even existed. Free and Open Source software has been written in Common Lisp from day one.
Clozure CL, mentioned by Charlotte. It is published on the LLGPL.
SBCL, mentioned by Charlotte. SBCL's roots go back to the early 80s as Spice Lisp and then CMU Common Lisp. Public Domain since 30+ years.
And many others. Usually people complain the Common Lisp has too many implementations.
Nobody required somebody to invest $4500 into a Lisp system to start.
It's just that some people in the Lisp community use the commercial tools and think they are great. I'm one of those. LispWorks is probably the best implementation of a dynamic language anywhere.
If people have actual problems with coding, they have multiple forums. I have personally answered 1000 Lisp questions on Stackoverflow.
> analogy some members of the Common Lisp community often behave as if it's wrong for babies to babble
Some non-members of the Common Lisp community seem to whine a bit too much for my taste. What the Common Lisp community (if there is one) does not really like is whiners who fail to contribute.
I have nothing against commercial tools. I've spent many thousands of my own dollars on shrinkwrapped bits over the years. That doesn't change the fact that shrinkwrapped bits are continuing to diminish in popularity due to thirty years of Stallmanism running in parallel with nearly thirty years of "greed is good" and even more years of a hacker ethos where spending 80 hours to pirate fifty dollars worth of software is a hobby.
Why care if the Common Lisp community likes me? It don't like most people. It would be foolish to its dislike personally. In fact, why blame them when Hell is other people?
The upshot is that I care enough to say something constructive. I don't wish the Common Lisp community anything but success. I'm not a jaded ex-lover. I hope it meets someone new and that someone turns out to be its soul mate.
 Going so far as to coin the term "love song to Lisp": https://hn.algolia.com/?q=love+songs+to+lisp#!/comment/forev...
It's a total digression, but if you don't restrict your population under consideration beyond "all humans", I would guess that's not the case.
Quite a few more people eat cow than program, so even if Python is significantly better liked amongst programmers than liver is amongst cow eaters, there's plenty of room for liver to be "more popular".
A lot of it is. XCode's compiler, LLVM is FOSS. Microsoft just open sourced large parts of .NET libs and compiler. And there's also Mono, a FOSS implementation of .NET.
Plus, even the closed parts, like XCode and Visual Studio, are either free, have totally functional "community editions", or at worse are dirt cheap -- not $4500 to get to professional development.
>As I said, Common Lisp is not for most people.
You say that as if it's good.
It might be a fact, but it sure ain't good.
Is there a single good thing that can be argued to come from a language not being popular?
I meanbeside BS like "keeps the amateurs away?", which judging by the abundance of amateur Lisp code one sees, is not an actual advantage of Lisp...
> You say that as if it's good.
> It might be a fact, but it sure ain't good.
Is it bad that not everyone understands Hegel or Heidegger? Does that make their writings less useful?
> Is there a single good thing that can be argued to come from a language not being popular?
It's not a question of good or bad. It's a fact of life that some things are less popular than others, which says nothing about the usefulness of the tool.
> I meanbeside BS like "keeps the amateurs away?", which judging by the abundance of amateur Lisp code one sees, is not an actual advantage of Lisp...
It's just that not every programmer has the intellectual capability to understand, master and use Lisp. That's a fact. I've seen that myself countless times at university in beginner's courses. Also many programmers don't need the features Lisp offers and are happy with other approaches. For them Lisp is too complex, too flexible, etc.
Lots of people can learn some basic Lisp or simple Lisp dialects. But once they use actual features of Lisp, which allows every user to radically change the language, the things get tough... in the industry stuff like that is not liked. They want tools and developers which are more predictable.
I think you should get over this 'popularity' BS.
This is such a silly and elitist argument that I've always wanted to dismiss it outright on those principles, but I think it can finally be dismissed on factual grounds now that Clojure is a thing and is actually popular in the industry. The argument that people just can't get Lisp was always an embarrassing position to stake out, but now it no longer holds any water too.
Everyone has their own opinion as to why Common Lisp is having popularity trouble. Mine is that the spec is twenty years old and has no reasonable process for moving forward. I think a number of people are of the opinion that the spec represents stone tablets handed down by God and is completely perfect, but I on the other hand find a number of useful elements missing that are difficult or impossible to implement universally with macros. IMO, Common Lisp's popularity problem flows from its lack of evolution.
Calling an argument silly and elitist does not help your case much.
> Clojure is a thing and is actually popular in the industry.
The number of Clojure developers and its percentage is tiny. Far from 'popular'. It's also in a different stage of the hype cycle.
> The argument that people just can't get Lisp was always an embarrassing position to stake out, but now it no longer holds any water too.
You need to actually read what I said. Basics of simple Lisps are relatively easy to learn, still many people fail at it. I've seen it in computer science University courses where only like 10% were able to write anything useful in Lisp, struggling with recursion, graphs, dynamic typing, ...
Few ever got so far that I would let them program macros.
If you start with the assumption that it's for "few people", and teach it like that, then few of your students will get it.
Yet, people have used Scheme and CL as a first language, and even Haskell, and students were able to pick them just fine.
Besides elitist (which I wouldn't mind, if it was also true), this is quite false.
In fact I've seen more bragging and preaching than real world output that people care for from most Lisp advocates.
And even most of the things they are so proud of for building (with the exception of Emacs, which is also based on C), people have built in other languages and with more popular and full featured results.
>Lots of people can learn some basic Lisp or simple Lisp dialects. But once they use actual features of Lisp, which allows every user to radically change the language, the things get tough... in the industry stuff like that is not liked. They want tools and developers which are more predictable.
That's cowboy coder mentality stuff.
And in 2014, the ability to "radically change the language" is not that impressive. It merely boils down to: "Hey, my additions have the same syntax as native stuff and I can do meta-programming too". Sure, but first you have constrained yourself to a very specific syntax, so it's all a wash.
Yes, actually. If they wrote clearly enough so more people could understand their point, their writings would be more useful. The point of writing something is generally to communicate with others, unless it's a personal journal or diary, meant to be kept private.
"It's just that not every programmer has the intellectual capability to understand, master and use Lisp. That's a fact. I've seen that myself countless times at university in beginner's courses."
Isn't it much more likely that the difficulties are more due to the fact they are beginners, than due to the language used in the course? Did you teach identical material using other languages, and found the students understood the material better? (Honestly curious.)
"But once they use actual features of Lisp, which allows every user to radically change the language, the things get tough... in the industry stuff like that is not liked."
Meta-programming in Ruby has the same challenges, but there is definitely a strong segment of commercial developers who whole-heartedly embrace those techniques. They didn't just give up and say "Oh well, guess we have to give up and go back to using Java", or adopt some complex about their language being too brilliant for other programmers to ever use. Instead, they put effort into persuading others the expressive power of Ruby is worth the tradeoff with predictability. They don't convince everyone, but they certainly managed to get a lot of developers on their side.
I think the Common Lisp community certainly could have accomplished the same thing. There's nothing about the language itself hindering broader adoption, or limiting it's use to academics or elite programmers. It's just the community that seems to want to keep it that way.
That's what Hegel and Heidegger did. They communicated with others. It's just that their thoughts are more complicated.
> Isn't it much more likely that the difficulties are more due to the fact they are beginners, than due to the language used in the course? Did you teach identical material using other languages, and found the students understood the material better? (Honestly curious.)
The experience is that 10% of a course were able to write some Lisp. 40% struggled with the tasks, but made it somehow. The rest more or less did not get more than the basics and were confused by things like 'code is data', recursion for iteration, ...
> Meta-programming in Ruby has the same challenges
Meta-programming in Ruby is very limited to what Lisp does enable. Matz designed Ruby for 'ordinary programmers' (his words). Ruby lacks the whole Code-is-Data idea and on the OOP side, it lacks many of the features of a MOP, ... But it was designed that way.
Matz thinks that there is a cliff and Lisp is beyond that cliff for 'ordinary' programmers. 'Smart people just underestimate ordinarily of ordinary people'.
> Instead, they put effort into persuading others the expressive power of Ruby is worth the tradeoff with predictability
What Matz actually did, was scaling down the language to dynamic OOP + some functional elements.
> I think the Common Lisp community certainly could have accomplished the same thing.
The Lisp community could have scaled down the language. People have done it: Standard Lisp, Logo, Dylan, Eulisp, ISLisp, Scheme, Clojure, ... Some were more scaled down that others.
Common Lisp stayed like it ever was: a language with lots of flexibility and extensibility.
> There's nothing about the language itself hindering broader adoption, or limiting it's use to academics or elite programmers
I've seen research programmers struggling debugging macros which were writing macros. There are code bases where I myself struggle debugging stuff... Common Lisp is great, but it offers so many ways to shoot yourself into the foot....
Well, here's a Hegelian thought for you: the demise of Lisp in the AI circles, and then in the industry means that wasn't not "real" enough (in the Hegelian sense), it was just a temporary transition phase till newer languages got GC, reflexion, macros, metaprogramming, etc.
Die Weltgeschichte ist das Weltgericht, as they say...
To be fair, it's just that no one cares to proselytize.
So, if LISP had them since 60 years and others got it 20+ years later than that, hardly matters by now.
No, but programming languages are not like Hegel or Heidegger. They have network effects, and they need a good ecosystem.
It's more like a political/state philosopher (like Plato, Marx etc) or a reform theorist. If he could not get people on his platform he wouldn't have the influence he needed to influence policy, which would be bad for him.
As for concerns about the ecosystem, you are going to have to elaborate.
But since Haskell, Prolog, Common Lisp, etc, are designed for people who take their tools seriously and perform serious inquiries, they are generally incapable of casual pickup and use by the novice.
I've spent years in Common Lisp and can't recommend it enough for someone interested in a designed dynamic language (as opposed to Perl or Python). I imagine modern Smalltalk might have the same feel.
Prolog and Coq don't really feel like general purpose languages, they have very specific uses. Haskell and Common Lisp are general purpose languages, they are not meant to be used just for one domain.
What do general purpose languages such as Haskell and Common Lisp gain by remaining niche languages?
I'm genuinely curious. Sure - the community might be a bit more tight knit and the overall signal-to-noise ratio is a bit higher, but the overall output of a community 100x larger will always drown out the smaller one. And among the hundreds of projects out there at least some will certainly outshine the "polished to perfection" projects made by the smaller community. At a certain point the larger community will just have more quality projects than the smaller one.
So what does Common Lisp gain by purposely avoiding contributions? I'm genuinely curious.
Does it do that?
Contributions are welcome. It's just that it is not easy for most people to contribute to something like Haskell or Common Lisp. Many people just don't have the time or capacity to learn in. There are some people who learn Common Lisp because of specialized tasks (like composing music), but they have a motivation to learn a special tool.
There is nothing dismissive about it. It's not that many people need a language, where working on one of several meta-levels is the norm and not the exception.
Or, put more bluntly: stop being an asshole. It demeans you and what you're trying to champion.
It's not. Different people have different intellectual capabilities. Some can read Hegel, most don't. Some understand Monads, most don't. That's how it is. Some can debug compile-time macros, others can't.
> Or, put more bluntly: stop being an asshole. It demeans you and what you're trying to champion
A personal attack. Great style!
Get some manners.
See the 2008 Ruby conference keynote from Yukihiro 'Matz' Matsumoto. He explains it in detail. Start at 8:40.
I have interviewed many Java programmers in the past five years. I never found one who could explain how GC works, what lambda in Java 8 does, etc. There are a lot of ordinary programmers out there, even some of them with ten years work experience were surprisingly bad at actual programming. I hired some good ones, but generally the number of not so good programmers is high. Giving them a language where code is data, is a recipe for failure...
The reason they're "accepted" is that ultimately they make an ecosystem bigger. They want IDEs, linters, debuggers & other tools, books & presentations & trainings, libraries, services, etc - most of which are paid and which allowed better programmers to earn a living. Some of them - a minority - actually move beyond this newbie phase and contribute something useful. They make crappy and less crappy libraries, some of which might be used by "code wizards" when they need to do something (after all, does anyone except for the military, maybe, 100% audit the code dependencies they have?).
Let them come, be nice, and they will filter themselves out.
I have an additional question for this debate: think about a problem you'd like to solve while developing an application as a start up. What's the likelihood that your problem is solved by several robust libraries in Java and in Lisp? I'd bet that Java probably has several, not just one, high quality open source implementations of the thing I'm looking for - despite the crappy programmers you mention. By high quality I mean - at least decent code quality, good documentation, a lot of examples, discussions about it on public forums, maybe even commercial support, etc.
Certainly not. The AMOP teaches you CLOS assuming you already know CLOS. In the words of Edmund Blackadder describing Johnson's dictionary, it is the most pointless book since "How to learn French" was translated into Fresh. And therein lies its brilliance.
Because unless you are a hobbyist or a devil-may-care like professional, you want a big community, lots of resources, great libraries and tooling.
You might not need "most of the people" (majority or plurality) for that, but you sure need "lots of people".
A big community is an essential for basing whole businesses on a language and having access to everything you need in abundance (instead of several projects in various states of source rot, as happens for most unpopular languages) -- and it also doesn't hurt, infact helps very much, for the language lover that would stick to it even if he was the sole user of the language.
Then use a language which has that. There are a lot of big community languages with great resources. There is nothing bad about using those.
Lisp has several features which makes it slightly unpopular, but at the same time it is different enough, so that it survives and helps some people to express their ideas.