Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Using Lisp to beat your Competition.

CmdrTaco posted more than 13 years ago | from the interesting-stuff-people dept.

Programming 418

kovi writes "Paul Graham, the guy who developed what finally became Yahoo!Stores (and made him $50 million richer) wrote an article that explains how he used Lisp (the infamous programming language) as a competitive advantage against the competition. As a bonus: thoughts on startup experience." Its in pdf, but its actually worth a read. Very nifty.

cancel ×

418 comments

Sorry! There are no comments related to the filter you selected.

Re:I can't stand articles like this (1)

Anonymous Coward | more than 13 years ago | (#253027)

Did you miss the footnote, or are you just being pedantic to sound smart? I'm sure the author took programming languages and automata theory classes while you were still picking your nose and playing Duke Nukem 2D.

All languages are equally powerful in the sense of being Turing equivalent,but that 's not the

sense of the word programmers care about.(No one wants to program a Turing machine.)The kind of
power programmers care about may not be formally de nable,but one way to explain it would be to
say that it refers to features you could only get in the less powerful language by writing an interpreter
for the more powerful language in it.If language A has an operator for removing spaces from strings
and language B doesn 't,that probably doesn 't make A more powerful,because you can probably
write a subroutine to do it in B .But if A supports,say,recursion,and B doesn 't,that 's not likely to be
something you can x by writing library functions.


Hey, what do you know. He knows exactly what you mean, and you're too stupid to grasp his point. Now who's the moron?

Re:CL vs Scheme (2)

Anonymous Coward | more than 13 years ago | (#253035)

Try www.ocaml.org [ocaml.org] for the English version.

Re:Any karma whores out there... (2)

Anonymous Coward | more than 13 years ago | (#253036)

The sorta portal site for lisp: www.lisp.org [lisp.org]

Here is a list of online books and references which I found useful:

Re:Interesting. (2)

Anonymous Coward | more than 13 years ago | (#253037)

A Link [msnbc.com] so everyone can read it and know, yes it is.

Re:What IS Lisp based off? (2)

jandrese (485) | more than 13 years ago | (#253046)

Another program that uses a Lisp like language (actually Scheme IIRC) is the Gimp. Maybe you've heard of it? :)

Functional languages have some useful properties that can make some things really easy and fast (recursive list processing algorithms for instance).

Unfortunatly, most functional programming languages are toys that sometimes get used in big projects. Before anyone flames me to a crisp, I'd like to point out how bad the I/O is in Lisp, and how hard it is to properly handle the myriad possible errors a program has to handle gracefully when working with humans. Also, most lisp engines I've seen are interpreted (save for things like the Lisp Machine). Now this doesn't prevent you from doing very powerful very high level things with Lisp, but for the most part you can do them easier and faster with C, also it's nigh impossible to do very low level things with Lisp (At least from with what's available). Lisp is truely the language of the theoretical math major.

Please hold on until I finish donning my asbestos underwear, thank you.

Down that path lies madness. On the other hand, the road to hell is paved with melting snowballs.

kind of a shallower lesson than one might hope (1)

jabbo (860) | more than 13 years ago | (#253048)

(define better-tool 'emacs)
(use (better-tool))

Computers are great for counting parentheses. That sort of 'have the machine take care of it' thinking is the point of high-level languages...

Re:CL vs Scheme (5)

Ian Bicking (980) | more than 13 years ago | (#253053)

I think Scheme might be a better place to start, whether or not you go on to learn Common Lisp. The basic syntactic trauma of Lispish languages is softened by the small size of Scheme, and nearly everything you learn in Scheme will apply to Common Lisp.

In a funny sort of way, while Scheme isn't used for many large projects, it's nearly as alive as Common Lisp -- which is to say, not very alive. Scheme is more popular in Academia at this point, in large part due to the book Structure and Interpretation of Computer Programs, by Abelson and Sussman, which is a great book for learning to think differently about programming. It's the standard introductory text for programming at MIT.

Common Lisp is far more practical than Scheme. It has every feature you would want to use, and many features that you would never want to use (e.g., dynamic scoping). It was designed by committee by smushing a bunch of previous Lisps together, and it shows. But it actually has a lot of useful code for it, and a lot of useful features.

Scheme is designed by a committee of mathematicians posing as computer scientists, and that shows too. Common Lisp has an ANSI standard, Scheme has a strong standard that is only endorsed by convention and the academic credentials of the committe. It's an interesting difference.

Common Lisp is also interesting in part because of its rather novel object system, CLOS. It implements what's called a Meta-Object Protocol, and is supposed to be very Deep (though I haven't used it myself). It uses a style of generic programming, as opposed to object methods -- it looks reminiscent of C++ function overloading, but is somewhat more general (arguably more general than methods). There are comparible object systems (e.g., TinyCLOS) available for Scheme, but not generally built into the language.

Common Lisp has been used more in AI, where Scheme is a more important foundation for language design.

"first Web-based application"? (1)

CaseyB (1105) | more than 13 years ago | (#253054)

In the summer of 1995, my friend Robert Morris and I started a startup called Viaweb .... as far as I know, Viaweb was the first Web-based application.

Whatever. I was building web apps full-time in early 95, at which point CGI app development was common knowledge. The Xerox map server [xerox.com] was running in '93, and it was more technically interesting than any web store.

Re:What IS Lisp based off? (4)

Zachary Kessin (1372) | more than 13 years ago | (#253059)

I think every programer should learn lisp or scheme. It is very different from the Perl/C/Java that we spend most of our time working with. Since it is so different while programing in scheme you tend to come up with very different ways to solve problems. Once you know how to solve problems like that you can if needed take those ideas and move them back to Perl/C/java or whatever.

But learning to think differently is something that is definitly worth it!

Emacs (1)

richieb (3277) | more than 13 years ago | (#253068)

Son, you need Emacs.....

Re:I can't stand articles like this (2)

Just Some Guy (3352) | more than 13 years ago | (#253069)

The turn-off for me was his statement that high-level languages are inherently "more powerful" than low-level languages. I guess that he's using a definition of "powerful" that varies substantially from the standard CompSci meaning. Lisp, C++, Assembler, and Perl are all Turing-complete. End of story. If you can implement something in one, it can be done in any of the others. One may be easier to manage than another for a specific project, but that is completely different than saying that it is "more powerful".

The author could use a little more CompSci theory before making such grandiose claims. I, for one, had difficulty reading further into the article once I had read that misstatement and realized that he did, in fact, mean exactly what I originally thought he said.

Mirrored, and ASCIIfied. (5)

David E. Smith (4570) | more than 13 years ago | (#253071)

Why wait for Google [google.com] to find it, just so you can read the essay in plain text? Don't! Here it is [technopagan.org] already. And since the Web server seemed a bit sluggish, perhaps in anticipation of the /. Effect, here's a mirror of the PDF [technopagan.org] original. Enjoy.

Re:CL vs Scheme (2)

TBone (5692) | more than 13 years ago | (#253072)

Why should I learn English as a whole when I can just learn American English and spelling?

Sarcasm aside...

Scheme is a very reduced subset of LISP, designed for teaching functional language programming. I'm probably wrong, but I don't believe there are any 'real' programs written in Scheme, outside of teaching examples and such.

Re:Lisp and Maintainability (2)

TBone (5692) | more than 13 years ago | (#253073)

Huh? Not liking LISP because of the parens is like saying I don't like you because you have too many freckles....

But seriously - use an editor that matches your grouping structures (parens, braces, etc). EMACS does this, as does Vim and a whole crapload of editors.

LISP is confusing. Most definitely. However, C++ and Perl were confusing to me when I first saw them, too. LISP is completely bass-ackward from every otehr language you've seen before. Where as in C and Perl, you have all these nifty notations for denoting objects and references and such, you have none of them in LISP. Why? Because LISP programming _is_ programming with objects, as opposed to programming in C or Perl, where you can program in an OO way, but OO is not inherent in the language or the syntax of the language.

My first year of college was Scheme and LISP, then another semester my senior year when I took an AI course and programmed my computer to play Mancala (my computer beat me about 1 out of 10 times, and I wrote the gamespace interpreter). When I started, I said the same thing - (What's (up (with (all (these (parens))))))! But after I started formatting my code in a way that was understandable to me, I could 'see' the program just like Neo 'saw' the Matrix and Perl Hackers 'see' JAPH's.

That being said, I would disagree with the thought that you should use LISP because it's the most powerful language out there. In fact, it's not for something like graphics programming. However, if the application you are working on can be broken down into a number of objects, and actions on said objects, then there's a 90% chance that LISP would be an excellent choice for your programming language.

CL vs Scheme (1)

Ed Avis (5917) | more than 13 years ago | (#253074)

Why should I learn Common Lisp rather than Scheme? Or why Scheme rather than Common Lisp?

LISP vs Python (1)

Eponymous Coward (6097) | more than 13 years ago | (#253075)

What does LISP have that Python doesn't?
Macros?
Is a macro similar to Python's exec() or eval() statements? Is 'macro' just another name for dynamic execution of LISP code?

-ec

Re:What IS Lisp based off? (2)

xyzzy (10685) | more than 13 years ago | (#253088)

Also, aeons ago, AutoCad used to be Lisp-based. I have no idea if it still is.

Re:what I learned in school (4)

xyzzy (10685) | more than 13 years ago | (#253089)

You seem to be using an older dialect of Lisp. I think you meant

(lisp (taught (me (to (count (parenthesis))))))

or maybe

(taught
(me)
(lisp)
(to
(count parenthesis)))

Lisp and Maintainability (2)

ArthurDent (11309) | more than 13 years ago | (#253090)

First off let me say that I don't like lisp. The main thing I don't like about it is the bizarre syntax. All those parenthesis are hard to keep straight and even.

Having said that, though, I'd like to hear a lisp zealot's view of how maintainable lisp code is. Obviously there is good lisp and bad lisp, but it seems to me that it would not be easy just by looking at lisp code to determine what exactly it does for the purposes of debugging and adding features.

What do you all think?

Ben

Interesting. (3)

grub (11606) | more than 13 years ago | (#253091)

Unfortunately the author comes across as almost a "Lisp apologist" which may turn people off from looking at Lisp.

Would anyone know if his co-author Robert Morris is the same Robert Morris (or his father) of the infamous Morris internet worm from the late 80's?

Re:competitive advantage (1)

pivo (11957) | more than 13 years ago | (#253093)

It's fun when words loose their meaning, isn't it?

Re:What IS Lisp based off? (4)

Disco Stu (13103) | more than 13 years ago | (#253095)

What is "Lisp" based off of? Is it a C++ style code or something else, and why have I not heard of it before?

Lisp is a functional programming language. Since you haven't heard of it, I'm betting you that didn't major in CS at a University. Lisp (along with ML and Scheme) is dearly loved by theoretical computer scientists.

To find sample Lisp code, just do a Google search. It is very different than procedural languages lilke C, Java, etc.

Prolly the most famous application using Lisp is Emacs. In fact, some people refer to Emacs as nothing more than a Lisp interpreter that includes some macros that are really good for text editing. Most people I know outside of academia that program Lisp do it to customize Emacs.

Best book on programming? (1)

nosferatu-man (13652) | more than 13 years ago | (#253096)

"The Structure And Interpretation Of Computer Programs," Abelson, Sussman and Sussman.

(jfb)

Re:CL vs Scheme (5)

nosferatu-man (13652) | more than 13 years ago | (#253100)

Scheme is much prettier than CL; it's breathtaking in its conceptual purity. And it's the foundation for the best book on programming ever written.

One of the strengths of CL is that it has a large and comprehensive standard library, and tons of clever bits that make a working programmer's life easier.

In other words, learn them both!

Peace,
(jfb)

Re:Lisp and Maintainability (2)

Compuser (14899) | more than 13 years ago | (#253103)

Ok, now you have me confused. The number one
area where object oriented programming matters
is GUI, precisely because GUI programs involve
"objects, and actions on said objects". Or maybe
by graphics programming you mean something like
Autocad (oh wait, it's all LISP underneath).
So what kind of graphics programs is LISP not
suited for?

Re:What IS Lisp based off? (3)

Black Parrot (19622) | more than 13 years ago | (#253110)

> What is "Lisp" based off of? Is it a C++ style code or something else, and why have I not heard of it before?

Actually, it's one of the oldest computer languages still in (semi-)common use. Vintage 1958, IIRC.

> What are some other "famous" applications that are using Lisp?

Lisp.

--

Re:What IS Lisp based off? (4)

Black Parrot (19622) | more than 13 years ago | (#253111)

> Lisp (along with ML and Scheme) is dearly loved by theoretical computer scientists.

Theoreticians do love functional languages, but Lisp is primarily popular among AI researchers.

--

Lisp is great and all but... (3)

Merk (25521) | more than 13 years ago | (#253119)

I know a bit of Lisp -- I love Emacs and wanted to be able to customize it more, so I played around with Lisp. I learned enough to do some pretty cool things, and learning Lisp has taught me a lot about programming in general...

But I'm not convinced that Lisp is the "highest level language of all high-level languages" or "the most powerful of all high-level languages". In a sense that is probably VB. It is the one that removes the programmer from the actual workings of the CPU the most. Unfortunately it's also a language that's horribly designed in a lot of ways. I think Lisp has some very powerful features like macros that other languages lack, but it loses out in other areas.

Lisp code is hard to read for most programmers, one big reason for this is that the condition in a conditional statement can be 10 lines long, and 5 parentheses deep. Because of this, finding a bug in a Lisp program could take longer than finding on in a procedural program. Secondly not many people speak Lisp. Like Esperanto, something can be wonderfully designed but if it isn't widely used it's not going to be too useful.

I think the main reason their software was so successful was that Paul Graham et al. were extremely good coders developing in a high level language they knew very well, that was well suited to what they were trying to do. This story isn't about Lisp being used for a kick-ass user interface or a 3d engine because (IMHO) Lisp isn't as well suited to those things.

As has been said many a time before -- "Use the appropriate tool for the task at hand".

Anyhow, having said all that, could someone who knows Lisp better than me explain what it is about Lisp that makes it so good for AI? I've always heard that but being pretty far removed from that field I've never seen any cool Lisp AI code.

Re:what I learned in school (2)

Aqualung (29956) | more than 13 years ago | (#253137)

Apparently it didn't teach you to count them *well*. =P

----
Dave
MicrosoftME®? No, Microsoft YOU, buddy! - my boss

Re:What IS Lisp based off? (3)

NCamero (35481) | more than 13 years ago | (#253144)

LISP is also famous to engineers as the macro language used in AutoCAD.

Re:PDF? Quit your whining... (1)

Tower (37395) | more than 13 years ago | (#253145)

Well, PDF is a lot more useful than ps in a few different ways. Acroread is a lot easier to get functioning properly on some platforms than ghostview is (not to mention the possible size redux and clarity). If I can have Acrobat Reader on AIX, with bookmarks, the ability to copy text out of a document, and know that anyone on just about every platform will have a reader for it... well, it just makes sense. #(WinPCs with Acroread) >> #(WinPCs with ps viewers). Add that to the fact that Acrobat Reader easily nests in Netscrape/Mozilla and IE, and it comes in pretty handy for most people. I avoid .ps on AIX, Linux and Windows as much as possible.

And, as the other posters already mentioned, Google caching those pdfs is really handy...
--

Re:PDF? Quit your whining... (2)

p3d0 (42270) | more than 13 years ago | (#253151)

That's because Google recently started indexing PDF files in addition to HTML.
--

competitive advantage (3)

wiredog (43288) | more than 13 years ago | (#253153)

competitive advantage against the competition

As opposed to, say, a competitive advantage against...?

Hard to believe.. (2)

GoofyBoy (44399) | more than 13 years ago | (#253154)


.. that their entire competitive edge was a programming language.

There are other factors too, like sales and reputation.

But Lisp? The reasons why given are vague.

Kewl (4)

drivers (45076) | more than 13 years ago | (#253158)

Great article. Now I actually want to learn lisp.

But I don't expect to convince anyone (over 25) to go out and learn Lisp.

Good thing I have about two weeks before I turn 26. I will have to learn quickly!

Re:Abuse! (1)

JasonAsbahr (54085) | more than 13 years ago | (#253173)

Naughty Dog's 'Crash Bandicoot' for the Playstation uses a variant of LISP, too.

Re:CL vs Scheme (1)

nielsene (58381) | more than 13 years ago | (#253179)

Structure and Interpretation of Computer Programs aka SICP by Sussman and Abelson(sp?) not to be confused with Structure and Interpretation of Classical Mechanics aka SICM by Sussman and Wisdom.

Things I love/hate about lisp (5)

nonya (65503) | more than 13 years ago | (#253191)

C++ is my first language. I'm not a lisp expert, but here's my thoughts on the language:

Things I love about lisp.
  • Macros. Because the syntax is so regular and the whole lisp system is available during macro expansion, you can extend the language in very powerful ways with macros. *THIS* is a killer feature in lisp.
  • Generic Functions. This is a generalization of virtual functions where a function can dispatch based on more than one parameter. Anyone who has used the visitor pattern in C++ knows implementing multi-dispatch in C++ comes with tradeoffs.
  • Method Combination. Before/After, Around methods.
  • Higher Order Functions
  • Metaobject Protocol
  • Efficient Compilers. Checkout CMULisp for a free advanced compiler
Things I hate about lisp.
  • Not many good libraries. I would especially like to find a good gui library. I understand there are people working on this (Free CLiM).
  • Language seems to be dying. Not many employers are interested in lisp people.
  • Typing Issues. I prefer stronger typing than lisp has. I think C++'s type system is just right. However, I understand there is no right answer to a type system. It is a tradeoff. Lisp allows some elegant tricks. For example, a pipe in lisp is built from a cons. The second element of the cons can either be another cons (the next element of the list), or a function to call to create the next element of the list. After the function is called, it (the cdr of the cons cells) is replaced with the new element. I can do the same thing in C++, but both the new cons cell and the function have to share a base class.
Just some random thoughts on lisp. BTW, I highly recommend Paul Graham's "OnLisp" if you're interested in seeing what the language can do. Other good books are: Norvig's "Paradigms of Artificial Intelligence Programming" and if you're interested in Lisp's object model try "The Art of the Metaobject Protocol" by Kiczales, Rivieres, and Bobrow.

Re:What IS Lisp based off? (2)

jonathansen (68749) | more than 13 years ago | (#253195)

Lisp (LISt Processing) is a language used in Artificial Intelligence circles. Emacs is written in Lisp.
--

Re:What IS Lisp based off? (2)

jonathansen (68749) | more than 13 years ago | (#253196)

According to my CS prof, LISP == Lots of Insane, Silly Parentheses.
--

don't forget chip design tools ... (1)

taniwha (70410) | more than 13 years ago | (#253198)

quite a few commercial products are based on lisp/scheme and provide the ability to load/run your own code within them (as proof of concept I offer the scan insertion tool I wrote a few years back that - gack - ran something like perl to scheme (run in router) to perl) - like all real hacks written under tapeout pressure as a stopgap and used for the following 5 years because it still worked as well or better than the vendor's :-)

Lisp predates C ... (2)

taniwha (70410) | more than 13 years ago | (#253199)

and of course C++ ... it came out of MIT in the early 60s and is a great example of what gets designed when people have no preconceptions of what they should be doing (or in this case what a programming language should be or should look like).

LISP is a great medium for learning abstract thinking/programming - I've always thought of it as being a bit like 'programming backwards' (not necessarily a bad thing - just a different mindset) - but that's just my C-centric world-view

LISP used in the "real world"??? (1)

dimator (71399) | more than 13 years ago | (#253200)

It's hat-eating time for me...


--

Re:Interesting. (5)

alispguru (72689) | more than 13 years ago | (#253210)

Would anyone know if his co-author Robert Morris is the same Robert Morris (or his father) of the infamous Morris internet worm from the late 80's?
Yes, he means the Robert T. Morris of Internet worm fame. In a talk Graham gave at the 1998 Lisp Users and Vendors conference, he even joked about this, saying something like "remember when you do anything at Yahoo Store, your data is being handled by code written by RTFM".

Yeah but... (3)

selectspec (74651) | more than 13 years ago | (#253213)

Look, I love Lisp, and with it I can get my emacs to do wonderful things. However, there is a major drawback to using a relatively obscure language for mainstream application development. Fewer third party libraries will be available in Lisp. This means that you'll have to do a great deal of work from scratch either porting, patching or layering libs into your lisp framework. Let's face it. Also, your code will potentially suffer from interoperability problems unless you are extremely careful.

Re:CL vs Scheme (1)

Slump (92442) | more than 13 years ago | (#253232)

The first couple of version of Art Technology Group's Dynamo application server were written in Scheme. Then they switched to Java.

Any karma whores out there... (2)

TopShelf (92521) | more than 13 years ago | (#253233)

who can post a few links to good Lisp reference sites?

factual inaccuracy in article (1)

egomaniac (105476) | more than 13 years ago | (#253240)

Not relevant to Lisp, but the article contains a blatantly inaccurate statement that Yahoo does not have server-side Java code.

I find this rather amusing, considering that I work for Yahoo as a server-side Java programmer, and I've been here for years. My team has probably over a hundred thousand lines of server-side Java code at the moment.

don't get too excited about this... (2)

egomaniac (105476) | more than 13 years ago | (#253243)

Disclaimer: I work for Yahoo!, albiet not in the Store group. My opinions do not necessarily represent those of my employer.

Okay, with that out of the way -- yes, we have a little bit of Lisp code here. No, this was not a good idea, and no it is not a good way to get rich in the future. I have it on good authority that every single scrap of Lisp code we have is quickly being rewritten from scratch in C++, because there are so few engineers competent in Lisp here (read: zero).

I realise the hype is that you have free choice of languages and can write code in whatever works best. The sad reality is that there is a hell of a lot more to languages than just a different syntax, and it represents a tremendous investment of resources to become truly competent in a language.

Just as you would be irritated with your web site designers for dropping into Spanish because "Spanish had a better idiom for saying that -- hey, what's the big deal? It's just a different language", use of programming languages in the Real World is often tightly constrained by the fact that not everybody knows every language.

Usually when you have some lone rebel writing code in Lisp, it's because, well, he was a lone rebel. He could have written it in Sanscrit if he wanted to, but that doesn't make it a good idea. And, even though he got lucky, it wasn't a good idea -- because, as I said, all the code is being scrapped.

Take this article with a *very* large grain of salt, please.

Re:What IS Lisp based off? (2)

fractaltiger (110681) | more than 13 years ago | (#253249)



I admire Lisp for its advances as a symbolic manipulation of concepts while encapsulating all the object typing. I, however, have to say that many computer science majors have renounced CS in my small liberal arts college because they didn't find lisp useful or easy to grasp.

I hope not to sound off topic since Zach's post can branch into what I wanna say.

The intro level Lisp doesn't seem as encouraging in terms of opening people's minds to functions. I have recommended the CS department to teach C++ as intro and *then* Lisp. I find that higher level languages are better for learning CS than languages *based* on recursion and non-obvious return types in higher level functions --which students don't see in their highschool. All they know is how to match parenthesis for math, but they never see 8 parenthesis in a row, I bet :)

A function that takes another function seems to me like a disastrous thing to teach a 101 student who has *never* taken CS till the college level but has some hopes as a prospective major. In C++ class, higher level functions make more sense, and does the whole paradigm of programming to the intro student. List should be a powerful language used once you have a grasp of basic data structure concepts and program design.

Re:Interesting. (1)

ccf (116263) | more than 13 years ago | (#253251)

the author comes across as almost a "Lisp apologist" which may turn people off from looking at Lisp.

I disagree--I think he makes a pretty strong argument in favor of Lisp. Makes me want to start reading up on Lisp.

I think also the more important point he makes is that we often get stuck in the mode of thinking that goes along with whatever language we are most comfortable in. Once x language worked well in solving y problem, we tend to think it must be best for solving every problem. But the point he makes is to take a step back and look at the languages out there and keep an open mind.

Re:Yeah but... (1)

ep385 (119521) | more than 13 years ago | (#253253)

The part about third party libraries just isn't true. Ever since the 1980's Lisps (beginning with Franz Lisp) have had the ability to link to libraries written in other languages. Thus all libraries written for C programmers became libraries for Lisp programmers. Since Lisps usually offer an interactive interface, you can load in C libraries and interactively call functions in them. There are now interfaces to Java VM's as well and once again not only can you call Java functions form Lisp and vice versa, but you can interactively call Java functions and view the results. Lisp has become the ultimate interactive interface to functions normally accessed in the slow compile-link-run manner.

I can't stand articles like this (2)

davidb54 (120923) | more than 13 years ago | (#253262)

There's nothing wrong with having a favorite programming language, but why do people so often have to claim that their personal favorite is objectively superior to all other languages? Does it ever occur to these people that a large part of the reason they feel this way may have something to do with the fact that they USE this language more than the others, and are hence more competent at programming it than they are at the others (or vice versa)? And that this fact inevitably makes it impossible for them to have an unbiased view of the programming language landscape?

That prejudice alone is perhaps forgivable, but the logic used to support the claim - in particular, the reference to their use of Lisp macros - is laughable. Paraphrasing: "We used macros for 20-25% of our code, and Lisp macros are hard to write and can do things you can't easily do in other languages. ERGO, 20-25% of our application did things other languages can't do and was thus beyond the capability of our competitors to implement.". "I encourage you to follow that thread", the author exhorts. Sure, I'll follow that thread. I'll follow that thread right to where it ends in a frayed, tattered mess at the foot of a giant billboard that says, "Hey guess what? It's an online store builder, and that ain't rocket science. Calm down and save the Aikido speech for the choir, because they'll listen and nobody else will.". The real reason these guys did well is simply that they were good, fast programmers and their competitors were not. It has nothing to do with Lisp. Had they been faced with a team of Perl hackers of equivalent skill to their Lisp mastery, things would have been more interesting.

Re:What IS Lisp based off? (1)

jallen02 (124384) | more than 13 years ago | (#253264)

Scary, that you would mention Emacs, and Artificial intelligence so close to each other. No more Emacs for me..

Jeremy

Intriguing Read... (3)

jallen02 (124384) | more than 13 years ago | (#253267)

Im not wure who wrote this but this was one of my first turn on's to functional programming languages.

For the link paranoid.
http://www.naggum.no/worse-is-better.html

Very cool reading.



huh? (1)

Lord Omlette (124579) | more than 13 years ago | (#253268)

"It was in fact the first big end-user application to be written in Lisp, which up till then had been used mostly in universities and research labs."

Crack dot com's Abuse? Naughty Dog's Crash Bandicoot?

Peace,
Amit
ICQ 77863057

Re:What IS Lisp based off? (1)

ElectricMidnight (125065) | more than 13 years ago | (#253269)

We just finished learning about LISP in my college programming languages class. It's a functional programming language developed in 1959 as an alternative to imperative languages like FORTRAN, which didn't support LISt Processing.

LISP was designed at MIT for AI research, and was at the forefront of functional programming. LISP is based on Lambda Calculus and is controlled via recursion and conditional expressions.

Common LISP [sourceforge.net] is a contemporary version of LISP available for UNIX and Windows systems (Debian users $ apt-get install clisp )

--jason

Re:"first Web-based application"? (2)

stilwebm (129567) | more than 13 years ago | (#253280)

The Xerox map server was running in '93, and it was more technically interesting than any web store.

But which type of project was more lucrative?

Re:Any karma whores out there... (4)

ekrout (139379) | more than 13 years ago | (#253285)

There's a great site with tons of links and info on Lisp right here [umass.edu] .



Re:Interesting. (5)

The Pim (140414) | more than 13 years ago | (#253287)

Would anyone know if his co-author Robert Morris is the same Robert Morris (or his father) of the infamous Morris internet worm from the late 80's?

Yes it is the same Robert Morris, but for Pete's sake, don't mod me up so everyone knows!

PDF? Quit your whining... (1)

clary (141424) | more than 13 years ago | (#253288)

...there is a postscript link too.

A useful language. (1)

PeaNUTZ (143211) | more than 13 years ago | (#253292)

The part I love about lisp is:

(defun do-everything-you-ever-wanted ())

Of course, the implementation is left as an excercise to the reader.

Re:Any karma whores out there... (3)

PeaNUTZ (143211) | more than 13 years ago | (#253293)

A good start is Association of Lisp Users:
http://www.alu.org

And a couple of other:
http://www.cons.org
http://www.franz.com
http://www.xanalys.com

Lots of success stories (2)

lispbliss (146952) | more than 13 years ago | (#253295)

Check http://www.franz.com/success/ for a whole bunch of success stories from users of just one Lisp implementation.

Interesting Lisp Papers (2)

lispbliss (146952) | more than 13 years ago | (#253297)

Pride and Prejudice: Four Decades of Lisp

http://kmi.open.ac.uk/people/snw2/papers/prejudice /prejudice.html [open.ac.uk] Floating Point Performance of Common Lisp

http://members.home.net/vogt/fft-paper.html [home.net] John McCarthy's Home Page (the creator of Lisp)

http://www-formal.stanford.edu/jmc/ [stanford.edu]

Extreme Rapid Development (3)

lispbliss (146952) | more than 13 years ago | (#253298)

Peter Norvig (Division Chief, Computational Science at NASA) recently reviewed 4 Dynamic environments and Lisp ranked _very_ highly. Here is the review:

http://www.sdmagazine.com/articles/2001/0103/0103e /0103e.htm [sdmagazine.com]

Lisp as an Alternative to Java (4)

lispbliss (146952) | more than 13 years ago | (#253299)

http://www-aig.jpl.nasa.gov/public/home/gat/lisp-s tudy.html [nasa.gov]

Blurb... "We have repeated Precheltís study using Lisp as the implementation language. Our results show that Lisp's performance is comparable to or better than C++ in terms of execution speed, with significantly lower variability which translates into reduced project risk. Furthermore, development time is significantly lower and less variable than either C++ or Java. Memory consumption is comparable to Java. Lisp thus presents a viable alternative to Java for dynamic applications where performance is important."

got to love the lisp (3)

slashdoter (151641) | more than 13 years ago | (#253304)

"wrote an article that explains how he used Lisp"

yeths, we all love theth lispths, some timeths iths helpfull in a cthndy Brady kind of way


________

Uthing Lithp? Thath Thilly!!! (1)

-=OmegaMan=- (151970) | more than 13 years ago | (#253305)

Howth that thupothed to beat the competithion??? ;)

Beating his own drum? (1)

Quixote (154172) | more than 13 years ago | (#253306)


I think Paul Graham is tooting his own horn a bit too much here. Lisp was 35 years old when he used it in ViaWeb. His claim that "It was in fact the first big end-user application to be written in Lisp,which up till then had been used mostly in universities and research labs." is patently wrong. Has he forgotten about Emacs? When I was a lowly grad student, we used to work on Lisp Machines [tunes.org] (a TI Explorer and a Symbolics Lisp machine). IIRC, their whole OS was written in Lisp.
So, for Mr. Graham to claim a first here is definitely hype.

Re:What IS Lisp based off? (1)

Joe_Camel (161171) | more than 13 years ago | (#253316)

As far as I know, it isn't based off of anything. You haven't heard of it because you are probably in the "under-25" crowd. LISP isn't really good for much, outside of artificial intelligence or other heuristical analysis-type applications. AutoCAD used to make extensive use of LISP for user-written scripts; in fact, it still has built-in LISP functionality, but as with most other CAD packages, those functions have probably been translated to C by now....

Re:Things I love/hate about lisp (2)

vanicat (162345) | more than 13 years ago | (#253322)

So you should try ocaml + camlp4 : ocaml is a functional language (like lisp) with a very powerful Modules system and object system, a very strong, and powerful type system. It also have a quick compiler that make very quick program. And camlp4 add to all this a very powerful macro language, very near to the lisp one.

Re:What IS Lisp based off? (1)

tykay (165793) | more than 13 years ago | (#253323)

Well there is, this one [gnu.org] . I think it's pretty famous ; )

It's pretty simple: just "car", "cdr" and parenthesis. Heh, heh. You can do amazing stuff if you get used to thinking right.

Re:What IS Lisp based off? (3)

SquadBoy (167263) | more than 13 years ago | (#253326)

:LISP: /n./ [from `LISt Processing language', but mythically from `Lots of Irritating Superfluous Parentheses'] AI's mother tongue, a language based on the ideas of (a) variable-length lists and trees as fundamental data types, and (b) the interpretation of code as data and vice-versa. Invented by John McCarthy at MIT in the late 1950s, it is actually older than any other {HLL} still in use except FORTRAN. Accordingly, it has undergone considerable adaptive radiation over the years; modern variants are quite different in detail from the original LISP 1.5. The dominant HLL among hackers until the early 1980s, LISP now shares the throne with {C}. See {languages of choice}. All LISP functions and programs are expressions that return values; this, together with the high memory utilization of LISPs, gave rise to Alan Perlis's famous quip (itself a take on an Oscar Wilde quote) that "LISP programmers know the value of everything and the cost of nothing". One significant application for LISP has been as a proof by example that most newer languages, such as {COBOL} and {Ada}, are full of unnecessary {crock}s. When the {Right Thing} has already been done once, there is no justification for {bogosity} in newer languages.

Re:What IS Lisp based off? (2)

wishus (174405) | more than 13 years ago | (#253328)

I agree with you completely. Lisp & Scheme opened my mind like a psychadelic drug.

wishus
---

Abuse! (5)

dark_panda (177006) | more than 13 years ago | (#253333)

I'm not sure how many people out there will remember, but many moons ago, back around post-Doom Year 1 or so, a non-id software company called crack-dot-com released a nifty side-scroller called Abuse. Not only did Abuse feature a cool mouse-keyboard combo for aiming/moving and some cool level designs, it also featured a complete set of game editing utilities and an honest-to-God LISP interpreter that let you completely reprogram the game. I can't think of too many games that feature their own LISP interpreter, unless you think emacs is fun and difficult enough to qualify as a game. J

What IS Lisp based off? (3)

blitzrage (185758) | more than 13 years ago | (#253337)

What is "Lisp" based off of? Is it a C++ style code or something else, and why have I not heard of it before? What are some other "famous" applications that are using Lisp?

Re:CL vs Scheme (1)

metafoobar (195077) | more than 13 years ago | (#253340)

Scheme is more orthogonal as a language . It is a VERY small language, with only a few special forms, and a (relatively) small function library. The Scheme standard is about 50 pages together with implementation suggestions and examples. Common Lisp standard is ~1000 pages last time I looked. Scheme has no syntactic sugar, and only 4 special forms (set!, quote, lambda, and if) with others that are representable in terms of these 4. Whew. What a pantload. I guess the point is if you want to learn some LISP to understand the power of the language (and powerful it is), learn Scheme. If you want a language with the kitchen sink, learn Common Lisp.

Re:What IS Lisp based off? (2)

killthiskid (197397) | more than 13 years ago | (#253359)

Yes, you can still use Lisp in AutoCAD. Although, as of version "2000", it now has MS VBA built in too... take that for what it's worth.

Re:CL vs Scheme (1)

JMan1 (200342) | more than 13 years ago | (#253362)

What book?

Know your tools (2)

dropdead (201019) | more than 13 years ago | (#253363)

The article does point out one thing that seems to get lost in the computer world. Better to use a tool that does what you need than to use a tool that does what you want. Most want easy to use, but how often have we learned good enough isn't.

Re:Interesting. (3)

agentZ (210674) | more than 13 years ago | (#253368)

Would anyone know if his co-author Robert Morris is the same Robert Morris (or his father) of the infamous Morris internet worm from the late 80's?

Doubtful. Robert Morris Sr. had a long career with the NSA and is now rather old to be working on a start-up company. His son, Robert Tappan Morris, has stayed in academia AFAIK. Last I heard he was an Assistant Professor at MIT [mit.edu] .

(Although if the latter was involved, perhaps it just goes to show that the original Internet worm was caused by mis-matched parens?)

Re:What IS Lisp based off? (1)

Courageous (228506) | more than 13 years ago | (#253371)


Where'd you get this definition, BTW? Looks
like a cool reference.

Re:CL vs Scheme (3)

Moghedien (237619) | more than 13 years ago | (#253374)

Or why not learn Caml [inria.fr] ? It's fast [bagley.org] ! Yay.

Should Read: "Using Lisp, Perl and C" (2)

quam (240063) | more than 13 years ago | (#253375)

The footnote of page one reads:
"1.Viaweb at first had two parts: the editor,written in Lisp,which people used to build their sites,and the ordering system,written in C, which handled orders. The first version was mostly Lisp, because the ordering system was small.Later we added two more modules,an image generator written in C, and a back-office manager written mostly in Perl."

It is very rare to rely on only one language for any application on the Web. I think this article, other than the provided footnote, mistakenly leads a reader to believe that the entire application (Viaweb) was written in Lisp.
(write-line "Hello, world.")

Re:CL vs Scheme (1)

lowflying (252232) | more than 13 years ago | (#253380)

And it's the foundation for the best book on programming ever written.

And that book would be....?

Dave

Re:Lisp and Maintainability (1)

hding (309275) | more than 13 years ago | (#253386)

I don't know if I qualify as a Lisp zealot, but I primarily use Lisp for my work, so maybe I'm close enough.

It's actually really easy to keep the parentheses in order. Just use a reasonable editor. And in other languages I have trouble keeping the bizarre syntax with all of those (){};:,'"[]{}|&^%#$@!->s straight. (Okay, maybe I don't have that much of a problem, but perhaps you get the point.)

There's no a priori reason that it should be harder to understand Lisp code (assuming that one knows Lisp and that the code is decently written) than it would be to understand, say, C code (assuming that you know C and the code is decently written). The issues are essentially the same: are things well named, are functions sufficiently short and focussed, etc. I'd say debugging in general is easier, but this is because of the interactive nature of Lisp rather than the language itself; write a function, go to the listener and test it, refine until it works correctly.

It is true that in some respects the idioms one uses to program in Lisp are different. So one does need to expend a little effort to understand those idioms; once this is done, however, one may find that Lisp code is even clearer than other code.

Re:Lisp for OSX? (1)

hding (309275) | more than 13 years ago | (#253387)

MCL [digitool.com] is the most popular Mac environment, it seems.

Uses of Lisp (3)

hding (309275) | more than 13 years ago | (#253391)

LISP isn't really good for much, outside of artificial intelligence or other heuristical analysis-type applications.

Really? Discounting the fact that the article linked to in the story demonstrates a quite non-AI use for Lisp, there are others as well. I, for example, use it for business programming.

Re:What IS Lisp based off? (5)

hding (309275) | more than 13 years ago | (#253392)

Have you actually used a Lisp environment in the past twenty years or so? Every major Common Lisp implementation has a compiler, and at least one doesn't even have an interpreter. What specifically about the condition system do you find inadequate compared to other languages? It definitely offers support at a level at least as high as something like C++ or Java.

As far as doing real work in functional languages, perhaps you ought to ask the Erlang [erlang.org] people about that. Or check out this [bell-labs.com] link.

Re:First? (1)

sleeper0 (319432) | more than 13 years ago | (#253397)

Yeah, the claim of the first web based application in the summer of '95 is obviously hysterical. How convenient it is to have such a selective memory when we are recounting our past accomplishments.

Some of my notable past accomplishments:

  • Wrote the first video game in a late night hacking session in 1989
  • Developed a completely anonymous digital cash system... first in the world!... in 1997.
  • And finally, I was the first person to figure out how much smarter i was than the rest of the world and write a paper about it... in 1999!
Apparently we are supposed to trust this guy that LISP is such a great business language... because (gasp!) he was able to sell out in the great business school rush to the Internet of the late 90's. Well, congratulations Paul, but if we all wrote applications in whatever Yahoo was buying, lets see, we'd be writing in C, C++, Perl, Python, PHP, Java, shell, LISP.... Oh

Re:What IS Lisp based off? (2)

freezingD (321738) | more than 13 years ago | (#253398)

This definition was lifted (without permission I assume) from "The New Hackers Dictionary" by Eric Raymond and Guy Steele Jr. (Unless the poster is actually one of these men).

Diction (1)

simpgeek (414554) | more than 13 years ago | (#253419)

Please, please, please stop it, everbody. Lisp is not infamous. The only things seen on slashdot threads that could be considered infamous are Microsoft, the FCC and Cowboy Neal. infamous adj. 1. Having an exceedingly bad reputation; notorious.

Re:Lisp and Maintainability (4)

pavonis (415389) | more than 13 years ago | (#253420)

I certainly don't qualify as a LISP zealot, but for anything involving work with strings (an HTML-writer would be a pretty good example), many kinds of artificial intelligence and logic, databasing, what-all- any sort of more high-level task- LISP can be extremely straightforward. Often the logic of what you are doing is made extremely transparent, which can both make maintaining it easy, and reveal possible efficiencies that might otherwise be missed.

While there are more libraries and better compilers for LISP than is commonly realized, it is relatively rarely used for anything directly touching hardware or demanding high performance. But it is very easy to tie in C or assembler code to deal with such things.

what I learned in school (2)

redcup (441955) | more than 13 years ago | (#253422)

Lisp(taught(me(to(count(parenthesis))))))))))))))

RC

Re:"first Web-based application"? (1)

haruharaharu (443975) | more than 13 years ago | (#253423)

Money's nice and all, but is that all you really care about?

Emacs Abuse! (1)

mrericn (446447) | more than 13 years ago | (#253426)

You know, I remember when that came out, but I swear I remember it being an emacs variant. I really had no idea that emacs wasn't abuse...

Re:Yeah but... (2)

koglerje (448388) | more than 13 years ago | (#253430)

Just indent your code correctly. many editors will help you and match your parens. Think about it, XML has twice as many 's as LISP's ()'s noone has a problem with that
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>