6 ms·
This reads like a Chinese government strategy document: "the world thinks we suck. How do we convince everyone we're vibrant and fun-loving?" I've been a Lisp
by pc 18y ago
This reads like a Chinese government strategy document: "the world thinks we suck. How do we convince everyone we're vibrant and fun-loving?"
I've been a Lisp hacker for years -- Symbolics Lisp Machine in my bedroom, coded in at least a half dozen different Lisp dialects -- but I ended up using Smalltalk for my startup. Treating Lisp's "rehabilitation" as a mere branding exercise shows just how screwed the Lisp community still is, and is symptomatic of the underlying issue. (By "Lisp", I mostly refer to Common Lisp.)
Lisp's problem is a meta-problem. The community is actively resistant to advancement, change, and evolution in the language. Attempts to modify (or even clarify) aspects of the Common Lisp standard are tedious exercises in futility, but the standardisation straitjacket is still seen as a good thing. A bit strangely, this resistance to change existing standards is accompanied by a slowness to standardise (even informally) anything that isn't already. The end result is that there's still no reliably portable way to write networking code in CL.
And this is why Lisp is unpopular.
The stasis is sad and ironic, given Lisp's hackerdom beginnings. Rather than wonder why, in 2009, so few are using Lisp, we should be amazed that the language is still pretty cool two decades after the innovation stopped.
I hope the Clojure guys change things. They seem to have the right approach.
Footnote: I was going to be a member of the CLRFI group (roughly equivalent to PEP or SRFI) that got some interest at ILC 2005, and which was going to try to create some sort of forward momentum in the community. It frizzled out, of course, and now http://clrfi.alu.org/ http://clrfi.alu.org/ appears to redirect to the ALU homepage.
- miked 18y ago>> I ended up using Smalltalk for my startup. I'm getting ready to start a new project with a significant GUI forms component. I wanted to go with Clojure, but it still seems a little rough around the edges. So I'm leaning towards Visualworks Smalltalk, in part because it seems like a great language to prototype in and partly because the OOP aspect fits so well with GUIs. I'm curious: did you consider Clojure? Would you mind elaborating on why you went with Smalltalk? given the number of Lispers on this site, the answer might be of broad interest.
- plinkplonk 18y ago"Visualworks Smalltalk," Doesn't VW have a "pay us x % of your revenue forever" license (http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=var http://www.cincomsmalltalk.com/userblogs/cincom/blogView?con...)? I am curious as to why any startup would want to accept these terms.
- miked 18y agoWell, I'm not thrilled about it. But getting something out the door is the key. Enjoying the development experience is #2. I can live with a 6% vig for the Cincom guys.
- icey 18y agoOut of curiosity, have you checked out Pharo? It just seems nuts to me to agree to give away such a huge percentage of revenue just for your development stack.
- miked 18y agoI hadn't heard of Pharo before. Thanks for the link. It looks like it might be interesting and I'll keep an eye in it.
- dantheman 18y agoIt sounds like your building a thick client, but in case your building a web app check out: http://www.seaside.st/ http://www.seaside.st/
- miked 18y agoThanks. I have looked at Seaside a bit and it looks impressive. I was impressed at how little code it seems to take to get something going. My app will work best as a thick client, but I still need a website to sell it.
- vorador 18y agoBy the way, could you describe your project, which smalltalk implementation you use, and how it simplified your work ?
- jimbokun 18y ago"I hope the Clojure guys change things." In many ways, Clojure seems like a deliberate response to each of the common complaints against Lisp. Lisp is old and moldy. It must be primitive by today's standards. Hard to call Clojure "old" when it's only been around a couple years. The exciting languages to learn now are Python, Ruby, Groovy, etc. Clojure has been very successful at building nerd "street cred." It has latched onto the fascination with functional programming for parallel applications, for one. It also makes use of concise syntax for data structure literals, like Python and Ruby, too. Dynamic, etc. etc. Lisp is only for artificial intelligence. Don't think Clojure has this problem. Lisp is interpreted and slow. Lisp programs page heavily, so they're even slower. Clojure gets the performance benefits of running on the highly tuned JVM, with tricks like type hints to get close to Java speeds for critical portions of code. Worst case, you can always drop into Java as your "assembly" language. The parentheses look weird and hard to manage. Clojure mixes up () with [] {} to make code easier to mentally parse. Lisp uses prefix notation for things that every other popular language does with infix notation, which is just very weird. (And it leads to more parentheses.) No change here. Lisp is too big. Lisp is too hard to learn. Clojure is pretty small and doesn't take much time to get started. Lisp is all about lists and recursion; that's all you do with it. Some might start to think "Clojure is all about functional programming." Don't know if that's good or bad. I don't know which implementation to use. There's only one Clojure implementation. It isn't "batteries included" (that is, it's not easy to get set up with all the tools and libraries you need). You get all the libraries written for Java. I don't like Emacs, and you can't use Lisp without Emacs. I use Emacs, which is also great for Clojure, so I can't judge how easy it is to program in Clojure without Emacs. Lisp isn't useful for my career; few potential employers want it. You might be able to sneak Clojure into a Java shop.
- ilkhd2 18y agoI kind of like Clojure but several things I find a bit disturbing: 1. A very subjective one - not enough parenthesis - take fo example "cond" operator - it accepts pairs condition-operation without extra parens around each pair. Well, it looks nice for small "cond"'s but for bigger ones it is both inconvenient and error prone - if off by 2 exprssion, fo some reason - yo'll get completely crewed up behavior. There several other syntactical things I find artistically impressive but technologi cally justified. 2. Another thing - I miss "setf" - in somke places mutability can be a way for smaller code especially in case of VM without tail-recursion. 3. It is way biased towarda concurency, it was in fact engineered for concurency - well I sometimes a lot more dirtiy but fasterr solutions. 4. I think that great attractivenes of Lisp's is that you can craft your own in less then a month. No pain with lex/yacc, antlr etc. Just make a simple reader and focu on semantics.
- astine 18y agoThis article links to another one which lists and describes actual issues with the core language. I don't think that it's quite as bad as you make it out to be.
- Semiapies 18y ago"the world thinks we suck. How do we convince everyone we're vibrant and fun-loving?" The only response that wasn't along those lines (or the old "Lisp is just too awesome for lame modern coders" shtick) was Ian Eslick's long one "A Coherent Portal into the Lisp World"; he actually seemed aware of why it was hard for new folks to get into Lisp and had suggestions about direction.
- blue1 18y agoFor pc: I asked the ALU webmaster about the fate of the CLRFI site. He said: "The CLRFI has been (successfully, imo) superseded by the Common Lisp Document Repository <http://cdr.eurolisp.org/> http://cdr.eurolisp.org/>. So when we had to rebuild the server last year we decided to stop posting the bytes."