[moved from SocialProblemsOfLisp; some ReFactoring needed. Arguments re-arranged chronologically]
Scenarios of arrogance.
Code rage
When Lispers use other languages, often they think, "Man, this would be so much easier in lisp." Then of course, they must tell innocent bystanders, which isn't really endearing.
My last anecdote came from a language which is considered pretty enlightened and kind of lisp-like. When you call a library, it can throw an exception to you. Well, in lisp it can also signal a warning - if your app wants to handle it personally or give advice, that's fine; otherwise the library just decides what to do on its own.
So, I was writing an opensource library that conceivably would encounter partially-junk data. My desire was to signal a warning and crystallize something over time. I mentioned pointedly in a comment that the language didn't support warnings, and planned to deal with errorhandling later when I see what the library's evolved into. (The comment at least was politic enough not to mention lisp.) -- TayssirJohnGabbour
"I wasted years of my life not knowing about this?"
Lisp is like TheRedPill - after you take it, you think that maybe you should start killing other programmers who don't know any better and seem opposed to taking TheRedPill anyway. This wears off eventually, and you focus on building your own little submarines that fly. Occasionally popping into the net and fighting mythological creatures like trolls, or offering strangers odd red candies.
It's just a macro!
When she sees a BenevolentDictator and his TrustedLieutenants? getting together and announcing some new for(;;) loop, with a media circus and people getting paid to write new articles about it, your average lisper-in-the-street has one piercing thought: "Macro!"
Here are videos taken of MITers in the wild, setting upon LL2 speakers who unwittingly came bearing only macros: http://ll2.ai.mit.edu/ (Mainly with the Safe-Asynchronous-Exceptions-for-Python guy, the Microsoft guy, and the Ruby guy. Well, the Ruby guy didn't bear macros, which in his case was the issue.)
Republic of Lisp
Lisp is pretty different from other languages in government structure, and newbies initially have a hard time with it. Most languages have a BenevolentDictator and his TrustedLieutenants?, who actually call themselves by those names. Well, with lisp there is less need for such dictators and pals because people are empowered with various tools, macros currently being the most hyped. So you see more of a democracy, with individuals and representatives who can synch together with things like the CommonLisp standard.
So lispers will sound off on anything and everything, without knowing they're giving your sacred cow a noogie. "Damn, what's with this Guido Said This, Guido Thinks That crap?"
Loopy lispers
Some people are tempted to carry the "applied philosophy" nature of lisp a little far. Well, at least I personally might; I'm not sure if there are examples from others: http://www.dreamsongs.com/cgi-bin/ExtravagariaWiki/index.cgi?NontraditionalLiterature
There is no loop
When a lisper hears, "Why are lispers too PURE to have a for loop?" it's like being told lisp has no parentheses. (Lisp's loop macro is like every for loop, in every language, rolled up into one. Like a giant neon cluestick, even the keyword "for" is almost always seen in it.)
As with any blatantly false propaganda, the human side of lispers are also targeted. "Respectable pragmatists" denounce lispers for acts of militant arrogance and insanity, emphasizing that percentage of socially unusual individuals who occur in any community. (*cough* Java BileBlog? *cough* .NET AngryCoder?.)
Does that make a few lispers arrogant like a self-fulfilling prophecy, to see people acting this way? Who knows.
Yes, I think this is at the heart of a lot of it... I'm imagining explaining to a PerlProgrammer? that perl is crap cause it lacks lexical closures, and that perl sucks cause you can't memoize functions without editing them directly, and perl sucks cause... well you get my point. Oh- and I could also toss in a couple of points about how nasty Perl programmers are, and back that up by referencing his reaction to my previous statements...
Also, to add insult to injury, many people who make bizarre, disparaging statements about Lisp lack the background to understand that the exact features that they are extolling in their language of choice not only exist in Lisp, but originated with Lisp. Is it arrogant to point that out?
- That particular problem doesn't happen so much on this wiki, where bizarre attacks usually don't mention other languages, but with mainstream Java/C# developers it happens frequently. [ http://lemonodor.com/archives/000900.html ] I have to say though that Rubists (at least the creator) are really good at crediting Ruby's Lisp/Smalltalk influence, AFAICT.
Yep- I don't mean to implicate users of this wiki of course.. I mean the great unwashed, who _don't_ wiki ;). Except for whoever created this page, assuming that their tongue wasn't firmly planted in cheek... and, oh yeah, whoever made that LispUsersAreTakingOverWiki? page. One thing I noticed when I first started reading WardsWiki a few years ago was that there were a lot of really ardent Smalltalkers here. I had never thought of Smalltalk as anything other than a historical artifact before that- that's how it was presented in the classes I took at Uni, and how a lot of people think of it. I wound up downloading several Smalltalk environments, doing some real programming in them, and Smalltalk is definitely my second favorite language now- and I learned a lot by using it, particularly about how accommodating a development environment can be - I'm pretty sure CL has no analogue, and I think it can't- that is one of Smalltalk's features. Cl has some things to teach too, and just as I would have missed out if I were mostly concerned with calling SmalltalkersWhoTookOverOrMaybeStartedWikiEvenThoughItsWrittenInPerl? arrogant... well you get my point... Lisp was the first high level language- unless you call Fortran a high level language. It is still around, and is undergoing a renaissance- can't _all_ be arrogance
regarding development environments, consider reading about the lisp machines and operating systems, particularly Genera.
- Just for the record - I created this page not because I agree with the sentiment in the title (I don't overall, but will gladly make exceptions for particular Lisp users who warrant them :) ), but in order to move a rather long thread out of SocialProblemsOfLisp. I did have second thoughts about the title; perhaps AreLispUsersArrogant? would have been better. -- ScottJohnson
Let me try to get this straight: Lisp is a language for describing algorithms. This was JohnMcCarthy's original purpose, anyway: to build something more convenient than a Turing machine. Lisp is not about file, socket or GUI programming - Lisp is about expressive power. (For example, you can design multiple object systems for Lisp, in Lisp. Or implement the now-fashionable AOP. Or do arbitrary transformations on parsed source code.) If you don't value expressive power, Lisp ain't for you. I, personally, would prefer Lisp to not become mainstream: this would necessarily involve a dumbing down. So, if you want to use Java, use Java. But don't go around calling people morons. You're only giving yourself a bad name. (Is that why you didn't sign your rant?) -- VladimirSlepnev?
(To set the record straight, I am not a Lisp user per se. I do love Common Lisp, but haven't ever been paid to work with it. -- VladimirSlepnev?)
- Lisp is not about file, socket or GUI programming . Emacs IS a GUI. All text editors are GUI's.
- Wait a second, doc. Do you think that if folks benefited from a good IDE for Lisp, like Eclipse is for Java, this would involve a dumbing down of Lisp ? Maybe I just don't get it, but I still don't see how even the smuggest of SmugLispWeenies couldn't benefit from pressing control space in a while, or moving the mouse over a symbol and being able to read the definition/documentation. -- CostinCozianu (not the original contributor)
- Of course, a Visual Studio-class IDE for Lisp would be wonderful. This isn't what I would call dumbing down. What I meant was: once the industry starts making legions of grunt programmers code in Lisp, we're bound to see at least some spectacular failures and some atrociously bad code. --VladimirSlepnev?
- And this would affect the success/failure of Lisp in what way? The goodness or badness of a language, it seems to me, ought not be gauged by the number of ThreeStarProgrammers the language attracts; Lisp would be a fine language even if an ArmyOfProgrammers of mediocre skill were sent to use it for forms-generation. (Conversely, observations that Lisp programmers are - as a whole - smarter than the average bear says precious little about Lisp the language - though some Lisp advocates think that it says a great deal).
- And why on Earth would "file, socket, or GUI programming" be mutually exclusive with "expressive power"? I detect a whiff of "LISP is too gosh-darned powerful to be wasted on menial tasks like CrudScreens - one should use Java for those and use Lisp for the real problems". Is that what was intended, or am I drawing too many inappropriate inferences? (See DomainPissingMatch) -- ScottJohnson (not the original contributor either)
- No, that was not intended, sorry. A clarification of what I meant: the ANSI Common Lisp standard doesn't include threads, sockets or a standard FFI. But it contains tons of stuff aimed at maximizing expressivity, like the condition system. When I need today to get a simple custom telnet server up for testing purposes, I used Ruby, not Lisp. -- VladimirSlepnev?
- Be careful of the AlgolSixtySyndrome - CommonLisp doesn't have it (an argument can be made that SchemeLanguage does). A language which is crippled in its ability to communicate with the rest of the world is crippled. For many applications in which Lisp is presently employed, portable I/O is not an issue - the app(s) run standalone in a well-known environment. But when we start dealing with numerous reusable software assets deployed piecemeal in a heterogeneous and networked environment - which is the case in most if not all IT shops - portable, standardized, and easy-to-use I/O is critical. This is one reason why DotNet, JavaLanguage, and similar are so popular despite having far less "expressive power" than Lisp - for many apps, I/O is what matters and algorithm is secondary.
- Sorry: threads, sockets and FFI do increase expressivity. Even more than condition and object systems. After all, you can (painfully and unmodularly) emulate conditions and objects by other means. But threads can or cannot be emulated depending on the availability of facilities like multiplexing I/O, and this is equally unmodular; sockets can't be emulated at all without FFI; and FFI can't be emulated if it's not available in the first place. -- MarcinKowalczyk?
- As for "being more convenient than a TuringMachine"; isn't that setting the bar a bit low? I mean, AssemblyLanguage is more convenient than TuringMachines, for gawdsakes. And as for the bit about "necessarily involve(ing) a dumbing down" - don't rubbish remarks like that serve to demonstrate the original author's point? -- sj again
- why are we still talking about turing machines in year 2005? isn't that pushing it a bit far?
- Assembly is a solution-domain language - it mirrors the metal. A Turing machine isn't close to the metal - it's a general way of describing algorithms, of modeling the problem domain. Lisp tries to do the same, but more efficiently. (For example, fixnums aren't just native ints.) Sorry if I sounded arrogant, I didn't mean to. -- VladimirSlepnev?
- A TuringMachine is a ModelOfComputation which is useful for algorithmic complexity analysis, and nothing more. As a programming model, TuringMachines are utterly useless, and no sane programming language would seek to emulate one (those that do are rightly called TuringTarpits) - I mention assembly language simply because many processor instruction sets are as close as you will find. Even CeeLanguage, which gets close "to the metal", uses functions and other high-level abstractions throughout. TuringMachines aren't used at all to model problem domains; they're used only as "reference machines" to determine things like a) can a function be computed; and b) what is an asymptotic upper bound on the time and space needed? In short, they are useful for mathematicians, not programmers. (ComputerScientists, of course, frequently wear both hats).
- Yes. But Lisp was also conceived by JohnMcCarthy as a "reference machine", and he was really surprised when one of his students implemented "eval". Paul Graham also noted in one of his essays that "Lisp is not programming but math, and math does not get stale". -- VladimirSlepnev?
- So and so said this, and this book said that.. Statements like these are a fine way to win an argument, sir. You should give lessons.
- Well one should give examples from his experience instead of quoting from every possible place or person. Too much studying/reading/referencing and not enough of your own output. It doesn't matter that the founder or friend of the founder of so and so language says so and so and how they were such a great person because so and so and so and such. All programming languages involve math, but none are math alone or are directly equal to math in any way. Math only solves part of the problem. There are even programming languages which focus on solving math problems only. Are you saying that is what Lisp is geared for or was created for? Or are you just quoting things from places. Lisp cannot 'be math'. Maybe I just don't like metaphors.
- Math may not get stale, but many - if not most - problems in the industry have little to do with math.
- Right.. it's only part of the story really.
So, what are these problems, then? Well, apparently [above] someone is dead-set on demonstrating their social dysfunction. However, since they state an anti-lisp position, I don't know what that tells you about the putative social problems of lisp.
Hmmm, well assuming you are the one making the rather outre claims below - you may or may not be anti-lisp, but the comments are tendentious and contain a lot of misinformation. Either you don't understand lisp and its history, or you are deliberately misrepresenting it.
Not to completely derail this tangent of your argument, but nearly every academic society is steeped in "endless onanism" of one form or another. That's a harsh way to put it, but it's essentially true. Note though, that these little activities are what these people enjoy doing. Many of our greatest achievements in science, math, and more recently computer science started out looking like "endless onanism about semanitics." As for error correction, this is a common trait in hackers. Correctness is important. Get over it now, or forever be pissed off. You can be wrong and not be stupid. People, even smart ones (especially smart ones?), are wrong periodically.
Can I change the title to FpProgrammersAreArrogant?? It is not just a Lisp thing. --top
Probably not this page, I guess. Lisp is different from other FP languages. In fact Lisp is not even a functional programming language; it just happen to enable functional programming naturally. You wouldn't see other FP talks about Macro and Conditions System also.
See also: HowCanSomethingBeSuperGreatWithoutProducingExternalEvidence
CategoryRant CategoryLisp