8 ms·
I am a intermediate programmer with just over one year experience. Everywhere I read about the power of lisp and really want to use it. If it is so good why ai
by santu11 14y ago
I am a intermediate programmer with just over one year experience.
Everywhere I read about the power of lisp and really want to use it. If it is so good why ain't it is used more?
It is very easy to get sites running using ASP .NET, wordpress, RoR or Django. I have worked on production sites using the first two. And personally tried on small projects on the last two.
Is there a way to use Lisp professionally?
- smartial_arts 14y agoI am not too sure about Lisp in particular (especially there's at least few dialects of it, afaik) but I am currently looking into Clojure and, apart from bending my brain, tossing it into a rubbish bin then fetching and putting it back in, I like it very much. Also, there's a Noir [1] framework build on top of it. [1] http://www.webnoir.org/ http://www.webnoir.org/
- jonahkagan 14y agoApparently Noir is deprecated in favor of Compojure, according to http://news.ycombinator.com/item?id=5027560 http://news.ycombinator.com/item?id=5027560.
- DigitalJack 14y agoI was surprised to hear this, but it's true: http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/ http://blog.raynes.me/blog/2012/12/13/moving-away-from-noir/
- Sandman 14y agoNoir lives on through lib-noir [1]. I also suggest checking out Luminus [2]. [1] https://github.com/noir-clojure/lib-noir https://github.com/noir-clojure/lib-noir [2] http://www.luminusweb.net/ http://www.luminusweb.net/
- lukego 14y agoCheck out Lispjobs. http://lispjobs.wordpress.com http://lispjobs.wordpress.com
- deltasquared 14y agoWell if you want to use common lisp to make a web page, Conrad Barski(who drew the OP comic) has a guide here: http://lisperati.com/quick.html http://lisperati.com/quick.html
- akx 14y agoHeads up - that's circa 2004.
- dizzystar 14y agoHere's one bank that is blogging about moving to Clojure: http://www.pitheringabout.com/?p=778 http://www.pitheringabout.com/?p=778 It is used in a few places, but its not common. The reason it isn't used often is because no one bothered to build anything with it. So, if Clojure / Lisp / etc want to make the language popular, you should build something that makes money and tell the world about it. This is what happened with RoR and Django. I have a CRUD site written in Clojure. All total is around 1,500 LOC. I only have to add in a mailing feature and and one other small operation and take it off the now-deprecated Noir framework. All told, it will still be 1,500 LOC, I think. It takes in quite a bit of information, has multiple "views," dynamically generates HTML, connects to a database, and allows quite a few unique operations, so it's actually very easy to create a website in Clojure, and it can be highly elegant once you get used to the data structures and how to destructure. The Clojure community has done an excellent job to make the process of building -> deployment very easy, it's just that no one has stepped up to the plate and did anything with the tools, and unfortunately, I fear Lisp will always be a Land of Toys and No Product Shipped.
- muuh-gnu 14y ago> If it is so good why ain't it is used more? * Weird syntax (for most people). * No free implementations existed during a key period (80s, 90s) so no initial traction, no useful libraries and killer apps which would pull the whole ecosystem. Implementations didnt even exist for commodity hardware. * The commercial implementations cost too much, so they suffocated the ecosystem. People preferred coding for free in C or Perl, than paying an arm and a leg for Lisp. So they wrote all the useful libs in C, Perl, Java and Python instead of Lisp. * No canonical implementation, late and incomplete standardisation, which led to extreme fragmentation, which further killed off the growth of the ecosystem. Instead of writing useful libraries, Lispers wasted effort writing 1001 incompatible implementations of the same basic system. So to summarize, I'd say the Lisp ecosystem is _still_ suffering the consequences of the bad strategic decisions made 30-40 years ago. But it is slowly but steadily healing and improving, especially the last few years. It has a high-quality free implementation with SBCL [1], consolidated CPAN-like library management with Quicklisp [2] and a IDE with Emacs-based SLIME [3]. Everything is getting better. [1] http://www.sbcl.org/ http://www.sbcl.org/ [2] http://www.quicklisp.org/beta/ http://www.quicklisp.org/beta/ [3] http://common-lisp.net/project/slime/ http://common-lisp.net/project/slime/
- mseebach 14y agoTo take the reverse perspective, why it is coming up now, I think that in the 80s and 90s, the increase in processing power came in the form of faster processors. Then, pretty suddenly, really, over the past decade, that trend hit a wall, and instead we're getting more cores, but at the same speed. This rekindled the interest in concurrent programming, and Lisps have a distinctive edge in that space.
- lispm 14y ago> No free implementations existed during a key period BS. CMUCL. AKCL. CLISP.
- arethuza 14y agoI was paid to develop in Lisp (in a research environment) from '89 to '95 and from what I recall the commercial Lisp environments were way better than the free implementations - at least on the hardware we used (Sun 3s, Sun 4s and the DEC Alphas).
- mseebach 14y agoHere's a good tutorial on how to do web development in Clojure. No, it's not as "batteries included" as Rails, but I found the learning curve pretty gentle. http://www.vijaykiran.com/2012/01/11/web-application-development-with-clojure-part-1/ http://www.vijaykiran.com/2012/01/11/web-application-develop... Once you have a Ring-based Clojure web-app, you can run it as any other Java Servlet app, eg. in Heroku.
- gnosis 14y ago"Everywhere I read about the power of lisp and really want to use it. If it is so good why ain't it is used more?" In a sense, people are using it more. A lot of features that Lisp pioneered and that used to be radical back in the day (like built-in garbage collection, lambdas, first-class functions, etc) have now been assimilated in to other languages. As a result, many Lispish things are now pretty mainstream. Not everything about Lisp has caught on, though (yet). In particular, many people are still averse to Lisp's syntax (or lack thereof), and its many parenthesis. Because of this, they're missing out on some of Lisp's most powerful features (lack of syntax and parenthesis are features, as is Lisp's very simple macro system). Also, a lot of people have a pretty skewed, outdated view of Lisp, often based on rumors of a bad experience with some crippled Lisp they were forced to learn in school. Very few people who have a very negative impression of Lisp have had much experience with a modern, full-featured implementation of Common Lisp (like SBCL), or Scheme (such as Chicken or Racket). Those that have quite frequenly describe their experience with them as enlightening and often wish they could use Lisp/Scheme on their day job.
- bitdiddle 14y agofor sure, what folks complain about the most (syntax) is where it's power is. I've been getting Guile recently and find the very tight integration with C to quite nice. It's like the best of both worlds
- gnosis 14y agoWhen I first learned Lisp, I quickly got to the point where I "don't even see the parenthesis". Shortly after that I learned to love them, and see them (and Lisp's simple syntax as a great strength). Now extraneous syntax, even in a half-Lisp like Clojure, seems ugly to me. It's a real pity more people don't appreciate the elegant simplicity of Lisp (and especially Scheme).
- firepoet 14y agoJust a curiosity -- why do you call Clojure a "half-Lisp?"
- cturner 14y ago> If it is so good why ain't it is used more? My guess is that it's hard to create well-gelled lisp programming teams. If you're using Java or C#, there are certain ways of going about things, and there's general consensus about this. You can pick up Java code that is written by someone you've never met and have a pretty good idea of being able to work out what's going on. Something similar with python: whitespace forces a lot of style, and it's backed up by the style guide. Whereas lisp is completely open-ended. Want to run a large system built entirely from lists? Fine. Want to build an object system tinted by your weird philosophies? Fine. Want to create sophisticated self-modifying code? Fine. It's a worse version of a problem you have with C++, finding a common subset of things that the team will stick to (or only hiring gurus who are interested in all the quirks and who know the history). Style arguments within teams are draining, but you need to have commonality to be able to work as a team. Clojure has some edge here for weird reasons. It discourages recursive techniques because of limitations in the JVM. And, if you're going to be interacting with libraries from other parts of Java, you probably don't want to be acting as funky as you might be tempted to otherwise.
- cgag 14y agoI'm coming from a Clojure perspective (around a year of using it), so maybe some of this stuff is different with CL, but Clojure is incredibly simple compared to C++ and in my experience there's no problem with everyone simply using the entire language. I've read a decent amount of Clojure source, since documentation is admittedly a problem with a lot of libraries, but it's the language I've found actually easiest to read. The Clojure way of going about things is to pass around and manipulate simple immutable data structures, which I find easier to understand than large class hierarchies. Macros are usually used for creating DSLs or removing simple boilerplate, which leads to smaller, easier to understand code bases in my experience, rather than implementing custom object systems or something like that. I don't think Clojure really discourages recursion so much as it lets you avoid using it explicitly by providing a good standard library, but many of the standard lib functions are themselves written recursively. Anyway this was all in response to why isn't it used more. I don't really have a good answer for that, but a lot of it comes to from people being weirded out from its simple syntax, and also not wanting to learn to think functionally. It is being used though, the most successful Clojure example I can think of off the top of my head is Storm, which is usually billed as a Hadoop for realtime processing, and it's being used at a lot of large companies: http://storm-project.net/ http://storm-project.net/
- bane 14y agohttp://blog.reddit.com/2005/12/on-lisp.html http://blog.reddit.com/2005/12/on-lisp.html
- toolslive 14y ago> If it is so good why ain't it is used more? I'm too pessimistic, but there is almost no correlation between quality and frequency as far as programming languages are concerned. Reasons for that are legio.
- Jach 14y agoGeometric Algebra is really cool and powerful and good, why isn't it used more? The best things aren't often the most popular ones. (And in a practical business setting, the best is often the enemy of the good enough as well as the better. You get the circular cause problem because Lisp isn't mainstream, so most programmers will not know it, and will be faced with the decision to learn it or go with what they know.)
- JeanPierre 14y agoIf it is so good why ain't it is used more? pg has written about this [1], and the main reason he found was that popularity is always self-perpetuating. If one of the languages get a head start with libraries, it's usually easier to develop programs and libraries within this language than other languages. If you know a popular language, you're more likely to have more job opportunities. If you're a manager, you would prefer to be able to replace programmers easily. That's one of the reasons why Clojure started off on the JVM in the first place: It has libraries and an already thriving ecosystem. In addition, it's a nice bonus for language developers to not have to worry about performance related to GCing, threading, OS-specific differences etc, which the JVM abstracts away. [1]: http://paulgraham.com/iflisp.html http://paulgraham.com/iflisp.html
- cgag 14y agoClojure is very capable for web development, but getting started is not as clear cut as it is with something like Rails or Django. This is because the Clojure community tends to eschew large frameworks, and instead prefers using smaller, more focused libraries. This provides a lot of flexibility, but is intimidating at first because it requires you to choose your own libraries for routing, db interaction, templating, etc. Everything is to be built on top of Ring, which is the Clojure equivalent of Rack or WSGI. Compojure is pretty much the standard for routing at the moment. Korma is a very popular DSL for writing SQL. For templating, Hiccup and Enlive are popular, but there are other options as well. I would start off by getting a decent understanding of Ring and Compojure and building from there. -- https://github.com/ring-clojure/ring https://github.com/ring-clojure/ring https://github.com/weavejester/compojure https://github.com/weavejester/compojure https://github.com/weavejester/hiccup https://github.com/weavejester/hiccup https://github.com/cgrand/enlive https://github.com/cgrand/enlive http://sqlkorma.com/ http://sqlkorma.com/ http://www.clojure-toolbox.com/ http://www.clojure-toolbox.com/ is really helpful for finding appropriate libraries.
- mark_l_watson 14y agoI do a lot of web development in Clojure using Noir, Compojure, Hiccup, etc. I find this setup similar to using Ruby + Sinatra. I still keep up to speed with Rails versions, etc., but in the last year almost all of my web development has been with either Clojure or Ruby + Sinatra.
- lispm 14y agoFor many things you won't even know that it is written in some kind of Lisp. * the first Gulf War in Iraq was won because a Lisp application took care that US soldiers had everything from toilet paper, ammunition to gasoline. Plus it took care that the troops were at the right place. * the missions of various Telescopes, especially the Hubble Space Telescope are planned with a Lisp-based planner * American Express has been checking complex business card transactions with a Lisp-based rule system * many cars (Ford, Jaguar, ...) were designed using a Lisp-based design software developed by Evans & Sutherland * turbines for various airplanes were designed in Lisp (Boeing, Airbus, ...) Some of that stuff survived. Some not. But still today, if you see product descriptions like this, you would not suspect that it is written mainly in Lisp, but it is: http://www.ptc.com/product/creo-elements-direct/modeling/ http://www.ptc.com/product/creo-elements-direct/modeling/
- pretoriusB 14y ago>the first Gulf War in Iraq was won because a Lisp application took care that US soldiers had everything from toilet paper, ammunition to gasoline. Really? Because IIRC it was won because it was fought by superpower against a small country with 1/1000 the military resources. I'm not talking politics in this comment. What I mean to say is it's another thing to say "Lisp was used in that system" and totally another to say "the war was won because of it". There is a big possibility that there was absolutely no correlation between what that language that system was written on and the war being won (and is far more likely, anyway: wars have been won, before and after, without Lisp). Lot's of NASA missions use plain old C and do just fine. Should we say that they succeeded "because of" C?
- martinced 14y ago"If it is so good why ain't it is used more?" You know that Hacker News was created by Paul Graham right? You definitely do want to read Paul Graham's essays.
- falcolas 14y ago> If it is so good why ain't it is used more? Speaking just for myself, it's because most commonly available distributions (such as SLIME) require you to learn a new editor on top of learning a new language. I think emacs is great, but it's not my editor of choice, and when a language distribution all but requires you to use emacs, it's going to have a hard time gaining traction with me. This may have changed over the past few years, but it certainly stopped me from learning Lisp some 10 odd years ago.
- wglb 14y agoThere is slime for VI. And Paul Graham and team used VI and clisp to build the store software--no IDE. If you read Coders At Work http://codersatwork.com/ http://codersatwork.com/ the grown-ups don't use IDEs.
- falcolas 14y agoIgnoring the condescending remark for now, it probably was possible to run lisp without Emacs, but none of the tutorials mentioned how. They all pointed towards Emacs. If I recall correctly, one tutorial (and several IRC lispers) even stated the following: "How do I use this with vim? Just use Emacs + SLIME, you'll be better off for it." It's probably changed (at least I certainly hope it has), but it certainly hampered my adoption of lisp.
- klibertp 14y agoIt didn't change last time I checked - Emacs is still almost mandatory for almost all tutorials on Lisps (I searched for beginner tutorial for Clojure about half a year ago). I find this attitude stupid too. Emacs is a great editor, not to mention operating system, but I just don't like it and I feel that I have the right to do so. It shouldn't be too costly to list the alternatives and help with getting expected functionality in other environments. This was never really an issue for me though, because I was lucky enough to start my adventure with Lisps from Racket and it's excelent IDE, DrRacket. I then used it with other Lisps, because I was already familiar with it and adding some keywords (well, names - for indentation purposes) was trivial. I didn't use them (other Lisps) long enough to be seriously irritated by the lack of built-in repl, so obviously YMMV - but I would recommend DrRacket as low-entry-barrier alternative to Emacs for Lisps editor - it handles parentheses rather well :)
- JabavuAdams 14y agoProductivity is about language + libraries + frameworks + community + your own familiarity with all of the above. The language is really the least concern when actually delivering features in a timely manner. Programming is a high-variance activity. It's not that some programmers are 10x faster than others -- it's that an individual programmer may have 10x variance in performance on different days/weeks. So, the two most effective things a programmer can do to become more productive are: (1) Get enough sleep. (2) Don't write code -- use libraries. To the extent that Lisp's meta-programming support can help with (2), it's useful, but usually the lack of discoverable, minimalist, production-tested libraries is a worse tradeoff. Essentially, the other ecosystems are good enough, and the Lisp ecosystem is not great for the bang-out-10-features-today style of most app development.