back in the day when Visual Basic truly sucked and other popular frameworks also sucked a lot, why didn’t the LISP community take Greenspun’s 10th rule to heart and make frameworks that would allow scripting those other frameworks using LISP? E.g. Microsoft built this whole Visual Basic gui platform - so who was stopping Paul Graham, or LISP Machines, or any other LISP enthusiast people and entities, from making a good interface between it and LISP?
Same question applies to other popular frameworks.
In other words, why talk about the lack of good libraries for LISP when all the libraries are already out there in other frameworks, waiting to be harnessed through shells with LISP interpreter inside?
First, look up Clojure. Lisp has come to the JVM and it is most certainly not just a toy. Is the JVM enough of a ‘framework’ for you?
One reason is because the companies who sell Lisp environments have always thought it to their advantage to provide a complete environment from within their own product. This means that developing in their variety of Lisp is more pleasant at the cost of it traditionally being painful to call out to code not written in that variety of Lisp. Smalltalk has the same problem only, if possible, worse.
Another reason is that even if you’re writing software in Visual Basic and PHP, you’re likely convinced ‘Lisp Is Slow’ and very little can be done to change our mind. It’s unscientific and stupid, but there you go. That means there was little pull from the non-Lisp world to get Lisp into the frameworks they were familiar with.
The reason that will get people to yell at me is the Blub Paradox, explained at this wiki page. In essence the Blub Paradox says that it’s easy to see when a different language is less powerful than the ones you know, but very difficult to see when it’s more powerful. This kept non-Lisp-users away from Lisp in droves.
The terrible secret of Lisp is that nobody actually wants to use Lisp.
Yeah, it’s neat that you can string together a bunch of cars and cdrs and make a Turing-complete language. It’s also a fucking stupid way to design a programming language. Not because functional programming or typical Lisp constructs are bad – they aren’t – but because what you end up with is not a language. The whole point of a language is that it has a vocabulary and grammar. Nouns look different from adjectives and go in different places. In Lisp everything is just an S-expression inside 42 billion other S-expressions. It’s impossible to tell at a glance what is happening, unless you unwind several layers of recursion in your head.
They even invented a word for this idiocy: homoiconicity. That’s Lisp-speak for “everything looks the same.” Or it’s idiot-speak for “something that is not a language.”
And if I may add, I’m really tired of assholes who insist that every programming language that implements lexical closures or first-class functions is “just Lisp.” Javascript is not “just Lisp with curly brackets!!!11” Perl is not “just Lisp with funny punctuation marks!!!111”
Any Turing-complete language can be implemented in any other. Big whoop.
Derleth, obviously there is no pull for LISP from people who like other languages. Or from me personally :-). But if the people behind it were and still are truly so convinced that LISP is “the way, the truth and the light”, they could have done a better job of spreading the word, err, the technology.
Er, it’s actually one of the better languages I’ve ever programmed in, and I’d be happy to be doing it again.
No kidding.
As for the OP – I’m having some trouble parsing it, but I’m not sure it makes much sense. If you put a framework on top of Lisp and use Lisp as the underpinning then (if I’m interpreting the OP correctly), you’re still stuck coping with the syntax of whatever language constitutes the framework. So (as an example) you’d have the intuitive syntax of Visual Basic combined with the sheer efficiency of an interpreted language underpinning. Generally, Lisp was chosen for its expressiveness, which means you don’t want to hide it under a framework.
You have no idea how often this happens in the technical world. Look at ITS, or Amiga, or Smalltalk, or Plan 9: Having the ability to create good software rarely correlates with having the ability to successfully evangelize it in the real world, especially when that real world contains expert marketers like Bill Gates and Steve Jobs.
Does anyone in industry use lisp? I have been in digital hardware design for 20 years. While I don’t do much programming, I work with a lot of people who do write programs. I have never heard of anyone using lisp for any thing. If it wasn’t for emacs the world would have forgotten about lisp.
Not for hardware stuff (with the exception of the old Lisp-Machines.) But there have been some examples of successful projects built from the ground-up in Lisp. The early versions of Orbitz, for example.
You can’t talk about Lisp without acknowledging the impact it’s had on modern languages. Functional programming is becoming increasingly mainstream - Java has Clojure (as mentioned previously) and Scala. Microsoft has F# (ok so no one really uses it). More to the point, though, regular old C# is becoming increasingly functional with the introduction of lambda syntax, lazy evaluation (via IEnumerable), LINQ, and extension methods. C# is far from being “just like Lisp” but I see a lot of influence in the direction it’s going.
ed, yes, obviously LISP had great impact. But doesn’t the humanity suffer in quiet desperation for lack of homoiconicity in their programming languages? Where are the efforts to save the world here, beyond just bitching about how LISP is great in the newsgroups?
Also, back in the day LISP was indeed a lot more advanced than it is now, with a lot of its features copied. So back then it would have made more sense to try port LISP to real platforms.
Finagle, I refer you, once again, to Greenspun’s 10th rule. There is nothing stopping you from going beyond Greenspun and just including a LISP interpreter inside a generic Visual Basic program. Then hooking up the interpreter to the gui (using code hidden away under the hood, to keep the lack of homoiconicity from traumatizing the user) and subsequently writing the bulk of the program’s code as a LISP script. Once such a framework has been created, people can just take it and program the VB environment in LISP. At least that’s my IMHO which may be factually incorrect, in which case feel free to fight my ignorance.
Lisp isn’t really a “functional” language in the sense that it’s commonly used these days. It’s Lisp. It’s imperative, dynamically typed and does not have a particularly expressive typing system. All of those features you talked about being grandfathered in to C# were more or less directly taken from Haskell (especially the lazy evaluation part and LINQ, which is monadic programming for C# programmers without anybody letting on).
AMD verifies their FPUs in a computational logic known as ACL2 (A computational logic for ANSI common Lisp). The Lisp part means their specifications are executable, and sitting on top of the executable core there’s a logic which allows you to prove theorems about the program at hand. Cite. Rockwell Collins, Motorola and IBM have all used ACL2 in a similar fashion.
(This all started after the Pentium FDIV bug where AMD shat themselves, as they’d had to throw out a large section of their FPU design for the K5 due to a miscalculation of how much die space was to be allotted. They hired a company to verify their FPU was correct in six weeks. Source: talk by J. Strother Moore, who writes ACL2, and did the verification for the K5 with his then company Computational Logic Inc. AMD does it all internally now.)
I have nothing to add except that Dr Moore was the guest lecturer for one of my Software Engineering classes at UT and spoke on this very topic. He is one smart guy.
Software companies started by MIT grads will sometimes use LISP because it was one of the teaching languages that they used (e.g. ITA Software uses LISP). However, MIT has started to use Python so LISP will become even rarer.
friedo. We’re in General Questions. Calling people tards, whether you specifically were talking about a poster or not, really isn’t good form here. Thanks.
That makes 2 of us. I mean the how LISP programs seem to not use the return key you’d think the programmers are afraid they’ll get a 50,000 volt shock if they hit the return key or something. (I found that very unreadable, now it’s a pet peeve of mine when fellow engineers trying to take too many statements and shove them on one line.) I could comment how I now honestly believe the key word “defun” was actually given that name because the originators of LISP thought they needed to remove enjoyment from programming. (My biggest problem with LISP was the parens. No, not how there’s so damn many but the fact you have to use exactly the right amount. You put in 1 extra set of parens and your program crashes. Try doing that in the early 90’s without tools to help you get the exact right number, it’ll drive you up the wall.)
Honestly, I’d rather do assembly than LISP. (Language to Induce Stress in Programmer.)
You’re looking at badly-formatted code. There’s no other explanation.
Mine, too.
And I’ve bolded the entire problem. I mean, compare programming in assembly on a modern desktop system to programming in assembly using a pen, reams of paper, a reference card, and a computer with a front panel some time. Tools make the world go 'round and sometimes make it stop.