Slashdot Mirror


Paul Graham: Hackers and Painters

larsberg writes "Another wonderful article from Paul Graham on hackers, their lifestyle, and their tools. It's entitled "Hackers and Painters", and provides a great description of how the great hackers write code. The article is definitely worth a read, especially for those who have an inkling that any field that has to place the word "Science" in its name probably isn't really a science after all."

41 of 417 comments (clear)

  1. Blurring the lines by John+Paul+Jones · · Score: 2, Insightful

    Safecracking is an "art" too.

    I guess it depends on your inital reaction to the term hacker. It should be someone who hacks code, vs. a cracker that willfully circumvents security measures and breaks into a network. Unfortunately, you need to consider the source of the quote to get at the real meaning.

    --
    Feh.
    1. Re:Blurring the lines by dsplat · · Score: 2, Insightful

      go read a newspaper and you'll see that I'm right

      Every time I read a newspaper on any topic I know something about, I find more errors than facts. I don't expect them to understand technical areas that reporters never learn. But I catch them misquoting sources, misspelling names and getting people's jobs titles wrong when all the correct information is available on a company web site within easy cut-and-paste range. I wouldn't take a newspaper as the final answer on any subject.

      --
      The net will not be what we demand, but what we make it. Build it well.
  2. Is it just me? by dreamchaser · · Score: 2, Insightful

    Is it just me or did I just waste 5 minutes of my life reading an overly verbose article based on a flawed analogy? Painters do not create something functional; hackers (read: programmers) do. Sure, code can be 'beautiful' to those who can appreciate it, but is it more art than science? Given the deterministic nature of digital computers, I think not. Are there creative elements to coding? Sure. That doesn't mean hacker==painter.

    Just my ten cents. Your milage may vary.

    1. Re:Is it just me? by moogla · · Score: 2, Insightful

      He (the article author) underestimates the scientific mind and determinism of some programmers.

      Many of the best programmers I know are wont to draw up proofs and diagrams on paper before sitting down to code. Then as they evolve their code they do tests, draw more conclusions, and figure out what needs to change next.

      If they went as far as to document that whole cycle, they would be 80% of the way to a research paper. ::shrugs::

      It's an art, but so is writing elegant, easy-to-understand proofs. It's an art, as much as designing a new car is to engineers.

      --
      Black holes are where the Matrix raised SIGFPE
    2. Re:Is it just me? by Anonymous Coward · · Score: 3, Insightful
      Architects produce something functional, yet architecture is considered high art. The same goes for gardeners, interior decorators, portrait painters (originally) and most other art forms, although their original use may now be defunct.

      Would you consider any of these people to be scientists or engineers? Does the fact that their art is useful have any bearing on that question? Does the deterministic nature of gravity and paint make them empirical investigators? The average architect probably knows a lot more science than the average hacker.

    3. Re:Is it just me? by hibiki_r · · Score: 5, Insightful

      He's not referring to all programming as "hacking". In fact, the article mentions how most of the programmers in the corporate world do jobs that have absolutely nothing to do with his concept of hacking. Hacking has a heavy dose of design on it. In fact, Graham argues that design happens to be more important than the actual implementation, it just happens that the implementation gets done as you design.

      On most cases, coding to a design, instead of coding to user specs, restricts the task so much that there is little chance of creativity. That's not Hacking at all. On the other hand, desigining a +100,000 LOC complex, flexible system, designing it's data structures and object relationships, is so much more complex than "grunt coding" that I think it is way closer to architecture than it is to building a brick wall.

      If you belive that all design/code is more like building a house than paiting it's just because you've not seen a truly brilliant, innovative design yet. I hope you're lucky enough to see one, or better yet, create one.

    4. Re:Is it just me? by Anonymous Coward · · Score: 1, Insightful

      By not noticing the Read More of this Article link.

    5. Re:Is it just me? by Lurch00 · · Score: 5, Insightful
      No, it's not just you. I think a lot of self-labeled hackers have a romantic notion of being artists, probably in part because that's an acceptable excuse for eccentricity. You hit it spot on when stating software was functional versus paintings. I think that coding is mostly creative (though not really artistic) in reality. There is significant math behind it, but I think that math is just a language to communicate certain ideas. The people who do actual computer science typically aren't the people doing the implementation. Likewise, in traditional math its not the mathematicians doing the actual implementation work, it's engineers and tradespeople.

      If you really want to pick an analogy, I'd pick carpentry. Not finish carpentry, as that's too artistic on the scale, but rather functional carpentry. For instance, a carpenter with no real experience and no tools can build a table out of what they find lying around. Some tables have four different legs of four different sizes, one's attached by childrens paste, and another with a high strength steel bolt. See most OSS packages for the coding analogue. A better carpenter has a few tools and makes a better structure, giving a more functional table. Better programs stand up well provided you embrace their rigid design criteria. A master carpenter might the best looking table and design it such that he could come back and add drawers later or replace it with a bigger top or taller legs.

      Carpentry, like software, is mostly about figuring out what pieces you'll need and how to piece them together. That's the essence of engineering. Those who study traditional engineering disciplines often scoff at the idea of software engineering because it violates the traditional way of doing the engineering before construction. That hasn't always been the case, and even today some software is developed by traditional engineering techniques. That's not an invalid way to do it, although it is more expensive. Software engineers are embracing the engineer-on-the-fly paradigm, and that's a new idea that nobody really knows how to teach.

      In carpentry as in software, the engineering and fabrication are distinct and separable. I wouldn't consider it unlikely that in the future software architecture (engineering) will be done by a different group of people than the coding (fabrication). This is starting to show up now with many companies doing their architecture in UML and then sending it overseas for actual implementation.

      This has run way longer than I wanted, so I'll stop here.. Just a few thoughts on a slow morning.

    6. Re:Is it just me? by Tim+Fraser · · Score: 2, Insightful

      I think you are right in pointing out that there are limits on how far you can take this hacker==painter analogy. However, I felt that the article contained some amusing insights, nonetheless.

      I've spent the majority of my (admittedly short) career turning DARPA grants into math-envious papers, just as the author described.

      A couple of years ago, I did step back and wonder if what I was doing was really science. I didn't seem to fit the idealized notion of a scientist that I learned about in high school: I didn't seem to be forming hypotheses about some already-existing aspect of the universe and testing them in a methodical way. And I didn't have a labcoat.

      I spent most of my time hacking around, following my intuition, trying to make the computer do interesting things. I also experienced the sometimes-on, sometimes-off rollercoaster of inspiration that the author described.

      So, some of the aspects of the author's painter-analogy seemed apt, at least in my case. Your mileage may vary, of course.

      Anyways, now I've got to go convince my boss that it would be good for our project if I went and spent a day at the art musem! ;^)

      - Tim

    7. Re:Is it just me? by pileated · · Score: 2, Insightful

      Though I'm a painter who's gone to programming and done it for last 5 years or so I've always thought programming closer to carpentry than painting. But the reason for that is that carpentry is a craft and painting no longer is. Both can be art. But painting has divorced itself from it's utilitarian roots and thus is no longer a craft, much to its detriment. And actually to the greater number of people who might enjoy it if it was.

      But my point is that progamming is a craft just like carpentry is and painting was. All crafts can rise above the mundane but serviceable to the artistic. In carpentry that means understanding the nature of your materials, all of the possible joints and why you might use them. In painting this was once understanding your materials (when they were a bit more traditional and fewer than they are now) and also learning about drawing the human figure, lighting, perspective, etc. In programming it's learning some basic algorithms etc. But all of these crafts allow artistry and it's artists who move the fields forward. Artists do love to create beautiful things, just as the article points out. And those that do almost always inspire the most talented younger members of that parcicular field. That's because it's beauty that is compelling, not knowing how to make a dovetail or an infinite loop.

      Okay, I'm getting off topic. So let me just summarize. Programming really is like a craft but all crafts are capable of being art and it's the art of it that makes it compelling. Painting was once such a craft but has gotten away from its utilitarian roots so looks just too artsy to some people. So they choose carpentry as a better analogy. In the end though, like the article says, it's the art that counts.

      And that's why the best programmers, carpenters, painters are in it.

  3. Painting isn't art? by Anonymous Coward · · Score: 1, Insightful

    Perhaps the reason he doesn't consider it engineering is that he is a hacker rather than someone who does things methodically?

    Given a task to build a bridge, a "hacker" would run out and start sticking things together and seeing if it works, and patching cracks along the way. An engineer would plan and research, test and model, then build the bridge.

  4. really? by tomstdenis · · Score: 1, Insightful

    Admitedly I haven't RTFA but ...

    This whole "hacker lifestyle genre" thingy is a bit too dramatizied by the geek wannabes. Go out and actually try to write software that must be supported and updated. That's hardly "movie-worthy" lifestyles that people think is useful.

    Put it this way. If I were in a position to hire people I'd only hire those that look down on hackers for the sole reason hackers are not responsible software developers.

    --
    Someday, I'll have a real sig.
  5. Re:Computer programming is NOT an art. Get over it by Anonymous Coward · · Score: 2, Insightful

    Is architecture an art? At what point does a structural engineer become an architect, or a civil engineer become a landscaper?

  6. Re:hackers and painters? by cruff · · Score: 5, Insightful

    I don't know any real hackers that speak like that either, just the wannabes.

  7. The Art of Computer Programming by Xiver · · Score: 5, Insightful

    Programming / Hacking is neither and art or a science and yet it is both. If you don't program you probably would not understand, but if you've ever implemented your own b-tree in an application, you'll probably agree. Most likely, whether or not you agree depends on what type of software you have written in the past.

    Art and science are probably closer than most people believe. Leonardo da Vinci painted some of the most astounding scenes ever painted; yet, he also studied science, literature, and the Christian bible. Many mathematicians would say that math is an art, heck there are probably some artists that believe art is a science.

    Knuth says that computer programming is an art, but I dare you to read his books and claim they are devoid of science.

    In short... It's all depends on the application.

    --
    10: PRINT "Everything old is new again."
    20: GOTO 10
    1. Re:The Art of Computer Programming by DrCode · · Score: 2, Insightful

      Yes, I do understand. I've been programming for years, but never did anything 'artistic'. A few years ago, I managed to write a small novel. And it struck me that writing fiction was really a similar activity to writing software. The main plot of a novel is like the overall design of a program; the subplots are like subroutines; and the classes are like the characters. Both activities take a good amount of planning, attention to detail, consistent style,... and lots of typing:-)

  8. Re:Computer programming is NOT an art. Get over it by zakezuke · · Score: 3, Insightful

    If it evokes an emotional reaction, it's ART!

    Using microsoft products evokes a raticaly diffrent reaction then using let's say an Apple product, or a Linux product.

    Why would it be insulting for art and science to be the same thing. A good deal of science goes into art, and art into science.

    --
    There is no sanctuary. There is no sanctuary. SHUT UP! There is no shut up. There is no shut up.
  9. Arts and sciences by Anonymous Coward · · Score: 1, Insightful

    As a musician as well as a wannabe hacker, I have to say the comparison of computer science and art is not completely bogus, although in this case very rambling. The problems you run in to are remarkably similar: Good ideas you can't find a way to actually make work, periodic epiphanies about why something isn't working, stuff like that.

    Music in particular I like to look at as rigid logic in a system of your own definition. When hacking your doing the same thing, making up rules and leading them to their logical conclusion to produce the prettiest results possible.

    Another thing to note is that different folks have different aesthetics when it comes to software. For instance, MS wants one gigantic integrated piece of software that you just turn on your machine and it works and does everything you need. GNU wants thousands of small programs with about 1500 command line options that you can pipe together yourself. Just like artists have different ideas about what works, so do programmers.

  10. Re:Computer programming is NOT an art. Get over it by djtrippin · · Score: 2, Insightful

    Engineering isnt an art huh? So the things we design for the masses dont play on emotions when we sell them? Tell me that cars dont have an emotional role in most peoples lives, or that the old majestic buildings dont have a symbolic artistic beauty to them.

    --
    Choose wisely you must...
  11. Re:Computer programming is NOT an art. Get over it by MartinG · · Score: 2, Insightful

    To make an analogy between programming and painting is a mistake, because "computer programming" is more like "putting paint on a canvas"

    Neither is an art in itself, but a programmer or painter _can_ use their tools to create art.

    In other words, saying "computer programming is art" is wrong just as saying "paint and brushes are art" but a painting or a program can both be art.

    --
    -- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz .@adgimnoprstu
  12. This is a pointless exercise by paiute · · Score: 3, Insightful

    This is nothing more than one of those compare and contrast essays which one has cranked out hundreds by the end of high school. Given any two professions, one could derive the same relationships: e.g.,

    "When I finished grad school in blank I went to blank school to study blanking. A lot of people seemed surprised that someone interested in blanks would also be interested in blanking. They seemed to think that blanking and blanking were very different kinds of work-- that blanking was cold, precise, and methodical, and that blanking was the frenzied expression of some primal urge.

    "Both of these images are wrong. Blanking and blanking have a lot in common. In fact, of all the different types of people I've known, blankers and blankers are among the most alike."

    --
    If Slashdot were chemistry it would look like this:Cadaverine
    1. Re:This is a pointless exercise by no_opinion · · Score: 4, Insightful

      I disagree. It seems like there is a stigma against the "hacking method" of development in the large software engineering companies. I totally related to the hacking mentality he described, and I have felt (since college) that this is not the "right way" to do things. I learned to hack in jr. high and high school, while college taught me rigorous design and implementation methods. These methods are anti-hacking because they focus on a lot of up-front paper design and process, whereas the hacking mentality involves working out the problem in code on-the-fly and refining over time. It's not unlike roughing out a sculpture in clay and progressively adding detail and changing things here and there as you go rather than working out the sculpture ahead of time.

      So the point of this is that he is trying to say that hacking is a legitimate technique that has advantages over the traditional, slower and possibly less flexible, software engineering moethods and he's doing it by drawing parallels to how artists work. I think the truth is that you need a little of both.

  13. There is place for everybody by dorfsmay · · Score: 5, Insightful

    "Perhaps one day "computer science" will, like Yugoslavia, get broken up into its component parts"

    This is already the case. There are people specializing in writing comp-sci software (compiler etc...), there all those double-majors who write software for their other degree specialization (software for given domains like geophysical etc...), there are people who specialise on the ergonomic of the GUI, etc....

    This isn't that different from people designing a car, a thing that is both functional and can be beautiful. It takes engineer and designer to make a car.

    Now don't tell me "I am the creative type", I am writting software, science doesn't apply to me. I once work in a software lab where the lab had been producing software for several decades. One day the person in charge of QA convinced the person in charge of development to bring some quality type tools like cyclomatic analysis (McCabe etc...). A few engineer came up with that argument that they were producing art, that a software couldn't / shouldn't judge them.

    Well, they did two things: They ran McCabe against a lot of their software, some that have been in the market for decades, and there was a direct correlation between the "level" the tool was finding and the number of patches applied to the piece of software. Then they analysed code per current programers: The artsy types were writting complex code that the QA dept. kept sending back !!

    Conclusion, there is a place for "out there" artsy type to inovated in a small shop, there is a place in ergonomic to write "beautifull software", but a serious piece of software does need some science.

    Think about this, how beautifull would a car that looks good but keeps breaking down be ? Doesn't this remind you a lot of the software out there ?

  14. Re:Wait... by Anonymous Coward · · Score: 0, Insightful

    Of course it is not a science. Where are your observable phenomena? Your testable hypotheses? Your experimental data? Your replicable results?

    NOT. A. SCIENCE.

  15. Re:Computer programming is NOT an art. Get over it by Kadagan+AU · · Score: 3, Insightful

    Art deals with human emotions, feeling, states of mind[...]

    Excuse me, I've seen some pieces of code that are VERY beautiful and emotional. I'm not saying that a programmer and a painter should be grouped together, but there can be some extreme beauty in a piece of code. That's like saying that minimalists aren't artists because I think that a yellow dot on a red piece of canvas doesn't draw any emotions. Other people might look at that dot and see their entire life summed up, and get all teary eyed. Different people get emotional reactions to different things. I can still remember to this day the moment I first saw and understood recursion. I nearly creamed my pants when I read through my first recursive function. That's just one of many emotional reactions I've had to beautiful code.

    remember, not everyone thinks just how you do.

    --
    This space for rent, inquire within.
  16. Re:hackers and painters? by BrokenHalo · · Score: 4, Insightful

    Maybe I'm just too old (OK, yesterday was my 40th birthday, so call me a curmudgeon if you want, I've been called worse) but when I started out as a systems programmer, it was fashionable to speak English. Leet-speak doesn't exactly do much to promote ease of communication, does it?

  17. Computer Science is Science by Dr.+Bent · · Score: 3, Insightful

    Computer Science is as much a science as Physics or Biology. The problem is that "Computer Scientists" rarely, if ever, do actual Computer Science after they get thier degrees.

    How many people out there with C.S. degrees have gotten jobs that require them to develop, for example, a new compression algorithm? When's the last time you wrote your own language and a complier to go with it? I'm not saying it never happens, but the reality is that most Computer Scientists wind up being Software Engineers.

    I mean, It's important to have the scientific background when being an engineer. How many civil engineers do you know that never learned static-state physics? But developing software systems is no more a science than designing cars or buildings. It's applied science, which is a different thing.

  18. Re:Wait... by stratjakt · · Score: 3, Insightful

    Where are your observable phenomena?

    The data streams in and out of the processor dont count? The output on your screen doesn't count?

    Your testable hypotheses?

    I think I can make an O(log(n)) algorithm to do blah blah. I think that malloc algorithm A will improve throughput 30% over algorithm B.

    Your experimental data?

    No data in computers, that's for sure.

    Your replicable results?

    Nope. No way to copy a computer program. Good point.

    --
    I don't need no instructions to know how to rock!!!!
  19. Too man over-generalizations by prgrmr · · Score: 2, Insightful

    I've never liked the term "computer science." The main reason I don't like it is that there's no such thing.

    Sure there is. Just because a term is overused doesn't mean it does not have legit application. Just because he doesn't like the term because it doesn't fit in with his vision does not provide a basis from which to dismiss the term.

    Good software designers are no more engineers than architects are.

    How many people today only design software, and never code or test it? How many people design software for software's sake, as opposed to people who design software that is supposed to do something and thereby provide a means to an end?

    And he couldn't even 'splain the Desi-Lucy relationship correctly.

  20. Re:Great Quote by Warped1 · · Score: 2, Insightful

    The exceptions and formality of Java are supposed to aid development by making sure you've crossed all your t's and dotted your i's when it comes to error handling and type checking. This too helps prevent bugs, and makes your code safer.

    When utilized properly they're nice things. =) But that's just my humble opinion ...

  21. He's Got Some Very Valid Points by Greyfox · · Score: 2, Insightful
    If programming is a science, it is still a poorly understood one. Part of the huge missing factor could very well be the creativity involved in building something completely from scratch.

    Introspection is not unwarranted in our field. Many things he said in his article were true. I view hacking and programming as two very different things. The way I see it, a Programmer is a code monkey who implements management's vision of how the software should be 40 hours a week and then has nothing to do with computers the rest of the time. A hacker can build something truly unique and will no doubt be working with computers at other times as well.

    The IT industry does not recognize the difference. They have a very narrow slot that you get put in if you can program. For the hacker, work in the IT industry can be very unfulfilling. It is the very rare hacker who is given the ability to create what he wants (It is the very rare painter who is given the ability to create what he wants, either.)

    I think this is why the Open Source movement has taken off like it has. There has been a lot of pent up demand to create, but programming is a collaborative field. One hacker might create something nifty, but when you get the synergy of him bouncing off thousands of other like-minded people, some truly amazing things can be made.

    If you look at the indignation that arises here when someone goes on about the DMCA or software patents, it is very close to the anger and frustration a painter would feel if you told him he couldn't use a given color in his painting or paint a certain subject. I don't think cold and calculating science would become so enranged.

    So I think that the entire process is much more about creativity than you give it credit for. Most large programming projects are extremely chaotic systems which seem to have a life of their own. It is far more fuzzy than you'd expect something that was made only of 1s and 0s to be.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  22. Amen, brother!!! by master_p · · Score: 2, Insightful

    Programming languages should be abstract. We should not be dealing with types, memory management, file I/O and any other implementation details. We should be coding abstract algorithms / architectures, which are later applied to data.

    I have also battled it out here on Slashdot. C sucks!!! at first, it seems the all-out powerful language that you can do anything with it. And indeed you can!!! but it takes a lot of time, because the programmer has to define all details by hand.

    I've caught myself thinking much more clearly when I did not have to consider implementation details. How come there is no real abstract compiled language around ?

  23. Re:hackers and painters? by _ska · · Score: 3, Insightful

    the people who love to code *are* the real hackers.

    just because the media coopted the term to mean script-kiddies and crackers doesn't mean the original meaning is lost to the old school.

    PG, whatever else you can say about him, is an old school lisp hacker. This can be confusing to people who are too young or uninformed, but I can see why P.G. holds onto the original meaning.

    So you hate it when people use the term hacker in its original meaning? How do you think they feel about people using the new bastardized version?

  24. Re:Great Quote by Jerf · · Score: 4, Insightful

    The exceptions and formality of Java are supposed to aid development by making sure you've crossed all your t's and dotted your i's when it comes to error handling and type checking. (emphasis mine)

    You carefully qualified your statement so I won't lay into you ;-) That is indeed the "strong, static type checking" party line.

    An increasing number of smart people are starting to ask questions about that party line though. They'll try out a dynamic language like Python, and the disaster promised by the static typing advocates conspicuously fails to materialize. For two examples of this, see Are Dynamic Languages Going to Replace Static Languages? and Strong Typing vs. Strong Testing. A lot of other people are leaning this way too in newsgroups and on personal weblogs, and of course a lot of people still believe the party line.

    Personally, I'm suspicious of "received wisdom" that's much older then 10 or 20 years, as the static typing claims are; the world has changed a lot since then in a lot of ways, not least of which is our improved understanding of how to build things (i.e., even in non-technological ways).

  25. Photography, hacking and painting by arsinmsn · · Score: 2, Insightful
    Back in the 19th century there was a long argument about whether photography could be a "real" art, like painting. It was argued that because the film simply received an image, that it was far to mechanical to be art. Despite the fact that people know how much manipulation goes into photography, many folks still feel that it can't be a real art because it isn't like painting. The hand of the artist may be less apparent in some paintings, but we can usually see it and understand in a very physical way the motions and choices the artist went through.

    Sadly, one of the crafts of programming is to conceal the hand of the programmer. Like photography many programmers aim to make their products as transparent as possible to facilitate user interaction. So even a truly magnificent program shyly, slyly evades the user's direct gaze by hiding in the maze of code, and covering its tracks with easy interface.

    Perhaps games or computer generated amination like Matrix aspire to art in their very best moments, but let me say one more thing about the history of photography; photographers started out imitating other art forms like painting and drawing. Many people now feel that though this was a natural starting point, photography couldn't become an art until photographers understood the real strength of their medium and exploited it.

    I suspect that programmers are only starting to discover the real potential of their medium, and that the most complex, expressive uses of uses of computing are not yet finished imitating other media. True computer will not only be different from what we might imagine, and different from what we are capable of imagining right now; however, it is never-the-less what we WILL imagine.

    I suspect that, as in all arts, it will not be the general public who decide what is great programming, but specialists, some of whom probably participate here. These experts have the insight to tell which programming is so elegant, so provocative, and expressive that it stands head and shoulders above the usual thing.

    Keep an eye out.

  26. Empathy by mahler3 · · Score: 2, Insightful
    If Mr. Graham had empathy for his readers, one way to show it would be to avoid the use of footnotes that required manually scrolling to the bottom of a long web page.

    Otherwise, a fine and insightful article.

  27. Re:"a language that lets us scribble and smudge".. by stephenb · · Score: 3, Insightful

    If hackers are painters, then text editors are the "bowl of fruit" painting. Check freshmeat if you don't believe me. :)

  28. Re:Paul Graham isn't the typical hacker by Anonymous Coward · · Score: 1, Insightful

    One major problem I've had with computer science for quite a while now is the fact that there are very few articulate, intelligent speakers and writers associated with the profession.

    --

    "Good, now Mr. Nibbles...knaw through my ballsack!"


    Indeed...

  29. Re:Great Quote by RealAlaskan · · Score: 3, Insightful
    Paul Graham hints at it in his article, but there is no good language right now for writing applications in.

    Paul Graham is a well-known Lisp programmer. He didn't beat us over the head with it in his article, but I'm pretty sure that he considers Lisp (Common Lisp, in particular) to be that good language, for yesterday and today at least.

    I suppose that it's an acquired taste, but I'm convinced that it's a taste well worth acquiring. Here is a little screed I wrote to explain why I hold that conviction. Graham wrote several articles which tell his reasons. Some which pop to mind are: Beating the averages, Lisp in web based applications and What made Lisp different

    By the way, Lisp doesn't have to be very slow. Here is a pointer to a paper which might get you started.

  30. Re:So why is Lisp fading? by Raffaello · · Score: 2, Insightful

    Because lisp, like all tools for highly skilled workers, takes time to master. People who have taken this time are fewer, and so, more expensive to hire.

    Most companies will foolishly opt for 3 code monkeys (i.e., inexperienced, unproductive programmers) rather than one lisp master at 3 times the salary. This overlooks the fact that the lisp master is often 5 or 10 times more productive.

    It's the same reason businesses choose cheap everything. Bean counters rarely look past initial cost.

    Paul Graham's success with viaweb (now Yahoo Store), and ITA Software's success with Orbitz suggests that the increased productivity of a handful of lisp hackers can easily beat whole cube farms of code monkeys when time to market counts, which is, essentially, always.

    To summarize, what you're missing in this picture is that management decisions such as implementation language are often made by managers, not master programmers who actually know about such things.

  31. Re:So why is Lisp fading? by mrdlinux · · Score: 2, Insightful

    I've been using Common Lisp for 3 years, and this is how I see it:

    Common Lisp is actually a relatively new language. It draws on older languages such as MACLISP, ZetaLisp, Scheme, and ALGOL, certainly, but it breaks away from each of them. Unlike every Lisp before, it takes lexical scoping (by default) from Scheme. But it retains a separate namespace for variables, functions, etc, unlike Scheme. It uses function names drawn from MACLISP but hammers down the semantics of interpretation and compilation (in MACLISP these could be very different).

    The language design was originally coordinated by Guy Steele, and from that the ANSI standard was created. This took the better part of a decade. The intent of the language was to be practical and to resolve problems that existed, so implementations did arise and follow the ongoing standardization. But it still took a long time for them to become mature and settle down. I cannot speak from personal experience, but it does seem that in the mid-90s the quality/quantity of the available compilers was not at all near what we have today. Particularly the free ones.

    Nowadays there are four high-quality commercial implementations that I can think of right away (Allegro, LispWorks, Scieneer, MCL), three high-quality free implementations (CMUCL, SBCL, OpenMCL) and three up-and-coming or partially-compliant (CLISP, GCL, ECLS).

    Every day it seems that there is more and more progress. I think that what happened is there was a lull over the past ten years and now things are starting to speed up once again.

    But why was there a lull at all? It's hard to say exactly, and I wasn't personally involved in it, but what I have read has led me to see the problem as one of poor business decisions and a drop in confidence. Many eggs were placed in the Lisp Machine basket (many CL ones too) and when those failed in the marketplace (in the late 80s/early 90s) it took a lot with it. The LispM failure was probably due to two factors: (1) Overblown expectations of AI falling over, and (2) Too far ahead of its time to be financially feasible. The LispMs were very interesting machines and environments but they were far too expensive to be able to compete against Unixes, even if they had more features and better design. (The Unix Hater's Handbook enshrines the feelings of those people forced to move from LispMs and Genera, among other systems, to Unix).

    In the meantime, there was the "Free Unix"es which grew up in the early 90s and helped to push out most of the remaining non-Unix systems. Only Microsoft, with its budget, managed to survive; and Macintosh on its hardware platform. Perl and Python grew up in the Unix environment, and given the current lock Unix has, it is no surprise that these languages are widely used. They also marketed themselves as "scripting languages" to fit in under the radar of C and C++ programmers, whereas Common Lisp was built to be an industrial-strength application (or even system) programming language. Anyone who knows Lisp also knows that it makes for it's own "scripting language" very easily, though.

    Common Lisp didn't grow up in the Unix environment (not solely, anyway), and Lisp users had different ideas of what an OS should be. So there was an conceptual mismatch between the two that really hasn't been fully resolved. These days, there are many people (like me) who learned on Unix/C and then picked up Lisp. So there is more and more a trend to play well with Unix. The commercial Lisps are ahead in this game because they need to be in order to survive.

    I wouldn't say that CL is so much difficult as it is different. This is probably another reason why it didn't catch on in ths Unix world as much. Universities did, in many cases, chug out students who were exposed to Lisp (or very often Scheme, which is different). The trouble is, many inculcated their students with the concept that Lisp is a language for theoretical AI work rather than practical programming. Actually, many high-level langu

    --
    Those who do not know the past are doomed to reimplement it, poorly.