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."

417 comments

  1. Wait... by Anonymous Coward · · Score: 5, Funny

    So, he's saying Political Science isn't Science?! No wonder everyone looks at me funny when I wear a lab coat around the office...

    1. Re:Wait... by Anonymous Coward · · Score: 0, Funny

      Remember everybody, if it has the word "Science" in the title, it's not science. Other examples include social science and computer science.

    2. Re:Wait... by Anonymous Coward · · Score: 0

      What about Rocket Science?

    3. Re:Wait... by Anonymous Coward · · Score: 1

      From dictionary.com:

      science ( P ) Pronunciation Key (sns)
      n.

      1.
      1. The observation, identification, description, experimental investigation, and theoretical explanation of phenomena.
      2. Such activities restricted to a class of natural phenomena.
      3. Such activities applied to an object of inquiry or study.
      2. Methodological activity, discipline, or study: I've got packing a suitcase down to a science.
      3. An activity that appears to require study and method: the science of purchasing.
      4. Knowledge, especially that gained through experience.
      5. Science Christian Science.

    4. Re:Wait... by DarthWing · · Score: 1

      "Rocket Science" = Ballistics. The fancy latin name prevails!

    5. Re:Wait... by Anonymous Coward · · Score: 0

      There is no discipline called 'rocket science'. There is physics and engineering, and a number of sub-disciplines within them.

    6. Re:Wait... by xtermz · · Score: 3, Interesting

      You laugh, but in a networking class I had back in high school, the instructor wore a freakin lab coat. I never did understand that....

      --


      I lost my concept of community when my community lost all concept of me.
    7. 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.

    8. Re:Wait... by Anonymous Coward · · Score: 0

      you just destroyed your limited "credibility"

      save the word games for the courtroom.

      Any possible public credibilty you were trying to glean, has VANISHED in that one feeble comment.

      Please, make a comment like that on a public tv show or forum, and watch the audience howl in derisive outrage at the pathetic attempt at Reality Distortion.

      I will not talk to you again.

    9. Re:Wait... by Anonymous Coward · · Score: 4, Funny

      You've obviously never had to empty the bit bucket.

    10. Re:Wait... by stratjakt · · Score: 1

      No, anything with the word "science" in the title is a collection of sciences.

      Social Science is not a field of study, it's a group of fields like Anthropology, Paleobiology, Demography, Epidemiology, etc, etc..

      Likewise Political Science is a collection of social sciences with a focus on states rather than individuals, and a heavy dose of statistics.

      Computer science is a collection of electronic engineering (which contains some applied physics, applied chemistry, now quantum mechanics, etc), cryptology, number theory and other pure mathematics, and virtually every 'scientist' is a mathematician first, even if they wont admit it.

      Computer science is the sum total of fields of study that relate to computers. It is not programming, that's merely a small part of it. Writing a VBScript to punch the monkey doesnt make you a computer scientist.

      But I'd doubt you could walk into Intel's clean room where they're designing the next generation of carbon nanotub mega-quantum superprocessors and tell them they arent scientists.

      --
      I don't need no instructions to know how to rock!!!!
    11. 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!!!!
    12. Re:Wait... by Gabrill · · Score: 2, Funny

      So I guess anything with Engineering in the title really means they just use crayons and legos more often?

      --
      Always going forward, 'cause we can't find reverse.
    13. Re:Wait... by Upright+Joe · · Score: 1

      You laugh, but in a networking class I had back in high school, the instructor wore a freakin lab coat. I never did understand that....

      Maybe he was afraid he'd spill ether on himself...

    14. Re:Wait... by SN74S181 · · Score: 1

      That's an 'old school' computer scientist. He probably hearkens back to the day when the 'Operator' was god, everybody was stuck out on dumb terminals with no chance at all of ever coming within five feet of the machine running the actual code.

      His current disciples are the people advocating 'thin clients' and 'X terminals' and various other throwbacks to the dark ages of computing, and the inherent priesthood.

      Thank goodness the common man won't stand for that ever again, and men dressed like him are treated as the freaks of history that they are.

    15. Re:Wait... by Anonymous Coward · · Score: 0

      Two words: Token spill.

    16. Re:Wait... by maf212 · · Score: 0

      And what about IST? Information Science and Technology? I don't really think that's a science either.

      --
      --Note to self. Add witty sig here, someday...
    17. Re:Wait... by aoteoroa · · Score: 1

      LOL. After you said that I pictured Hunter S Thompson as his high school instructor.

      We had two bags of grass, seventy-five pellets of mescaline, five sheets of high-powered blotter acid, a saltshaker half-full of cocaine, and a whole galaxy of uppers, downers, laughers, screamers... Also, a quart of tequila, a quart of rum, a case of beer, a pint of raw ether, and two dozen amyls. Not that we needed all that for the trip, but once you get into a serious drug collection, the tendency is to push it as far as you can. The only thing that really worried me was the ether. There is nothing in the world more helpless and irresponsible and depraved than a man in the depths of an ether binge, and I knew we'd get into that rotten stuff pretty soon.

      --Hunter S. Thompson, Fear and Loathing in Las Vegas

    18. Re:Wait... by Anonymous Coward · · Score: 0

      I'm going to school for janitorial science.

    19. Re:Wait... by L7_ · · Score: 1

      you could walk into intel's clean room and tell them tehy aren't scientists. hell, they might get upset if you did.

      they are engineers.

      Scientist : design.
      Engineers : implementation.

    20. Re:Wait... by Arandir · · Score: 1

      The common man did stand for that way back when, because way back when computers cost more than your house. "Back that truck up to the side, the Vax is going in the spare bedroom we converted to an office."

      But the idea of thin clients is still a good one... in some environments. No, not your home. But maybe at your company. The traditional "thin" client is passe, because the hardware is so cheap now, but "smart" clients can be pretty damned useful. I don't know if that term has any officialdom, but a lot of modern UNIX networks are set up that way. A smart client works like a typical X terminal, but it has its own OS and local storage. Run OpenOffice on your local Linux/BSD desktop, but that $20,000 CAD is running on that server over there. It makes no difference to you though, because it acts like it's local.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    21. Re:Wait... by Anonymous Coward · · Score: 0

      No. Many scientists think that they are mathematicians first. Many more scientists think that they are able to do mathematics if they need to. In fact, most scientists are not able to effectively do mathematics.

    22. Re:Wait... by dimator · · Score: 1

      His use of a lab coat in a classroom full of horny high school kids was warranted, because you're obviously forgetting the #1 use of any network: pr0n.

      --
      python -c "x='python -c %sx=%s; print x%%(chr(34),repr(x),chr(34))%s'; print x%(chr(34),repr(x),chr(34))"
    23. Re:Wait... by Racer+X · · Score: 1

      `Political science' verges on oxymoron.

    24. Re:Wait... by rhkramer · · Score: 1

      Scientist: research, investigation
      Engineer: design
      Technician: implementation

    25. Re:Wait... by Anonymous Coward · · Score: 0

      Is ether use among sysadmins really that common? I mean, everybody I know does it, but I thought it was just a regional thing (I'm in silicon valley).

    26. Re:Wait... by Anonymous Coward · · Score: 0

      Or had a buffer overflow

    27. Re:Wait... by Anonymous Coward · · Score: 0

      Well of course this story made slashdot. It's a self-congratulatory article on how noble and beautiful hacking is, and most people here like to consider themselves hackers. Unfortunately neither idea is correct.

    28. Re:Wait... by inkedmn · · Score: 1

      Well, being a Mircosoft Certified Systems Engineer (/me makes wanking motion with left hand), that may as well be true...

      besides, even stupid people can pass tests and get jobs.

      --
      well, it's nothing one behind the ear wouldn't cure
  2. 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 Evil+Adrian · · Score: 1

      Your definition of hacker is the one from 15 years ago. Hacker == cracker nowadays. And please don't bother arguing or bitching about it, go read a newspaper and you'll see that I'm right, it's probably even in the AP style guide.

      --
      evil adrian
    2. Re:Blurring the lines by gazbo · · Score: 2, Informative
      RE: "nowadays"

      If you find a copy of the Jargon File before ES-"raving lunatic"-R took it over, you'll see that it defines hacker to mean "one who breaks into systems" without any sort of warning about incorrectness. It is only when ESR took over that suddenly this became "strongly deprecated".

      I can't remember whether that version even had an entry for cracker in it. But don't take that as an implied assertion that it didn't.

    3. Re:Blurring the lines by tsetem · · Score: 1

      In a sense, safecracking could be considered an art. Consider the safe, a big black box that is locked up tight. How do the tumblers work, where are they located, how do I circumvent it. How do I make the safe work to do my bidding (open).

      In a sense, that's the same thing that a cracker does. He tries to take a big black box, and carefully poke & prod. Not so much that he alerts the owners. And then when he is confident he knows how the black box works, then he cracks it open and gets the riches.

      Now a cracker is nothing more than a specialized hacker. But a hacker, and cracker all really have the same tasks & goals. Take a problem, hold it, examine it, lovingly caress it, and then create a solution to the problem.

      It's in that solution that the artist is revealed. Does he take a sledgehammer to the problem, or silently pick it apart from numerous directions?

    4. 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.
    5. Re:Blurring the lines by (trb001) · · Score: 2, Interesting

      Eh, I think the author's main point was that hacking, much like painting, is the creation of something that has been imbibed with the author's creativity. Safecracking doesn't yield any new creations to the world, you just open a safe. It may be an art form to crack a safe quickly and precisely, but I think you're really stretching the definition of art form and blurring it with common slang.

      --trb

    6. Re:Blurring the lines by SN74S181 · · Score: 1

      Fifteen years ago a 'cracker' was somebody who 'cracked' copy protected software, mostly games. This sort of person would step by hand through a computer game, find the bits of code that required copy protection, and put in NOPs or jumps over the blocks imposing the protection.

      But the revisionist historians, i.e. the people maintaining the Jargon File, seem to miss this point, as they were snorting in derision at PC software back in that era, and totally missed out on the real 'crackers' of the period.

    7. Re:Blurring the lines by Upright+Joe · · Score: 1

      In a sense, safecracking could be considered an art.

      Nope, I think that's what you would call a skill. It's not an art until you've created something that can be presented to an audience. ( Oh, and creating an open box out of a closed one and presenting the contents to an audience doesn't count so don't go there :-P ).

      Now, a safecracker could create new intriguing tools that a person could consider to be art perhaps. However, creating those tools isn't safecracking, it's engineering and possibly sculpting. Using the tool is safecracking and it's just not art.

    8. Re:Blurring the lines by nkv · · Score: 1

      It is only when ESR took over that suddenly this became "strongly deprecated".

      Well said. I guess it's not about terminology at all. If one defines what one means by a hacker before talking about it, they're on safe ground.
      However, some people do take offense at the misuse of the term like eg. Richard Stallman in whose prime time, "hacker" was a badge of honour.

    9. Re:Blurring the lines by DJ+FirBee · · Score: 1

      This is a recurring theme on Slashdot where some dork decides that he is an artist because he can code. Granted, but there are good artists and there are crap artists. When I see your compiled executible I will let you know just what kind of artist you are.

      OS X user interface == ART.

      Normal windoze applications == art displayed proudly in second rate hotel rooms and dirty spoons.

      Real artists don't slap together a piece of work in fifteen minutes and pretend it's worth presenting to the public like open source programmers tend to do. Generally real art is done by one person (an artist) it's not a work in progress by a community of like minded dorks. That sounds alot like coporate and governmental art to me, which always sucks.

    10. Re:Blurring the lines by Evil+Adrian · · Score: 1

      HACKER has passed into common parlance with the negative connotation. It's not just the newspapers, it's EVERYBODY.

      Every time I read a newspaper on any topic I know something about, I find more errors than facts.

      Pure exaggeration.

      --
      evil adrian
    11. Re:Blurring the lines by Evil+Adrian · · Score: 1

      The word "cracker" is like the word "nigger" in some contexts. "Hacker" is a much less offensive word, in all contexts, except to Richard Stallman, who can suck his thumb and cry into his bankie for all I care.

      --
      evil adrian
    12. Re:Blurring the lines by orac2 · · Score: 2, Informative
      Actually, even the AP stylebook (ISBN 0-7832-0308-4) recognises the ambiguity. The entry for hacker (page 127) is

      Hacker: a highly skilled computer enthusiast. In common usage, the term has evolved to mean one who uses those computer skills to unlawfully penetrate proprietary computer systems.
      --
      "Just once, I'd like to meet an alien menace that wasn't immune to bullets." -- The Brigadier, Dr. Who
    13. Re:Blurring the lines by Hognoxious · · Score: 1

      Sticking an apostrophe before every terminal s has passed into commmon use too. Doe's that make it correct?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  3. In case of Slashdotting (it's already a bit slow) by Anonymous Coward · · Score: 5, Informative

    May 2003

    (This essay is derived from a guest lecture at Harvard, which incorporated an earlier talk at Northeastern.)

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

    Both of these images are wrong. Hacking and painting have a lot in common. In fact, of all the different types of people I've known, hackers and painters are among the most alike.

    What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.

    I've never liked the term "computer science." The main reason I don't like it is that there's no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they're doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers-- studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department.

    Sometimes what the hackers do is called "software engineering," but this term is just as misleading. Good software designers are no more engineers than architects are. The border between architecture and engineering is not sharply defined, but it's there. It falls between what and how: architects decide what to do, and engineers figure out how to do it.

    What and how should not be kept too separate. You're asking for trouble if you try to decide what to do without understanding how to do it. But hacking can certainly be more than just deciding how to implement some spec. At its best, it's creating the spec-- though it turns out the best way to do that is to implement it.

    Perhaps one day "computer science" will, like Yugoslavia, get broken up into its component parts. That might be a good thing. Especially if it meant independence for my native land, hacking.

    Bundling all these different types of work together in one department may be convenient administratively, but it's confusing intellectually. That's the other reason I don't like the name "computer science." Arguably the people in the middle are doing something like an experimental science. But the people at either end, the hackers and the mathematicians, are not actually doing science.

    The mathematicians don't seem bothered by this. They happily set to work proving theorems like the other mathematicians over in the math department, and probably soon stop noticing that the building they work in says ``computer science'' on the outside. But for the hackers this label is a problem. If what they're doing is called science, it makes them feel they ought to be acting scientific. So instead of doing what they really want to do, which is to design beautiful software, hackers in universities and research labs feel they ought to be writing research papers.

    In the best case, the papers are just a formality. Hackers write cool software, and then write a paper about it, and the paper becomes a proxy for the achievement represented by the software. But often this mismatch causes problems. It's easy to drift away from building beautiful things toward building ugly things that make m

  4. hackers and painters? by grub · · Score: 3, Funny


    I highly doubt Picasso, Rembrandt or Cézanne strutted around saying "H3y d00dz, ch3ck 0u7 7h3 l337 p41n71ng5 1 h4x0r3d t0g37h3r l457 n1gh7! ph34r m3!

    --
    Trolling is a art,
    1. Re:hackers and painters? by Anonymous Coward · · Score: 0

      You clearly didn't know Rembrandt well enough then. And, little known fact, Picasso was a Mac user.

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

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

    3. Re:hackers and painters? by Anonymous Coward · · Score: 0

      Yeah, I remember explaining leet speak to somebody once, saying that it was only used as a joke or by people who don't know what's going on.

    4. Re:hackers and painters? by NecrosisLabs · · Score: 2, Informative

      Actually, Art History is filled with that (without the 1337 speak, of course). Read Vasari's Lives of the Artists, for instance.

    5. Re:hackers and painters? by Rick.C · · Score: 1, Funny
      Dude!! You just cracked DaVinci's secret code!

      YOU RULE!!

      --
      You were 80% angel, 10% demon. The rest was hard to explain. - Over The Rhine
      "Math in a song is good."-Linford
    6. 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?

    7. Re:hackers and painters? by Tony-A · · Score: 1

      Methinks that whoever invented any of the modernistic styles did exactly that, but phrased in whatever lingo the artists were using at the time. With Picasso at least, I have the impression that the artistry come through in spite of the style, not because of it. The convincer for me was in some art book, side by side, a Tolouse La Trek(sp?) and a Picasso done in that style. The difference: The Picasso was art, The Tolouse was not.
      You get the same effect with a workable program written in Intercal. Of course the wannabes will pick up on the style instead of the substance.

    8. Re:hackers and painters? by Upright+Joe · · Score: 1

      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?

      Ok, you're a curmudgeon.

      1337 5p34k (or however ya want to spell it) is obviously not about ease of communication. It's not appropriate business language. It's an online slang dialect created by a bunch of creative, expressive, obnoxious, little shits. You wouldn't use it in a technical spec any more than you would walk up to your boss and say "Word! That proposal was da bomb! I thought you was frontin till you whipped dat shit out. Booyah!" (my appologies if this slang is horribly outdated)

      That being said, if you sit back and read it for a bit, I think you'll find leet speak can be extremely expressive and funny.

    9. Re:hackers and painters? by Andrewkov · · Score: 1

      And sales people .. .One of our sales guys was telling me about a "warez" site he found, except he pronounced it war-ezz. I didn't bother to explain to him that warez meant wares.

    10. Re:hackers and painters? by Hellkitty · · Score: 1
      I really didn't get the impression from the article that he was referring to real hackers. Instead, he was using the term to describe people who love to code.

      This is sort of a personal pet peeve of mine. I hate it when people use this term to describe their writing code or tweaking a kernel or something. Since the term "hacker" has a negative conotation associated with it by society, it is hard to explain to a non-geek what you are doing. If I tell my parents that I spent the weekend hacking a linux kernel, I then have to spend an hour explaining that I'm not doing anything wrong and I am not going to be calling them from jail.

    11. Re:hackers and painters? by Andrewkov · · Score: 1

      As far as I remember, I first started seeing Leet-speak evolve on the BBS scene in the 80's, but I've never heard anyone talk like that in real life.

    12. 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?

    13. Re:hackers and painters? by grub · · Score: 1


      but I've never heard anyone talk like that in real life.

      I hope not. If anyone were to say "I'm 'ell-three-three-seven." I'd punch him in the nose.

      --
      Trolling is a art,
    14. Re:hackers and painters? by Anonymous Coward · · Score: 1, Informative

      Leet speak is a trick which can be used to get around filters and to avoid showing up in search results. Googling for "dope" won't find "d0pe" and "fu<k" isn't blocked by a 7-words-you-can't-say-on-tv filter.

    15. Re:hackers and painters? by Anonymous Coward · · Score: 0

      People "LOL" in real life. I mean they don't laugh out loud, they say "LOL". /me thinks that's stupid.

    16. Re:hackers and painters? by code+shady · · Score: 1

      The sad part is, i was actually able to read that just about close to normal speed.

      ph34r m3 indeed.

      --
      Look out honey cause I'm usin' technology
      Ain't got time to make no apologies
    17. Re:hackers and painters? by Andrewkov · · Score: 1

      Yeah, someone said L.O.L. to me, so I said colon-dash-right-parenthesis. Most normal people don't talk like that, though (thank God).

    18. Re:hackers and painters? by The+Jonas · · Score: 1

      Same thing happened to me with our copier-repairman. He actually paid for an old HP printer driver via credit card through a "warez" site. Claims he received the driver. He, too, mispronounced "warez" as "war-ezz". I,too, did not correct him or explain anything.

    19. Re:hackers and painters? by Anonymous Coward · · Score: 0

      I've never understood that war-ezz pronunciation. If somebody saw "games" spelled "gamez", they wouldn't pronounce it gahm-ezz.

      *sigh*

      /end rant

    20. Re:hackers and painters? by Raffaello · · Score: 1

      "...Tolouse La Trek..."

      Wasn't he Captain Kirk's favorite artist?

      That's Henri de Toulouse-Lautrec, by the way. Oh, and Lautrec's paintings and posters are considered great art.

      It was Picasso's lame and rather derivative works (imitation Lautrec for the most part) from his earliest days in Paris (ca. 1900) that are not.

      It is only later, in what are now known as Picasso's Blue (ca. 1901-1903) and Rose (ca. 1904-1906) periods that Picasso began to develop his own original style. This trend culminated in his joint development of Cubism with George Braque in the latter half of the first decade of the 20th century. Picasso then rung numerous changes on these ideas for the rest of his rather long career.

      There's a reason why one doesn't often see Picasso's early imitation Lautrec style paintings. They're unoriginal, and not representative of Picasso's later creative virtuosity.

    21. Re:hackers and painters? by BrokenHalo · · Score: 1
      any more than you would walk up to your boss and say "Word! That proposal was da bomb! I thought you was frontin till you whipped dat shit out. Booyah!

      Maybe not, but that would be really funny :-D Pity I don't have a boss any more... :-)

    22. Re:hackers and painters? by kevmit · · Score: 1

      Maybe he wouldn't say that to his boss, but Herbert "Da H-Dog" Kornfeld sure as hell would.
      http://www.theonion.com/archive/archive_kornfeld.h tml

  5. "a language that lets us scribble and smudge"... by sammyo · · Score: 1

    Do you need a pressure sensitive mouse to code?

  6. 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 dreamchaser · · Score: 3, Informative

      You are either trolling or you are confused between what a hacker does and what a cracker does. My guess is the former, but I'll give you the benefit of the doubt.

      Hacker: writes code, likes to write neat code, usually of a functional nature

      Cracker: breaks into systems.

      I know, I know...the media long ago hijacked the term 'hacker' to refer to both sets of activities. The article in question uses the correct definition of the term though.

    2. Re:Is it just me? by akadruid · · Score: 4, Funny

      When you meet someone now who is writing a compiler or hacking a Unix kernel, at least you know they're not just doing it to pick up chicks.

      At least he finished with a well thought out and carefully researched conclusion.
      That changes my perceptions completely

      --
      "Those who cast the votes decide nothing; those who count the votes decide everything." (attrib. Joseph Stalin)
    3. 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
    4. 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.

    5. Re:Is it just me? by Anonymous Coward · · Score: 0

      5 minutes? How did you finish that whole article in 5 minutes? ;)

    6. Re:Is it just me? by Anonymous Coward · · Score: 0

      Is it just me or is it possible to look att things from different angles and see different things?
      Sure, the analogy might be flawed in that it doesn't fit 100%.
      What it does is show the similarities between the creative process of painting and that of programming.
      It also presents the idea that perhaps development tools should be adapted to better support the creative process instead of blindly following the computers deterministic nature.

      Digital computers may be 100% deterministic in nature. Humans, however, are most definitely not!
      And, as humans are the ones stating the problems and the ones solving the problems, there will always be a certain amount of art to it.

      Btw, nobody said anything of hacker == painter.

    7. 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.

    8. Re:Is it just me? by zakezuke · · Score: 1

      Just because we live in the digital age doesn't mean there haven't always been hardware or software people. You can't tell me the founding fathers of modern physics didn't see beauty in motion, nor did famous architects make a contrubution. Wasn't it Sir Christopher Wren who suggested the inverse square law of attraction independently Sir Issac Newton, or should we remember him exclusivly for his buildings?

      --
      There is no sanctuary. There is no sanctuary. SHUT UP! There is no shut up. There is no shut up.
    9. Re:Is it just me? by Anonymous Coward · · Score: 0

      Nope, it's not just you.

      Frankly, I don't know where he got the idea that hacking is ever called a science. Go to a decent school and they'll teach you computer science -- inductive proofs, dynamic programming, graph theory, etc. Go to the right newsgroup and you'll learn hacking (or "systems programming" if you want a more elegant name). There's only a small bit overlap between systems programming and computer science.

      And from his statements about software engineering, it's clear that he doesn't have much experience there. It's extremely possible to evolve a solution to a programming problem from a set of requirements methodically without feeling the need to excercise artistic license.

      But anyway, I'll shut up now.

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

      By not noticing the Read More of this Article link.

    11. Re:Is it just me? by dreamchaser · · Score: 0, Offtopic

      Um...no...some of us read more than 10 words per minute ;-)

      Yes, I read the whole thing before I posted. Novel idea around here, eh? ;-)

    12. 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.

    13. Re:Is it just me? by Becquerel · · Score: 1

      No

      I agree that the painter analogy is a bit forced, The architect one however is a lot neater. They work in a constrained environment using a medium that they need a good knowledge of (but don't need to understand fully, thats what an engineer is for) to create a product that is ergonomic and sometimes 'beautiful'.

      --
      My spelling isn't bad, I'm evolving the language
    14. Re:Is it just me? by TopShelf · · Score: 2, Funny
      That doesn't mean hacker==painter.


      Does this mean I should stop printing reports on canvas?

      --
      Stop by my site where I write about ERP systems & more
    15. Re:Is it just me? by journeyman101 · · Score: 1

      Its not just you. :)

    16. Re:Is it just me? by NickFitz · · Score: 1

      Your carpentry analogy is a worthwhile one, relating programming more to the fields of craft rather than art.

      OTOH, remember that the distinction between the crafts and the fine arts, as we presently understand it, is a construct that our culture has imposed after the fact to allow it to understand and interpret the achievements of Renaissance artists and those who came after. At the time, a man who painted a portrait was doing a job of work, in the same way as the man who made a piece of furniture. This was one of the guiding principles of people like Eric Gill, who argued for a return to the principles and ideals of the mediaeval craftsmen as the way to the salvation of art and society in an industrialised age.

      --
      Using HTML in email is like putting sound effects on your phone calls. Just say <strong>no</strong>.
    17. Re:Is it just me? by Anonymous Coward · · Score: 0

      Hacking would be a lot like art if artists were trying to paint photos. Writing code means formalizing a certain part of reality. The way to a beautiful (not unnecessarily complex, correct, high applicability) solution may look like artists work, but it really is more like engineering. You have a clear goal and almost all "metrics" for the result are more important than the beauty of the code. I think that hackers don't like to be compared to engineers because they don't see that there is "art" in engineering too. There are truly beautiful machines, not in the sense that they are aesthetic, but in the sense that they are elegant solutions to a problem. It's the same with code, but that doesn't mean hackers are artists. They are engineers who like and try to produce elegant solutions. On the other hand, what hackers do is very unsystematic. Hacking away without planning is part of the explorative phase, where one learns the aspects of the problem. The product of hacking is almost never an elegant solution. Only the insight how an elegant solution would have to work is gained in that phase. But that isn't art either. It's more like experimental physics.

    18. 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

    19. Re:Is it just me? by Anonymous Coward · · Score: 0

      The "just" is what gives him away as a lunatic (or a comedian).

    20. Re:Is it just me? by shakah · · Score: 1
      "I agree that the painter analogy is a bit forced..."
      I actually liked the analogy of sketching to the approach of (for lack of a better label) _highly iterative development making frequent use of a debugger_ when initially getting a feel for the shape of a design:
      "For example, I was taught in college that one ought to figure out a program completely on paper before even going near a computer. I found that I did not program this way. I found that I liked to program sitting in front of a computer, not a piece of paper. Worse still, instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging, I was taught, was a kind of final pass where you caught typos and oversights. The way I worked, it seemed like programming consisted of debugging.

      For a long time I felt bad about this, just as I once felt bad that I didn't hold my pencil the way they taught me to in elementary school. If I had only looked over at the other makers, the painters or the architects, I would have realized that there was a name for what I was doing: sketching."

    21. Re:Is it just me? by Anonymous Coward · · Score: 0

      Software engineers are embracing the engineer-on-the-fly paradigm

      I think that's precisely why people don't "get" programming. The different phases (understanding the problem, finding a solution and formalizing the solution) very often aren't distinguishable phases at all. "Gifted" programmers seem to naturally strike the balance that is necessary to constantly switch between analysing, designing and implementing. Most people need to separate these processes in order to avoid losing sight of any of these important aspects. Many "artist" type programmers don't have that balance but think they do, and that is probably the biggest source of bad code.

    22. Re:Is it just me? by watzinaneihm · · Score: 1

      Though I personally think that the article-author guy hated maths and so dropped out of CS and took up painting courses, and now he wants to be accepted as having the right "attitude" , I think I'll be a double troll.Here goes
      Mathematicians and "hackers" do create stuff which have almost no obvious functional value.Eg. A quine (a code when compiled and run prints the code listing out) has no "functional" value (though it is a big thing in Theoretical CS). Or look at the obfuscated C code contest webpage.
      I think what the articles main point is that the painters get millions(although mainly posthumously) for making stuff which does nothing except be so confusing (or beautiful if u want) to be called "art", the guys who writes code which has no functional value dont get paid. He wants colleges to have courses in "Computer art" where all these can be taught and probably the guys who does this to be respected
      IMHO lot of maths (with which the article has a problem) is similar, almost has no functional value (Reading "man who knew infinity" might be a good source of examples of stuff which some guy called Ramanujan proved which were nearly impossibly complicated but had almost no meaning in real life).Its just that mathematicians hate being called artists.

      --
      .ACMD setaloiv siht gnidaeR
    23. Re:Is it just me? by Lurch00 · · Score: 1

      Agreed. I was considering impressionistic and more modern art. If you consider the subset of traditionally artistic fields for which the desired output is a representation of fact, like portrait painting or human sculpture, then that mostly reduces the artist to a craftsman and my analogy should transfer. The carpentry analogy is only clearer due to the ability to separate fabrication and engineering, which is harder to find a parallel for in many artistic media. For certain problems though where there isn't a lot of components and interconnection, etc, like many scripts for instance, the artistic craftsman version probably holds up equally well.

    24. Re:Is it just me? by peacelife · · Score: 1
      I am generally suspicious when I come across any article written by a practitioner of a profession about how great, difficult, artistic, and demanding that profession is. This article seems to fall smack in the middle of this category.

      Paul Graham is not the only one who has written such articles: check out Peter Seebach's Care and feeding of your hacker or ESR's How to become a hacker and you will find more such self-praise. The attitude seems to be : "I am a true hacker. I have talents that very few others in this world have. I don't write code, I do art. Fear me!"

      Of course, you will find similar stuff in some other areas. One example that comes readily to mind is "The Portrait of the Artist an a Young Man" by Joyce. Religious priests, too, have been going on for millennia about how difficult it is to achieve the skills needed to obtain access to the gods. They even create excuses to be miserable,(taking vows of poverty/chastity etc) just so that they can persuade society of the difficulties they have to face, so they get respect from society, while doing no productive work.

      We programmers have no such excuse. The utility of our work is recognized by others, we are paid for it. Then why do programmers have to disguise our work as "art" to gain respectability? Do we need to claim we are 'artists'? What is bad about being "Programmers", pure and simple?

    25. Re:Is it just me? by Tony-A · · Score: 1

      For instance, a carpenter with no real experience and no tools can build a table out of what they find lying around.
      Somehow I like that analogy.

      Software engineers are embracing the engineer-on-the-fly paradigm, and that's a new idea that nobody really knows how to teach. [emphasis added]

      The carpenter with no real experience and no tools must engineer-on-the-fly. And nobody taught him/her either. Somewhere in there is the essence of hacking and why there is a persistent resistance to turning the term "hacker" over to the media.

      Software can be engineered, but usually is not. To be engineered, most all of the relevant factors have to be taken into account simultaneously. This has approximately the level of difficuly as solving simultaneous equations as opposed to solving the same number of equations sequentially.

    26. Re:Is it just me? by Anonymous Coward · · Score: 0

      What is bad about being "Programmers"

      "Programmers" don't get the chicks. It has the same connotations as "accountant".

    27. Re:Is it just me? by Lurch00 · · Score: 1
      Somehow I like that analogy.
      A lousy table, a lousy piece of software, that was my analogy.

      The carpenter with no real experience and no tools must engineer-on-the-fly. And nobody taught him/her either.
      And there's nothing wrong with that, provided that its a learning experience. I wouldn't expect other people to use that table, and that's what happens with a lot of OSS. As the carpenter gains experience and collects more tools, he is able to produce a better table, one that other people might like to use. So too the programmer learns about all the tools available and picks the right one, producing a program that is "good enough." A lot of OSS falls into this category too. The distinguishing trait of a good craftsman is that he always looks to learn more about his craft.

      Software can be engineered, but usually is not. To be engineered, most all of the relevant factors have to be taken into account simultaneously. This has approximately the level of difficuly as solving simultaneous equations as opposed to solving the same number of equations sequentially. You're describing the old "do the engineering before you do anything" way of doing it. It's valid, but I'm not advocating it. I much prefer more engineer-on-the-fly methods. I use them when I develop OSS. I'd argue that all good software is engineered. Yes, you do have to consider the whole problem up front, but you don't have to solve it all. All I'm saying is that you should think about what you're doing before you do it. There is as much room for creativity in software engineering as there is in producing any other mechanical product. However, the creativity belongs at the architecture level, not in the implementation. How many machinists do you see carving their initials into a piece of steel that goes through their mill?

    28. 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.

    29. Re:Is it just me? by Z4rd0Z · · Score: 1

      Except he didn't drop out of CS. He got a graduate degree in it, then got schooled in painting.

      --
      You had me at "dicks fuck assholes".
    30. Re:Is it just me? by Mannerism · · Score: 1

      What Paul Graham is driving at seems to me to be that the creation of a program by a hacker is more akin to the creation of painting by a painter than it is to the creation of, say, a blueprint by an architect. He spends a lot of time complaining about the economic and academic pressures that make it hard for hackers to hack, if you will, and he touches on the negative effect that these pressures have on our view of how to write software (as expressed in certain views on "software engineering").

      I think some prominent authors are thinking along the same lines. For example, Alistair Cockburn (Writing Effective Use Cases) bases much of what he writes in Agile Software Development on the Peter Naur's Programming as Theory Building. By "Theory", Naur means the sort of uniquely humans understanding of a concept (Naur, in turn, bases this on the work of Gilbert Ryle). Cockburn points out, quite effectively, that the purpose of software documentation is to communicate the theory that underlies the software.

      Unfortunately, communicating theory is a hard thing to do. Personally, I argue that there are two ways to do it. The first is via a two step processs: through expressive thought, the theory (which is ephemeral in the theory owner's mind) becomes "knowledge" (which is a somewhat more "concrete" thing). That knowledge is then communicated, usually concretely in a language like english, sometime in a formal language like UML, sometimes through sketches or through analogies (communicated knowledge is "information"). Of course, something (and potentially, a lot) is lost at each step (hence the ineffectiveness of documentation). It's more effective to directly express the theory. This sort of expression is "artistic expression". Often, its end result is a painting or a poem. But it seems that it can also be a program -- and this is the key point. This has some interesting implications for the future of programming languages, IMO.

      So, Graham's analogy is not flawed, because both painters and hackers are directly expressing theory.

    31. Re:Is it just me? by Tony-A · · Score: 1

      A lousy table, a lousy piece of software, that was my analogy.
      Exactly!

    32. Re:Is it just me? by nomadic · · Score: 1

      It's not the media. It's everyone except for a tiny majority of people.

      Guess what, society as a whole selects the language. Hacker means someone who breaks into computer systems. Deal with it.

    33. Re:Is it just me? by TheLastUser · · Score: 1

      I come from a Physics background and I find that computer programming has very little math, in the great scheme of things.

      Programming is very much like painting. Some programmers work for employers that let them paint the Mona Lisa, and others work for employers that use them to cover a wall with latex. That's life, ditto for chefs in McDonalds vs. the Ritz.

      To say that programming is like painting, is not to say that it doesn't require a great deal of planning. Painting, when done properly, requires a great deal of thought and planning. A great painter rarely produces masterpiece after masterpiece without thought or design. to say that they just throw paint on canvas until it looks good is to belittle their accomplishment. Programming is the same way, without a plan, either mental or written, software never turns out well.

    34. Re:Is it just me? by nomadic · · Score: 1

      Err, tiny minority, not majority, obviously.

    35. Re:Is it just me? by dracocat · · Score: 1

      Main Entry: hacker
      Pronunciation: 'ha-k&r
      Function: noun
      Date: 14th century
      1 : one that hacks
      2 : a person who is inexperienced or unskilled at a particular activity
      3 : an expert at programming and solving problems with a computer
      4 : a person who illegally gains access to and sometimes tampers with information in a computer system

    36. Re:Is it just me? by Anonymous Coward · · Score: 0

      i find the only way for me to stay sane while producing what others consider to be "art" is to think of myself as a craftsman, not an artist.

      because i *feel* like a craftsman, not an artist. i'm just not working to anyone else's spec.

    37. Re:Is it just me? by tcopeland · · Score: 1

      > a different group of people than the coding
      > (fabrication)

      Compilation, not coding, is the equivalent fabrication. It's easy, brainless, and repeatable - that's why we let the compiler do it.

      But coding is a whole different story. It's not fabrication - it's design/architecting/coding/testing. Forget any one of those components when you're writing code and problems start happening.

      > many companies doing their architecture in
      > UML and then sending it overseas for
      > actual implementation.

      So we put together a heap of sequence diagrams, throw it to some folks overseas, and get 100K lines of code several months later. Hm.

      Yours,

      Tom

    38. Re:Is it just me? by thelen · · Score: 1

      Now if it's true that hacking involves design and is not mere brute code generation, what does this mean for "extreme programming"? In particular, isn't the doctrine of prewritten unit tests impossible to uphold if this is the case? I know that typically the way that I work is an awful lot like the sketching methodology that Graham describes, and it's basically impossible to write a test suite until after I've beaten the module into a nearly finished state.

      Does this mean that XP is only good for the boring stuff like connected legacy systems to web servers (to use his example)? Perhaps XP should be XMP -- "Extremely Mundane Programming"? ;^)

    39. Re:Is it just me? by Lurch00 · · Score: 1
      Compilation, not coding, is the equivalent fabrication. It's easy, brainless, and repeatable - that's why we let the compiler do it.
      I disagree. A compiler would be akin to a power tool. There's nothing stopping you from designing/architecting/coding/testing with only a hex editor. There are easy, brainless, and repeatable mechanical fabrication tasks too. They're done by CNC machines. However, that implies the engineering-up-front approach. I maintain that for any sufficiently small component of a program, its purely a fabrication operation. Either it's correct or it isn't - it works, or it doesn't. This is the whole essence of unit testing.

      So we put together a heap of sequence diagrams, throw it to some folks overseas, and get 100K lines of code several months later. Hm.
      I just cite this as an example of what's happening now. I'm not saying its the right way to do it. The trend I think is starting to show is that of separating the architechture engineers from the people doing the actual implementation. There's no reason that the engineers can't do the implementation, and I'm sure many will want to. But because of the different skill requirements between the two operations, I think that a salary gap is going to emerge, and that might push companies towards having fewer engineers and more implementers.

      Just a guess anyway.. Never meant to get into a crystal ball gazing mode, I was just chiming in against the hacker-artist romance.

    40. Re:Is it just me? by tcopeland · · Score: 1

      > I disagree.

      Fair enough.

      > any sufficiently small component of a program,
      > its purely a fabrication operation. This is the > whole essence of unit testing.

      I disagree :-).

      I feel that it only appears to be fabricatible (is that a word) after it's done. Then one can look at the code and the tests and say "ah, well, of course, that's how it should work". But when one is actually coding it, one makes decisions that affect the overall program. That sounds like design to me.

      > fewer engineers and more implementers.

      I think when this happens the engineers rapidly get out of touch, and the implementer flair along helplessly, cranking out tons of lousy code that's bug-ridden and unmaintainable. Those studies about some programmers being 10x more productive than others... I think they're right on.

      > I was just chiming in against the
      > hacker-artist romance.

      Fair enough. I think I'm in "no up front design" mode today for some reason :-)

      Yours,

      tom

    41. Re:Is it just me? by Overbyte · · Score: 1

      Carpentry shmarpentry. Hacking is the only art form that fights back. Perhaps it's more like boxing...

    42. Re:Is it just me? by Lurch00 · · Score: 1
      I disagree :-).
      You're entitled :)

      I feel that it only appears to be fabricatible (is that a word) after it's done.
      I agree with you. I said "sufficiently small," though. If I say "this procedure will take this buffer and this length and return a CRC on it" it is fabrication. There may be more than one way to do it, but it there's no way it can affect the architecture. Whole systems are developed to the point where someone just has to fill in the brackets with code that does what its supposed to.

      I don't advocate this though. I think that coding and architecture design is a very iterative process, and I believe heavily in refactoring and refinement. However, refactoring is an expensive operation, so I also think that its a good idea to do a preliminary design before you start. Figure out what modules there will be. Identify the data path. Look for places to create common interfaces and code. This is all at a very high level, not even considering language issues. "Okay, I've got a database interface over here, this is the game interface, this is the statistics engine, the game interface talks to the database, fires events to the statistics engine, which stores its data in the database, which is queried by the ui, etc." This is basically the way I like to to my hobby development anyway. My current professional environment is much more structured. Anyway, once I hammer down the data path, I start coding at the beginning. When there's a fork, I put the interface for the fork in, but continue on with the original path I was targetting. Once I reach the point where data gets out, I've now got an easy test case. I can do something and see if my program does the right thing. If it does, I go back and work on a different branch. If not, I can effectively disconnect different modules to isolate the fault. My assumptions about the architecture often change, but having more down on disk when I refactor the interfaces helps me make more informed decisions about what the next interface should look like.

      In reality, I think its all the same process. It's just a question of when do you stop designing and start coding and when do you stop refactoring. My feeling on not having any design at all when you start is that its too tempting to stop refactoring when the program becomes "good enough"

      I think when this happens the engineers rapidly get out of touch, and the implementer flair along helplessly, cranking out tons of lousy code that's bug-ridden and unmaintainable. Those studies about some programmers being 10x more productive than others... I think they're right on.
      Agreed. I don't think for a minute that the engineers shouldn't be involved in the whole cycle. The best use I've seen if where the senior engineers get the trickier (alas, more interesting) parts of the code and the parts where the architecture is just too much of an unknown. Come test time they're heavily involved in integration testing - since they know how the whole system fits together, they're best suited to pull all the different parts together and find out why things don't work.

      On the whole, it's still a very young discipline, and lots of people are trying new things. I think it's an exciting time to be in the field.

      Cheers!

    43. Re:Is it just me? by tcopeland · · Score: 1

      > I also think that its a good idea
      > to do a preliminary design

      Yup, the XP list is full of threads about that topic.

      > Figure out what modules there will be

      I hear you... I guess I just have trouble seeing what I'll need. Or I think I need a lot, and so I code it, and then I realize I didn't need it after. And variations on those themes.

      > I think it's an exciting time to be in the field.

      Well said indeed, good discussion all around!

      Yours,

      Tom

    44. Re:Is it just me? by sir99 · · Score: 1
      Um...no...some of us read more than 10 words per minute ;-)
      That article was 5,604 words long. You read 1121 words per minute? Impressive.
      --
      The ocean parts and the meteors come down
      Laid out in amber, baby.
    45. Re:Is it just me? by Anonymous Coward · · Score: 0

      I am a mathematician, and I find that people who come from a Physics(should that really be capitalized?) background have little understanding of math in general. I also find that computer programming has quite a bit in common with doing mathematics. The underlying concepts are very similar: problem solving, abstraction, and formalism. In both cases you leverage past work by using previous theorems/lemmas or using API functions or toolboxes. In both there is also an appreciation for slickness in some cases, as well as solutions which are easily communicated in other cases.

    46. Re:Is it just me? by TheLastUser · · Score: 1

      As far as the laws of mathematics refer to reality, they are not certain, and as far as they are certain, they do not refer to reality. - A. Einstein

      Should physics be capitalized? I guess not, I should pay more attention to my capitalization.

      All fields of endevour strive for "slickness" its a human trait to appreciate cunning and certainly not limited to mathematicians. The most brilliant displays of ingenuity I have seen are those by Astronomers. The story of how to measure the size and age of the universe is a marvel of human ingenuity that started in ancient Greece and continues to this day.

    47. Re:Is it just me? by Anonymous Coward · · Score: 0

      > 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.

      If you believe that design/code is somehow more like painting than building a house, it's just because you've not seen a truly brilliant, innovative *house* yet.

      Creativity != Art
      Creativity = Talent

    48. Re:Is it just me? by Anonymous Coward · · Score: 0

      You are absolutely right. Grahams speaking volumes of diorreah in this one...

    49. Re:Is it just me? by Hognoxious · · Score: 1
      Religious priests, too, have been going on for millennia
      Athiest priests, OTOH, are a relatively new phenomenon.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    50. Re:Is it just me? by Anonymous Coward · · Score: 0

      ..knowing how to make a dovetail or an infinite loop.

      Hope your painting is better than your coding... :-)

    51. Re:Is it just me? by Anonymous Coward · · Score: 0

      It should be pointed out that there's a lot more to XP than just test-first. Personally, I agree with you-- I hardly ever do test-first for the same reasons you describe. But there's still a lot of other good stuff in there. And that actually advocate the design-as-you-go methodology you and Graham are both talking about.

    52. Re:Is it just me? by buckminsterinsd · · Score: 1
      moogla sez:

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

      Hey, I'm a radical reductionist to the bone but I wanted to point out:
      • When I'm in the middle of a really good hack, my fingers are doing all the coding and my brain is just sorta watching them go for it. The code just flows off the tips of my fingers, no typos, no errors, just like it ought to. If my brain is doing anything at all,it's looking a couple of lines ahead to see what kinda ugly shit might come up...
      • I don't know if this is the geek equivalent of 'being in the "Zone"' that the jocks talk about but it sure sounds similar.
      • I'm told great musicians let their finger make the notes come out.
      I got no use for metaphysics but this experience seems pretty universal. Anybody got other examples?
      best regards,

      buck
      __________________________________________________ ________
      "If we don't believe in freedom of expression for people we despise, we don't believe in it at all."- Noam Chomsky
  7. No way by Paddyish · · Score: 1
    What you learn about programming in college is much like what you learn about books or clothes or dating: what bad taste you had in high school.

    WHAT??? I thought 'poke 53281,0' and 'poke 53280,0' made for a better contrast setting...

    1. Re:No way by Anonymous Coward · · Score: 0

      I wanna peek at what your poking.

  8. Computer programming is NOT an art. Get over it. by Anonymous Coward · · Score: 0

    Programming is as an art as bridge buidling is.
    Engineering is not an art. People who see's it as an art have ego problem. It's a science and there's nothing wrong with it. Art deals with human emotions, feeling, states of mind, philosophy. Computer programming do not. It's insulting art and science to say this kind of thing.

  9. Other CS Names Were Considered by SanLouBlues · · Score: 1, Funny

    But computology was too cultish sounding.

    Computics was overruled because it sounded too much like the future os Unix, and people didn't want to get sued for their domain names.

    Programatics was taken by a musical group made up entirely of Stepford children.

    Computer Engineering wasn't used because at the time engineers were all people who worked with things like buildings or cars.

    Computer Science makes as much sense as metaphysics. Besides, in the begining, these folks were actually creating theories and discovering new ways to do things. And Computer Scientist sounds better than Efficiency Expert on a resume.

    1. Re:Other CS Names Were Considered by jellomizer · · Score: 1

      Computer Engineering wasn't used because at the time engineers were all people who worked with things like buildings or cars.

      I thought engineers drive trains?
      So I would think a Computer Engineer is someone who operated a computer.
      Because I can operate a computer so I am a Computer Engineer.
      Cool and I studied Computer Science.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    2. Re:Other CS Names Were Considered by atgeirr · · Score: 1

      In Norway, it's called informatikk, which would translate to informatics or something like than. It may be that the two terms cover slightly different things, though.

  10. Coding on paper... by Anonymous Coward · · Score: 0

    "For example, I was taught in college that one ought to figure out a program completely on paper before even going near a computer"

    I absolutely despised this in high school and college. Maybe DESIGN on paper, not code. I think the professors missed this.

    Good design will usually result in good coding.

  11. 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.

  12. Whoa... by Anonymous Coward · · Score: 0

    ... you mean Scientology isn't.... crap. I was so close to the third level!

    Posted as an AC because I'd rather not have to flee the country.

  13. 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.
    1. Re:really? by Junks+Jerzey · · Score: 2, Informative

      Admitedly I haven't RTFA but ...

      And when you RTFA, you'll realize that your comment has nothing whatsoever to do with the article.

    2. Re:really? by NickFitz · · Score: 3, Interesting

      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.

      Shame you didn't RTFA, as your point is explicitly addressed:

      Source code, too, should explain itself. If I could get people to remember just one quote about programming, it would be the one at the beginning of Structure and Interpretation of Computer Programs.

      Programs should be written for people to read, and only incidentally for machines to execute.

      You need to have empathy not just for your users, but for your readers. It's in your interest, because you'll be one of them. Many a hacker has written a program only to find on returning to it six months later that he has no idea how it works.

      I felt it was important to the worth of the article that he actually covered important points like this. Overall, whether or not one agrees with the author's use of the word "hacker" in this context, I as a programmer recognised so many things in this article that I have come to understand and appreciate in the past 30 years of mucking about with these wondrous machines. I was able to think of specific examples from my own experience of every important point made.

      YMMV... :-)

      --
      Using HTML in email is like putting sound effects on your phone calls. Just say <strong>no</strong>.
    3. Re:really? by BrokenHalo · · Score: 0, Offtopic
      I'm very sorry, but maybe you should have just read the fine article. Who knows, you might just have learned something.

      Your post is utterly off-topic.

    4. Re:really? by jgerman · · Score: 1

      Put it this way... you'd end up with sub par talent. A real hacker will code circles around the code monkeys you'd hire. Your blank generalization that hackers are not responsible software developers is simply not true.

      --
      I'm the big fish in the big pond bitch.
    5. Re:really? by Anonymous Coward · · Score: 0

      A "real hacker"? What is that? Writing software is not equivalent to hacking, in my mind. At the very least, doesn't hacking imply using a system in a way which was not intended when it was created? What exactly does that have to do with good software design and implementation? The kind of skills it takes to cause systems to do something they were not created to do are not necessarily the skills that are needed for excellent software production.

    6. Re:really? by Anonymous Coward · · Score: 0

      Your post is utterly off-topic.

      Well isn't that ironic.

  14. The converse by avandesande · · Score: 1, Funny

    Another language trick I hate is when they stick 'arts' on something that is not artistic, like the 'Dental Arts' office down the street.

    Would you like Van Gogh to work on your teeth?

    --
    love is just extroverted narcissism
    1. Re:The converse by Anonymous Coward · · Score: 0

      You are confusing Fine Art with Art.

    2. Re:The converse by cmmike · · Score: 3, Funny

      > Would you like Van Gogh to work on your teeth?

      he's more of a plastic surgeon, actually.

      leave your teeth to Ecsher.

      --
      -- LIVE FATS DIE YO GNU
    3. Re:The converse by bhsurfer · · Score: 0
      Sometimes when I look in the mirror I feel like Picasso worked on my teeth.

      I can see the ad in People Magazine now: "Hair by Dali..."

      There must not be enough oxygen in my cubicle.

      --
      Those are my principles, and if you don't like them... well, I have others.
      Groucho Marx
    4. Re:The converse by aflat362 · · Score: 0
      You are confusing Fine Art with Art.


      Agreed.


      Dictionary.com 1st definition of the word Art as a noun:


      Human effort to imitate, supplement, alter, or counteract the work of nature.


      I would say that dentistry is an art in this definition as it is counteracting the work of nature.


      Also - if you look up the word Science you will find that there are very liberal definitions of the word science. Ie: Christain Science


      Personally, I find the idea of referring to anything religious as a science offensive.

      --

      Conserve Oil, Recycle, Boycott Walmart

    5. Re:The converse by tunabomber · · Score: 1

      Another language trick I hate is when they stick 'arts' on something that is not artistic

      As a learned Sandwich Artist,I cannot tell you how much I agree with this statement.

      Stupid leechy hygenists- always trying to make themselves look more cultured at the expense of the prestige of the Sandwich Artist designation!

      grumble...grmble..gr.

      --

      pi = 3.141592653589793helpimtrappedinauniversefactory71 ...
    6. Re:The converse by Mr.+Bad+Example · · Score: 1

      Would you like Van Gogh to work on your teeth?

      Better than Picasso...you'd end up with one incisor in your left ear, and three molars sticking out of your right eye.

    7. Re:The converse by arsinmsn · · Score: 1

      See Woody Allen's short story "If the Impressionists had been Dentists," anthologized (I think) in "Without Feathers."

    8. Re:The converse by Anonymous Coward · · Score: 0

      Actually, he was an ears, nose & throat man. Minus the nose & throat.

    9. Re:The converse by Z4rd0Z · · Score: 1

      I'm in that unfortunate boat as well.

      --
      You had me at "dicks fuck assholes".
  15. Hackers need not learn computer programming by Anonymous Coward · · Score: 0

    "Only a small percentage of hackers can actually design software, and it's hard for the people running a company to pick these out"

    As BArney would say, "imagination is more important than a college education in computer science"

  16. I am like a painter by archeopterix · · Score: 3, Funny

    A grumpy guy in blue overalls carrying a big brush, a bucket full of paint and painting a gazillion walls a day. At least that's how I feel at work. Yes, I am definitely a painter.

    1. Re:I am like a painter by avandesande · · Score: 1

      Thank you. Now I understand the painter anology. Mod this up!

      --
      love is just extroverted narcissism
    2. Re:I am like a painter by Chucow · · Score: 1
      Funny because it really can be rather true. While there are the really creative hackers who can (in some ways) be equated to Renaissance painters, the vast majority of programmers probably fall under the more generic definition of a painter.

      While some (Renaissance) create original methods (such as methods of sorting) within programming, most (painters) simply create programs which use these patterns (buckets of paint) to serve their purpose. While they may use them creatively, it will never become more than a nicely painted wall - a decent picture at best - and not something truly original, artistic, or unique.

    3. Re:I am like a painter by ghunza · · Score: 1

      Could be worse... you could be like janitor with a bucket and a mop cleaning up after the system dumps core all over the place.

  17. Transcending the medium by Anonymous Coward · · Score: 0

    I wish more people who write computer code could transcend the medium and venture into creating art (as long as they comment their code ;).

    Hell, I wish more would give a shit beyond "does it kinda work, at least without causing data loss".

    I've seen so much code where the person writing it defines hack as "to cut or mutilate" that were I Baby Jesus I'd be crying right now.

  18. Civil Engineering isn't Engineering either. by Anonymous Coward · · Score: 0

    Engineering, if you want to be anal, is all about engines. If you can take a term that has nothing to do with bridges, etc, and apply it to a field that has nothing to do with engines, then why can you not to Software?

  19. This is.. by Gortbusters.org · · Score: 0

    one horrendously long article, screw RTFA!

    --
    --------
    Free your mind.
  20. 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?

  21. Yep by MagPulse · · Score: 5, Informative

    I liked reading this article because lately I've started to work on my drawing skills. It's very humbling to do something I'm skilled at (coding) and then move to something where people can barely tell what I'm trying to draw.

    One commonality I've seen so far is that you just have to jump in and do what you can before anyone can help you. Posting questions like "how do I write an OS?" or "how do I draw such-and-such?" will yield theory but not get you far. On your first tries it's going to look like a bunch of scribbles (or spaghetti code that is far from compilable), but you have to put something down for others to critique. And of course coding and art both take tons of practice time. This goes along with just trying and not worrying about the results. If I didn't code unless I was sure each line was perfectly bug free.. well, that's impossible.

    I've been working on realistic and anime-style people. Humans are the most rewarding subjects and also one of the hardest to draw, but I wouldn't want to draw anything else. For anyone else wanting to start in this direction, I recommend the PolyKarbon BBS. There are some amazingly talented people there that are very helpful. This site with anatomy books is a good reference. If you have more helpful links, like a newsgroup for new artists (I haven't found any that are good), please post them.

    1. Re:Yep by Anonymous Coward · · Score: 0

      I got to say. I tried to do some drawing too, it seems that somewhere the writer of the article is right.
      You all probably know the site How to draw manga. There's a little tutorial on there, it covers some basics like getting the proportions right and such. It's not much, but it can you started on drawing anime-style characters.

      On the article IMHO he's stretching the word hacker, and the connection between hacking and painting. But other than that, he's got a point.

    2. Re:Yep by MagPulse · · Score: 1, Informative
      Here are my links on drawing anime: And here are some on drawing game art: And if you want to pick up an inexpensive book to get started, this one is great. I've seen it in both Borders and Barnes and Noble for ten bucks. I've heard over and over that you can't start out drawing anime-style people, because copying a style that is already a heavy exaggeration of real people won't give good results. You need to start with solid people-drawing skills and then develop your style from there, using basic anime rules like big eyes, shiny hair, etc.
    3. Re:Yep by mav[LAG] · · Score: 1

      As someone who has tried his hand at a bit of charcoal , graphite , pencil, and the odd digital effort, allow me share the two top tutorials (IMHO) for learning to draw. The first one: buy Drawing on the Right Side of The Brain by Betty Edwards. It can take you from "can't draw to save your life" to "I can draw realistic portraits from life" in a couple of weeks. I'm serious. It's that good.
      The second is here. It's Paul Wilkinson's tutorial on lifelike portraits - with an especially good section on proper shading and how to do it. I've been saying drawing is very like coding for years - it's nice to see someone else quantify that.

      --
      --- Hot Shot City is particularly good.
    4. Re:Yep by MagPulse · · Score: 1

      Thanks for the recommendation. I'm on my way to Barnes and Noble with a gift card today, so I'll definitely check out the Betty Edwards book.

    5. Re:Yep by MetallicBurgundy · · Score: 1
      I am doing something similar, and the best reference I have found is Drawing on the Right Side of the Brain by Betty Edwards.

      The author does an incredible job describing the common problems one encounters when trying to learn to draw, and the exercises are carefully designed to teach you to get past these pitfalls. Excellent book.

      Order a copy, or check it out from your local library. This book radically changed my ability to draw.

      Oh, do all of the exercises, using the equipment prescribed... They pay off..

      --
      MetallicBurgundy
    6. Re:Yep by Anonymous Coward · · Score: 0
  22. 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:-)

    2. Re:The Art of Computer Programming by rcs1000 · · Score: 1

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

      Ummm... I have his Fundamental Algorithms Volume I. I think the "and claim they are devoid of science" part of the sentance is redundant.

      Only the truly masochistic would manage to pull themselve through the end of Knuth. Not that the work isn't brilliant in its own way; but the prose isn't exactly sparkling.

      --
      --- My dad's political betting
    3. Re:The Art of Computer Programming by dewdrops · · Score: 1


      Only the truly masochistic would manage to pull themselve through the end of Knuth. Not that the work isn't brilliant in its own way; but the prose isn't exactly sparkling.

      _The Art of Computer Programming_ is a book for those interested in purely programming. Not managers, industry analysts, tech sales people, etc. The prose is written with this in mind and, like many mathematics texts, is geared towards preventing it from being misunderstood rather than making it approachable.

      The fact that a non-programmer found it difficult doesn't say anything about the book (the same way a great medical text would be difficult for one without a background in medicine). Most of its intended audience /enjoy/ working through it and find that Knuth elegantly presents many very interesting ideas.

    4. Re:The Art of Computer Programming by Catiline · · Score: 1
      Knuth [stanford.edu] says that computer programming is an art, but I dare you to read his books and claim they are devoid of science.
      Art is full of science too. (RTFA?) There's also a fair bit of mathematics (in getting perspectives right for realism).

      I love this art/code link as presented. I studied art first because it was required by my school, then as I thought it was a way for me to improve concentration (I'm not ADHD but focus has always a problem for me), now I'm starting to see that as I improve in my art skills I start to see how code works together better.

      In a funny, abstract way, good code is art. (At least as much so as "code is speech" and "code is law".)
  23. If hacking is art..... by Nursie · · Score: 1

    Then I'm an ANSI poet!

    Hey! it worked in that club last year ;-)

  24. I used to be a "software engineer" ... by cushty · · Score: 3, Funny

    ... whenever I first met people but I found their reply was "Oh" followed by a long pause. Now, whenever I introduce myself and have to say what I do, I tell people I'm an "artist": I take bits and bytes and create a masterpiece, or I colour-by-numbers.

    1. Re:I used to be a "software engineer" ... by TerryAtWork · · Score: 1

      Just tell them you're a Geek.

      You're not going to laid laid, anyway.

      --
      It's Christmas everyday with BitTorrent.
    2. Re:I used to be a "software engineer" ... by cushty · · Score: 1

      I did and they asked me to get my bits out.

  25. Re:"a language that lets us scribble and smudge".. by Anonymous Coward · · Score: 0

    do you even need a mouse to code?

  26. 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.
  27. Not just you, but.. by Anonymous Coward · · Score: 0

    The art isn't in the final product, but in the process. Its a fairly fundamental concept. If you have any kind of creative job you should understand the feeling of satisfaction from creating an elegant solution (as opposed to a clever one). Maybe you need a new job? {not criticizing, just questioning}

  28. A better article on Art and Programming... by Anonymous Coward · · Score: 1, Informative

    Is at The Pragmatic Programmers web site.

    1. Re:A better article on Art and Programming... by Anonymous Coward · · Score: 0
  29. .SHITE by maharg · · Score: 1, Troll

    footnote 2 states:

    I've been told that Microsoft discourages employees from contributing to open-source projects, even in their spare time. But so many of the best hackers work on open-source projects now that the main effect of this policy may be to ensure that they won't be able to hire any first-rate programmers.

    but should surely read:

    the main effect of this policy may be to ensure that they still won't be able to hire any first-rate programmers.

    ;o)

    --

    $ strings FTP.EXE | grep Copyright
    @(#) Copyright (c) 1983 The Regents of the University of California.
    1. Re:.SHITE by stratjakt · · Score: 0, Troll

      Microsoft discourages employees from contributing to open-source projects

      And McDonalds discourages employees from handing out free hamburgers to penniless bums and hippies. Shocking.

      Troll aside, AFAIK Microsoft can't and doesnt prevent anyone from contributing to open source, but the employee who does better be ready to prove that he didn't contribute any of the companies code, else he'd be fired and probably sued.

      It's common sense, and pretty much par for the course for any paid programmer.

      To keep the analogy, McDonalds doesnt prevent you from giving food to the homeless, but it better be your own food and not theirs.

      --
      I don't need no instructions to know how to rock!!!!
    2. Re:.SHITE by maharg · · Score: 1

      AFAIK Microsoft can't and doesnt prevent anyone from contributing to open source, but the employee who does better be ready to prove that he didn't contribute any of the companies code, else he'd be fired and probably sued.

      they'd be fired, or even worse, assigned to the IIS security team ;o) seriously though, I don't think M$ would sue - they'd have to release the source code in court to prove the case !

      --

      $ strings FTP.EXE | grep Copyright
      @(#) Copyright (c) 1983 The Regents of the University of California.
    3. Re:.SHITE by stratjakt · · Score: 1

      Well, that's what I'm saying. In most cases, it wouldnt be worth the hassle of fighting unless it was pretty clear that you were stealing company IP.

      I'm sure it's a policy in the employee handbook that you agree not to release any trade secrets or source code or designs to anyone outside the company.

      It's not like they have the anti-open source stormtroopers running around Redmond looking for people with knoppix CDs, that's just how the zealots make it seem.

      If you worked on the NT Kernel design team, and also contributed to the linux kernel, there'd definately be a conflict of interest there, and you might get in crap.

      Or if you were working on NTFS for windows, and submitted an NTFS driver to linux, stuff like that.

      If you work on some drawing routines for Visio and are helping out with an OSS encryption program, I doubt it would be an issue.

      --
      I don't need no instructions to know how to rock!!!!
    4. Re:.SHITE by maharg · · Score: 1

      stratjakt, don't mind me saying this, but you seem to be pretty authoritative on M$ policy and practice in this area - is there something you're not telling us ? ;o)

      --

      $ strings FTP.EXE | grep Copyright
      @(#) Copyright (c) 1983 The Regents of the University of California.
  30. 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.

  31. Re:Computer programming is NOT an art. Get over it by bumby · · Score: 1

    Tell me this is not art!
    http://domm.zsi.at/talks/obfu_yapc2002/obfu_ yapc.html

    --
    Hey! That's my sig you're smoking there!
  32. Different lands by selan · · Score: 1
    Perhaps one day "computer science" will, like Yugoslavia, get broken up into its component parts. That might be a good thing. Especially if it meant independence for my native land, hacking.

    Lots of universities have computer science departments as well as information systems (or some variation of that term) departments. Like theoretical vs. applied mathematics or physics, the CS depts. concentrate on theory (algorithm development, etc.) and IS is geared toward practical applications (database application development, etc.).

  33. 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...
  34. 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
  35. 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 veddermatic · · Score: 1

      Don't you mean "When this Marklar finished Marklar in Marklar, this Marklar went to Marklar to study Marklar. A lot of Marklar seemed Marklar that a Marklar interested in Marklar would also be interested in Marklar...."

      Too much South Park, not enough sleep. /me heads towards coffee pot yet again.

      --
      Department of Homeland Security: Removing the rights real patriots fought and died for since 2001
    2. Re:This is a pointless exercise by paiute · · Score: 1

      No, I meant: "Malkovich? Malcovich! MALCOVICH!! Malcovich. Malkovich? Malcovich! MALCOVICH!! Malcovich. Malkovich? Malcovich! MALCOVICH!! Malcovich."

      --
      If Slashdot were chemistry it would look like this:Cadaverine
    3. Re:This is a pointless exercise by IICV · · Score: 0

      Actually, it could be said that blanking and blanking are the exact same thing.

    4. Re:This is a pointless exercise by Anonymous Coward · · Score: 0

      I attended the dinner at Northeastern where he gave this talk and I think that if you read past the first paragraph you would have enjoyed it as much as I did when I heard it. I didn't read the article, I assume its similar (but more beefed up) to what I saw, just a disclamer.
      The point isnt' to say x = y, it was to give people some tought about how to approach coding. I used to be really excited about coding, i used to hack things. Then I started doing it as a professon and its lost some of the wow factor. I can do more things now, I write cleaner better code, but its become a task. I just go through the motions and crank it out as fast as I can.
      Paul's talk made me stop and think about how my skills have progressed and I'm still hacking, creating, making something that i would have been really impressed with long ago.
      Its made me stop and think about the creativity and beauty (as in clean code, works well, less bugs). Its good to look at things from a different perspective from time to time.
      I took a lot of things away from it considering it was a light, don't get in the way of desert, talk.
      Its pretty amaising that Paul is such a good speaker and writer considering hes one of the best lisp hackers out there. Most of the time those skills are mutually exclusive.

    5. 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.

    6. Re:This is a pointless exercise by pileated · · Score: 1

      Not pointless at all. For instance he's right about the early Mac. It just worked. Many programmers have lost sight of the goal of "just working." It's an important point, among many in the article, and has nothing to do with the "blankety, blank, blank" analogies that you present.

    7. Re:This is a pointless exercise by GlassHeart · · Score: 1
      It seems like there is a stigma against the "hacking method" of development in the large software engineering companies.

      Yes, because while hacking can work very well for a single developer, it fails terribly when you have a team. If the design is not carefully and rigidly broken apart into digestable pieces first, with clear APIs separating your developers, what you end up with is a lot of misunderstandings, lost time, and wasted efforts. The paper design, when properly maintained, is crucial over the life cycle of the product, where you expect to have multiple maintainers. Finally, hacking is also much harder to manage, because you don't have a plan to compare progress against.

      hacking is a legitimate technique that has advantages over the traditional, slower and possibly less flexible, software engineering moethods

      Hacking is not a technique. It cannot really be taught to another programmer, as it involves little or no rules. In fact, you can say that hacking is precisely the lack of a technique. This freedom can be put to good use by a good programmer, but easily abused by everybody else to produce crappy software.

  36. 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 ?

    1. Re:There is place for everybody by Nursie · · Score: 2, Funny

      Doesn't this remind you a lot of the software out there ?

      Reminds me of quite a few cars too...

    2. Re:There is place for everybody by Anonymous Coward · · Score: 0

      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 ?
      Do you use Windows? In LInux its just the other way round ...

    3. Re:There is place for everybody by Realistic_Dragon · · Score: 1

      "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."

      Uhhh, no. It takes an engineer to design a car. He only needs the help of a designer if he wants to sell it*.

      *Or at least, if he wants to sell it to people who don't realise that a form that perfectly compliments the function is truley beautiful. The SR-71 is a good example of this (as are many planes) and so are many structures - the elegance of the solution to the problem is just stunning. The BMW X5 on the other hand is a perefct example of function being sacrificed for form, and such is even uglier than the Fiat Multipla IMO.

      --
      Beep beep.
    4. Re:There is place for everybody by tcopeland · · Score: 1

      > A few engineer came up with that argument
      > that they were producing art, that a
      > software couldn't / shouldn't judge them.

      There's nothing artistic about writing code that has a high cyclomatic complexity. That's just bad code.

      Yours,

      tom

    5. Re:There is place for everybody by MyOwnIdentity · · Score: 1

      "Think about this, how beautifull would a car that looks good but keeps breaking down be ?" I believe that would be called a Porsche.

    6. Re:There is place for everybody by bobv-pillars-net · · Score: 1

      Now I gotta look up "cyclomatic complexity."

      (sigh) I guess I DO have free time to burn; I'm reading Slashdot, aren't I?

      --
      The Web is like Usenet, but
      the elephants are untrained.
    7. Re:There is place for everybody by tcopeland · · Score: 1

      Ah, right you are, should have added a link. It's a measure of how complicated a piece of code is - you (more or less) just count the loops and if statements and such.

      Yours,

      tom

    8. Re:There is place for everybody by bobv-pillars-net · · Score: 1

      Thanks, but you're a bit late. I just searched for "cyclomatic complexity" and followed the first link.

      Your link looks pretty interesting, too.

      Which brings up another question:

      Are there any Open Source programs which measure cyclomatic complexity?

      (off to google again...)

      --
      The Web is like Usenet, but
      the elephants are untrained.
    9. Re:There is place for everybody by tcopeland · · Score: 1


      PMD - http://pmd.sf.net/ - has a rule to check it.

      Yours,

      tom

    10. Re:There is place for everybody by pyrrho · · Score: 1

      how beautifull would a car that looks good but keeps breaking down be ?

      I understand the Jaquar is a bit more reliable these days. What a beautiful car.

      --

      -pyrrho

  37. mathematics is an art too... by oliverthered · · Score: 4, Interesting

    anything that requires creativity, and not just observational descovery is an art.

    You can do computer science, and you will get a bullet proof system, but it takes a hell of a long time. People arn't that good at science, that why we created computers. code-breaking and missile targeting and the nuke.

    --
    thank God the internet isn't a human right.
    1. Re:mathematics is an art too... by BrokenHalo · · Score: 2, Interesting
      And a lot of real science is an art, too, in the sense that it takes creativity and imagination to bring it to life.

      I spent over 10 years as a sysprog, and never questioned the term "Computer Science" for a moment until 2 years ago when I changed focus and went back to school to study biotechnology. Suddenly, I was faced with the "Scientific Method (tm)" that every other snotty-nosed nerd has had to cope with for the last x^y years, and it was quite a comedown.

      The scientific method, however, is a beautiful means of giving substance to a construct of the imagination.

    2. Re:mathematics is an art too... by SN74S181 · · Score: 1

      The Scientific Method is a marvelous invention of humanity. However, it shouldn't be confused with the 'Job Security for Lardbutts Method' which many people mix in liberally with the former. Tenure, political correctness, grantsmanship, cronyism, and all the cancers of eliteism that infect most Academic Institutions these days are examples of the latter.

      Much of Academia does NOT follow a Scientific Method, they give lip service to it, while they roll around in the feedlot provided for those who never, ever, leave school.

    3. Re:mathematics is an art too... by Tony-A · · Score: 1

      Right.
      Consider the term "escape artist". You know there is a lot of technical skill, but just technical skill is not enough.

    4. Re:mathematics is an art too... by shaijay · · Score: 1

      anything that requires creativity, and not just observational descovery is an art. To say that Art is defined or requires creativity is foolishness. All Art requires is a subject and and observer. It is your eyes or ears - your facilities for observation, and not your hands through the act of creation, which make you an artist. Beauty is in the eye of the beholder. By placing limits on art which require creativity, you have, in essense, destroyed it. Could it be so creative that it is no longer art? If it has no creativity, it is not art? The painting or photographing of any still life (or just a swath of fabric) which the Artist does not arrgange for themself invalidates your statement, as these well known artistic actions are purely observational in nature.

    5. Re:mathematics is an art too... by Anonymous Coward · · Score: 0

      You're describing aesthetics, not art.

    6. Re:mathematics is an art too... by shaijay · · Score: 1


      Analysis is aesthetics, Process is art.

  38. Too many notes by Anonymous Coward · · Score: 0

    I've often fancied myself a painter. I've been told more than once that reading my code was like trying to interpret a Jackson Pollock painting.

  39. We Need to be Engineers!!! by Anonymous Coward · · Score: 1, Interesting

    What Graham doesn't understand is the distinction between those fiew people who can blend art and science and those of us who work in the trenches every day.

    Here's the thing. It's great if you can create huge, scalable architectures from scratch. You have the chance to create art.

    But if you're like me, spending days slogging through large codebases with relatively inexperienced developers, you NEED to be engineers. Otherwise, people who don't have 20+ years experience will do whatever they want and call it "art."

    You NEED engineering processes (design, QA, etc.) to remain sane. Graham doesn't see this because he doesn't have to.

  40. Great Quote by gregmac · · Score: 5, Interesting
    So hackers start original, and get good, and scientists start good, and get original.

    What a great quote. This is so very true.

    Dynamic typing is a win here because you don't have to commit to specific data representations up front. But the key to flexibility, I think, is to make the language very abstract.

    From what I've seen, very few people - espessially those with degress in computer science - share my views on programming. This article takes a different approach to it, but it's the same view I have, when it gets down to it. I usually say that when programming, you shouldn't be bothering with types, memory locations, pointers, and other nonsense that has nothing to do with how the program works. Or in other words, the formal 'scientific' aspects of programming.

    Most people will disagree with me here, and I've been involved in many arguments over it. My programing language of choice right now? PHP. Why? Because it sucks less than the other choices. It still boggles my mind that C is used to do any high-level programming (ie, anything besides api's to system calls, and writing drivers and kernels). "But it's so much faster" I hear all the B.Sc's saying. And they're right, it does run faster. It also takes ten times as long to code. And ten times as long to find all the strange bugs and buffer overflows that eventually show up as exploits.

    Paul Graham hints at it in his article, but there is no good language right now for writing applications in. PHP in itself is a nice language to write, although it's an interpreted language, not compilied. Perl is a bit too messy for my liking (Paul also mentions this when he says he knows people who wrote perl programs and came back and couldn't understand how they worked), although it is quite powerful. Java is nice in theory, but implemented a bit slowly, and it's a bit too scientific, really -- you spend so much time handling exceptions and making sure all your code is very formal.

    So what's the answer? I don't know. But it doesn't exist yet, as far as I know. Until then I'll continue running my slow PHP programs on modern "slow" computers. That run at a mere 1.5 GHz.

    --
    Speak before you think
    1. 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 ...

    2. Re:Great Quote by gregmac · · Score: 1

      Oh, I agree. I know and understand the reasons. I just find that when I'm coding in Java (although admittedly, it's been a while), I spend more time writing exception-related code (handlers or triggers) than I do writing logic.

      --
      Speak before you think
    3. Re:Great Quote by costas · · Score: 1

      I completely agreed with Graham's article. I know his tool of choice is LISP, but as I was reading the text, my epiphany with Python kept coming to my mind. I used to hack PHP too, but I don't any more. PHP is better than the alternatives in the Web-building niche, but it's not either as general-purpose or as scalable (in terms of project size) as Python --my toy newsbot in my .sig is 100% pure Python, all 20kLOC of it... I could go on and on about Python, but that will hardly be as persuasive as going over to python.org, reading the tutorial and writing some simple short project in py. You will be converted in no time...

    4. Re:Great Quote by Anonymous Coward · · Score: 0

      There's rapid prototyping and there is programming. If a prototype is all you need, untyped script-languages will do, but you will usually want a program which is at least clean enough to pass a type-checking compiler.

    5. Re:Great Quote by geekoid · · Score: 1

      " It still boggles my mind that C is used to do any high-level programming"
      Why?

      "Perl is a bit too messy for my liking(Paul also mentions this when he says he knows people who wrote perl programs and came back and couldn't understand how they worked)"

      that has nothing to mdo witrh PERL, and everything to do with sloppy coding practices.

      "although it is quite powerful. Java is nice in theory, but implemented a bit slowly, and it's a bit too scientific, really -- you spend so much time handling exceptions and making sure all your code is very formal."

      I get it, you are what writers call 'a hack'.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    6. Re:Great Quote by rjh · · Score: 2, Interesting

      I wrote an essay about Language Holy Wars a while ago which, perhaps, you might find interesting. It's over here.

      Personally, I find it nothing short of terrifying that C is still used as much as it is. When you're dealing with hard realtime constraints, or an embedded system which barely has a bit of memory to spare, etc., then I can see it... but otherwise, for God's sake, use something appropriate to the problem set.

      Personally, I love LISP. If only there were good UNIX API bindings for it, and a good graphical toolkit...

    7. 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).

    8. Re:Great Quote by Anonymous Coward · · Score: 0

      Java? Java is the biggest bitch of them all, from the slow performance to the buggy VM to the constant casting one has to perform. (shudder)

    9. Re:Great Quote by BondHeadGuy · · Score: 1
      In my experience, programmers who prefer less formal and weakly-typed languages for development have never had to work on a project of any considerable size. Say, on the order of of 10^5 lines of code and up.

      Sure, less formal languages make it much easier to whip up form-based GUIs when you want to (for example) be able to treat numbers as strings and vice-versa with no questions asked. No argument there. But when your application builds up to significant levels of complexity, you'll be happy to be using a language with "formal" and "scientific" features that save you from hanging yourself on things like bogus implicit type conversions.

    10. Re:Great Quote by Ed+Avis · · Score: 1

      But types are not 'nonsense that has nothing to do with how the program works'. If you have a function to return the largest element in a list, then its type signature will state that it expects a list of things and there should be some comparison function defined on those things. For example in Haskell the type might be 'Cmp a => [a] -> a' stating that for a type 'a' which has a less-than operator ('Cmp'), the function expects a list of 'a' elements and returns one. You can see from the type quite a lot of what the program does.

      Of course things which are more implementation details like 'should this integer take 32 bits or 64 bits of storage' or 'should this (read-only) parameter be copied onto the stack or passed by reference' can get in the way. That's why it's often good to use a high-level language which decides these things for you. And also to use a language with type inference so you don't have to specify every fiddly little type, you can just add type declarations where you want to and the compiler will work out the rest.

      Don't let the limitations of Pascal or C turn you off static typing altogether. A type system like that in ML or Haskell really helps productivity rather than impeding it.

      --
      -- Ed Avis ed@membled.com
    11. Re:Great Quote by paRcat · · Score: 1

      Python, python, py-thon!

      Seriously, I'm writing a GUI'd app right now in Python with wxWindows for our sales staff. Yes, it's about 5 times slower than it would be in C, but it's going together quite quickly.

      And no bothering with memory calls, variable types, etc. And under windows it'll even compile into an .exe for the few 9x machines they're using. nifty.

    12. Re:Great Quote by Anonymous Coward · · Score: 0



      Doesn't matter how fast you can put together an unusable program.

      I could build a house really quickly, too, instead of a solid one with quality materials and construction, but that doesn't mean I'd want to live there.

    13. Re:Great Quote by Anonymous Coward · · Score: 0

      Damn straight! Preach on! PHP is awesome. So is Python. It doesn't make sense to go down to C/C++ (or Java) unless you have to.

    14. Re:Great Quote by gregmac · · Score: 1
      " It still boggles my mind that C is used to do any high-level programming"
      Why?

      Do I really have to answer that? How about the amount of time and energy you spending thinking about types, where to allocate memory, etc. You have a CS degree, don't you?

      that has nothing to mdo witrh PERL, and everything to do with sloppy coding practices.

      Yeah, that was my point later on that you managed not to quote. But you have to admit that a lot of perl programs use a lot of inline regex. And you also have to admit that regex is probably one of the most unreadable syntaxes still in use today (albeit, incredibly powerful).

      I get it, you are what writers call 'a hack'.

      Meh, perhaps. But I can show you pages of planning, diagrams of datastructures, etc, for any even midly-large program I've written. I just prefer to spend my actual coding time thinking about the program, not how to handle some random file exception. I dunno. I guess i'm weird that way.

      --
      Speak before you think
    15. Re:Great Quote by gregmac · · Score: 1
      But types are not 'nonsense that has nothing to do with how the program works'.

      I was expecting a reply jumping all over that comment, although you didn't quite do it in the way I thought.

      I can't speak for all untyped languages, but the ones i've used, it's more "loosely typed". As in, you can use them without caring about types, but there are operators to compare strictly (as in "1" == 1 is true, but "1" === 1 is false (string vs integer). You can also cast in the rare times you actually need to, or check the actual internal type.

      --
      Speak before you think
    16. Re:Great Quote by Anonymous Coward · · Score: 0

      And you sir, are what real people call a "snob". You have to justify your existence by spouting off crap you read in a book, rather than thinking for yourself.

    17. Re:Great Quote by Warped1 · · Score: 1

      I try not to leave my self blatently open to flaming. =)

      I think it's a matter of personal taste (Strong vs Dynamic typing), really. I like having my data structrues explicitly defined, and knowing what exactly I'm dealing with at any given time; therefore strong typing suits me.

      I had a hard time keeping track of what was declared and when in Python (because the field will flat out not exist until it is assigned a value). Granted you can have null references in Java; atleast you can be guaranteed the field is actually there. This is just my nitpick with python though ... overall I love the language, but don't like the libraries as much as I like the Java ones. Mainly due to the abundance available, quality documentation, either online or dead-tree. Some parts of the python libraries are documented okay, but some parts I needed at the time were not. I thought about giving Jthon a shot, but never got around to it. *shrug* I digress ...

      Strong typing is also self documenting. You don't *need* to document a variable with what you can expect to be stored there. Maybe you can infer it from the variable name, but maybe not. Also (and I may be wrong about this) intellisense doesn't work with dynamic languages that you can't pin a type on (VB you can Dim ... is there an equivalent in Python?). And I love my intellisense.

      And as far as exceptions go ... I hated them until recently. They still allow you to be lazy and not check for exceptional errors when you don't need too - as long as somewhere lower in the call stack you do. And this has turned out pretty cool, in my opinion. Java will also tell you if you didn't cover an exception properly which is a great help when figuring out whether or not you got atleast something covering the possible errors. I wish C# had this ...

      I don't think it's so much believing the party line, as just using what suits you, and the situation, best. Of course there are people that never expirement and just take other's opinions for things though ...

    18. 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.

    19. Re:Great Quote by geekoid · · Score: 1

      " Do I really have to answer that? How about the amount of time and energy you spending thinking about types, where to allocate memory, etc. You have a CS degree, don't you?"

      Yes I do, that os why I know how to use it and have developed coding practices that all but eliminate those issues.
      " Yeah, that was my point later on that you managed not to quote. But you have to admit that a lot of perl programs use a lot of inline regex. And you also have to admit that regex is probably one of the most unreadable syntaxes still in use today (albeit, incredibly powerful)."

      I've used it enough where its not that difficult, however you are correct. That can be alliviated by proper comments and limited use.

      sorry about not quoting the other part.

      Sorry about the 'hack' part, I must of been grumpy, but thats no excuse for exibiting poorm professionalism. again, I apologize.

      funny how we come to the same point.
      I also have pges of documents and diagram. that along with experience and good coding practices are what keep me from having to rethink issues to often.

      now I am not saying either PERL or C is the ultimat language, or that other don't have merit. I am saying that most of the problems those languages have a reputation for is a result of poor practices.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    20. Re:Great Quote by Anonymous Coward · · Score: 2, Informative

      > Personally, I love LISP.

      Amen to that.

      > If only there were good UNIX API bindings for it,
      > and a good graphical toolkit...

      Lisp has good UNIX API and good GUI toolkits. [PUBLIC DOMAIN LICENSE, Native compiler with kickass code-generator.]

      Lisp has good UNIX API and good GUI toolkits. [Commercial, free personal use, great IDE and GUI editor, kickass code generator, database, object system, etc, etc. This is the stuff dreams are made of, best development environment I have ever had the pleasure to use.]

      Lisp has good UNIX API and good GUI toolkist. [Commercial, free for personal use, relatively affordable, best GUI toolkit (native look and feel on all supported platforms.)

      If that isn't enough for you. GNU Clisp runs on more platforms than a flaming wazooka. Don't be bothered by the interpreter (most Lisps are compiled btw, and NOT interpreted as legend has it.) Clisp is FASTER than the stuff you find in your /usr/bin (Python, Perl, TCL or whatnot.) Clisp has a C interface (like most other Lisps, including the ones above) which lets you link to any shared/static library which has a C interface (almost all Unix software.)

      There is also Corman Lisp which is strictly Windows for now. This beast has direct access to Win32 API and COM objects.

      - Kumade Khawi

    21. Re:Great Quote by Piquan · · Score: 1

      A lot of Lisp people are gravitating towards Python-- mostly because it's a good programming language that offers a lot of what Lisp offers without the stigma attached to Lisp. Over the last ten years, programming languages have started to approach Lisp; Graham writes about it in Revenge of the Nerds. From this:

      You could translate simple Lisp programs into Python line for line. It's 2002, and programming languages have almost caught up with 1958.

      I, and the Perl-oriented students in my Lisp class, are convinced that Perl 6 is shaped the way it is because Larry Wall looked at Lisp and thought, "Hey, that's good!"

    22. Re:Great Quote by Piquan · · Score: 1

      If only there were good UNIX API bindings for it, and a good graphical toolkit...

      What are your criteria here?

    23. Re:Great Quote by rjh · · Score: 1

      Good UNIX API bindings: I want POSIX/XOpen libraries which are (a) LISPy, (b) freely available, and (c) usable across different environments. Sure, you can use your environment's foreign function call interface to call pretty much any Cism that you want, but writing C-style code in LISP just offends my sense of aesthetics.

      Good graphical toolkit: I'd be happy as a clam if there were good GTK+2.x/Qt3 bindings which were (a) LISPy, (b) freely available and (c) usable across different environments. Supposedly, there's work on a Common LISP GTK+2 binding, but I haven't seen much progress on it.

    24. Re:Great Quote by Anonymous Coward · · Score: 1, Informative

      you're confusing weak typing with dynamic typing.
      lisp can be as strongly typed as you wish.

      you only get the bogus type conversions in languages like C,

      (void *)thing

    25. Re:Great Quote by Nevyn · · Score: 1
      It still boggles my mind that C is used to do any high-level programming (ie, anything besides api's to system calls, and writing drivers and kernels).

      Depends, I don't see any real server apps. written in perl/python/php (Ie. smtp, nntp, ntp, ftp, http, etc.) ... and although we're starting to see some small GUI apps. written in python, they are almost uniformly terrible and fail to run or anything but the developers box.

      Some of us just don't mind thinking about the materials as we build the bridge, because let's face it ... you aren't going to be happy if the bridge is made of glass.

      And ten times as long to find all the strange bugs and buffer overflows that eventually show up as exploits.

      This really isn't a problem with C, and half decent C programer can make a simple string API that is safe (and I think you'll find all the secure apps. do this). Or you can even just use one someone else already made. However a lot of people "learn to paint" with C, and too often those early rough sketches end up being used by a lot of people.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    26. Re:Great Quote by Raffaello · · Score: 1

      A quick look at Paul Graham's site will show that he clearly believes the answer is lisp.

    27. Re:Great Quote by gregmac · · Score: 1
      "You have a CS degree, don't you?"
      Yes I do, that os why I know how to use it and have developed coding practices that all but eliminate those issues.

      The reason I asked that, besides being a bit of a joke (perhaps only to me..), is that I've had similar discussions in the past about this, and anyone in CS that I talked to thought I was totally out to lunch. It's interesting to see that the view has changed quite a bit now .. only a couple people replied totally opposing my opinion. (Not that that's saying anything, but it does give me the impression, along with the articles that have been written recently, that views have changed over the past year or so).

      now I am not saying either PERL or C is the ultimat language, or that other don't have merit. I am saying that most of the problems those languages have a reputation for is a result of poor practices.

      My argument though is that the problems with C are fundamental. Pointers, memory allocation, string handling, even types, that needs to get abstracted away. If you need to return a string from a function, you shouldn't have to think "hm, where in memory will this get stored.. should the function allocate memory, or the caller?" That has absolutely nothing to do with application logic. Sure. From a typical CS point of view, it's important because it has to have a place in memory, and that's the way CS students are taught to think. But really, thats not application logic, thats low-level logic.

      If you code in C, you have to deal with it. If you somehow manage to abstract it away in C, then .. you might as well be using another language anyways. :p

      --
      Speak before you think
    28. Re:Great Quote by bastard42 · · Score: 1

      [b]Personally, I'm suspicious of "received wisdom" that's much older then 10 or 20 years[/b]

    29. Re:Great Quote by Anonymous Coward · · Score: 0

      In CompSci jargon, Common Lisp is Dynamic, Strong Typing. C is Static, Weak Typing.

      There is another school that calls static "strong" and dynamic "latent" - but that was abandoned by most because you can't make the Weak/Strong distinction.

  41. Re:In case of Slashdotting (it's already a bit slo by Kadagan+AU · · Score: 0

    umm... thanks for posting that and all, but the reason it was slow might have been your 300 baud modem, since it seems to be fine on my t1 ;-)

    --
    This space for rent, inquire within.
  42. Re:In case of Slashdotting (it's already a bit slo by Becquerel · · Score: 1

    Sometimes what the hackers do is called "software engineering," but this term is just as misleading. Good software designers are no more engineers than architects are. The border between architecture and engineering is not sharply defined, but it's there. It falls between what and how: architects decide what to do, and engineers figure out how to do it.

    The above would have done nicely in the Are Programmers Engineers?topic.

    And supported my point of view nicely.

    --
    My spelling isn't bad, I'm evolving the language
  43. 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.
  44. This is part of a larger problem by under_score · · Score: 3, Informative

    that is being addressed partly by the research and practice of agile methodologies. The idea is to change the focus of software development to a new set of principles (for example favoring running software over documentation).

    There is also a problem with the way that many managers and business people view software creation as a construction or engineering process. I wrote a paper about this: "The Software Construction Analogy is Broken". The summary is that software has so many attributes that are unlike physical things that its creation cannot be accurately mapped to the creation of buildings. For example, the economics of distribution are completely different: a building cannot generally be moved after it is constructed, yet software can not only be moved, but also can be duplicated for almost zero cost.

    Ultimately, I think that software creation is actually the creation of completely new media of communication. Every program created defines a new set of communication interactions that didn't exist before. We don't really have any "science" for that.

  45. Art vs Fine Art (or , quit your whining) by stratjakt · · Score: 1

    Anything that evokes an emotional response in the viewer could be considered an art. This is thrown around all the time. Personally I think it's too loose a definition. My dog shit on the rug - I definately had an emotional reaction, but I dont call him an artist.

    I've also never had an emotional reaction to code. It's all about function. Maybe some would, maybe you could consider that art. You could consider anything art.

    But, it is not a Fine Art, which painting is. Painting, sculpting, composing, mosaic tiling, etc, are the classical fine arts.

    So there you go. Now quit fighting about whether its an art or not.

    In short, you can call anything an art. The term fine art refers to a very specific set of functions.

    --
    I don't need no instructions to know how to rock!!!!
    1. Re:Art vs Fine Art (or , quit your whining) by dogugotw · · Score: 1

      I guess I'm just more in touch with my feminine side; I do get emotional about code. If I find some new and clever way to implement an idea, it's a thrill, a _creative_ thrill. If an end user tells me my app saved him time/effort/made her-his life easier, I'm one happy camper. I love _creating_ useful tools for people.

      The really good hackers/programmer/engineers/pick your term are artists. I'm not there and just think of myself as a tool maker (maybe as another poster suggested, a carpenter).

      If you've never experienced the joy, my condolences.

      Dogu.

    2. Re:Art vs Fine Art (or , quit your whining) by Anonymous Coward · · Score: 0

      I get the feeling of accomplishment.

      I had the same feeling when i successfully replaced my water heater last saturday. Personally I dont consider it art, even though my sweat soldered joints are impeccable. Maybe someone does. I just consider it a job well done.

      My original point, though, was that "art" is whatever you want it to be. "Fine art" is a distinct set of classical skills.

      (though in hindsight I guess plumbing and pipefitting is one of the industrial arts)

  46. Paul Graham isn't the typical hacker by Junks+Jerzey · · Score: 5, Interesting

    Paul Graham is a smart guy. He made millions selling his company to Yahoo. He's written several books on Lisp. He regularly has speaking engagements. And he does practice what he preaches, actually using high level languages rather just bashing away at C++, but still using it for everything, like most people do. He also manages to completely stay away from the usual topics, like Linux vs. Windows. Oh, all right, one more "and": And he has some unpopular opinions, like that of OOP being overrated smoke and mirrors.

    That said, his view of what it means to hack is certainly different than what it usually means in geek circles. Actually, I should go further than that: Paul Graham isn't even a geek. Nobody would call Feynman or Dyson a geek, would they? Paul Graham is someone of high intelligence who happens to be applying that intelligence to computer programming (and writing, and speaking, and painting). This is much different from the typical hacker who pounds out C code because he has nothing better to do and revels in the geek traditions of arguing about Linux distributions, Star Trek movies, and yes, posting to Slashdot. In short, Paul Graham is a geek by association, because of what he decided he likes to do, whereas most hackers revel in their own geekiness, pointless and inbred though it may be.

    1. Re:Paul Graham isn't the typical hacker by crgrace · · Score: 2, Funny

      Nobody would call Feynman or Dyson a geek, would they?

      Have you read any of Feynman's books? That guy was an uber-geek. Any guy who would ask every girl at a party "Would you sleep with me?" based on a theory that 0.1% would say yes is pretty much a poster child for geekness. And don't get me started on his little geek-jokes in his technical writings.

      Of course, being a geek doesn't make him any less a genius.

    2. Re:Paul Graham isn't the typical hacker by spyderbyte23 · · Score: 1
      Any guy who would ask every girl at a party "Would you sleep with me?" based on a theory that 0.1% would say yes is pretty much a poster child for geekness.
      I knew a guy who did that. He actually had, probably, better success rates than 0.1% with it.
      --
      -- Support Ometz le-Serev.
    3. Re:Paul Graham isn't the typical hacker by EZmagz · · Score: 1
      I totally agree. To be honest, I had never heard of Paul Graham previously until I read the article. And after reading it, I must say...I'm impressed!

      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. Typically when someone's in the press speaking on the behalf of computer scientists, it's some hothead screaming at the world, ranting incoherently. RMS comes to mind. True, he's brighter than 99% of the world, but there's something to be said about someone who can sit down and express their point without demeaning the listener.

      Basically we lack introspective, analytical thinkers who are also well-spoken who can step back and examine where the world of CS is headed. I hope more people like Paul Graham materialize in the press, because I'm getting rather sick of what's out there these days.

      --

      "Hell hath no fury like a woman scorned for SEGA. ..."

    4. Re:Paul Graham isn't the typical hacker by Junks+Jerzey · · Score: 2, Interesting

      Have you read any of Feynman's books? That guy was an uber-geek

      Yes, I've read them. The meaning of "geek" has changed. Feynman lived his own life; he did was he wanted. "Geek" these days is a lot more of a word for branding someone with a certain set of limited interests. If someone goes home and writes fantastic software in the evenings, he or she isn't a geek. But if he writes essays about Star Wars, endlessly posts to discussion forums about the evils of Microsoft, and spends more time installing Linux and patching kernels than actually doing anything with it...that's what "geek" now means. And it's deservedly derogatory.

    5. 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...

    6. Re:Paul Graham isn't the typical hacker by CAIMLAS · · Score: 1

      Interesting. Is your friend particularly attractive or something, or were the girls particularly ugly? Maybe you could ask him to write up a HOWTO?

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    7. Re:Paul Graham isn't the typical hacker by spyderbyte23 · · Score: 1

      I think he was of average attractiveness, although I'm not a good judge of such things in my fellow heterosexual males. He was plying his trade in bars in a college town -- that helped immensely.

      --
      -- Support Ometz le-Serev.
    8. Re:Paul Graham isn't the typical hacker by JVStalin · · Score: 1
      "Actually, I should go further than that: Paul Graham isn't even a geek." I've noticed a definite trend in whatever you want to call it -- the "hacker" community or the "geek" community in general. It wishes to fix too much importance on itself -- like open source is everything and will fix the worlds problems. Not only that, this "community", if you can even call it that, redefines its terms over and over to include or exclude various computer scientists, like Paul Graham. Mr. Graham is a very intelligent man, just because he happens to write a book and is a good speaker, doesn't deny him his curiosity and technical skill. Being well-rounded is an advantage, not a disadvantage, and shouldn't exclude him from the frivolous title of "geek" or "hacker." Come on, guys, are you that unsure of yourselves that you can't let Mr. Graham into your tree house hacker club? Curiosity in any field makes someone a "geek." There doesn't have to be any qualifiers -- like, person X has to run OpenBSD and write C code in order to be a 1337 geekx0r. A person who is curious about something, whether it be cars, dialectics, latin and greek or computers, surely should be defined "geek."

      This is just my idea, but, art can never be code. Code is utilitarian, it only has meaning in it's operational sense. One can abstract many meaning from art and it has no operational function. Code may be written in an "artistic" manner (but I'm not sure how less of code is more artistic than more of code, it's just more readable) but code itself is certainly not art.

    9. Re:Paul Graham isn't the typical hacker by pyrrho · · Score: 1

      posting on slashdot is a geek tradition.

      holy shit I'm old. It's like I fscking walked the earth with dinosaurs (aka. System 390 programmers).

      --

      -pyrrho

    10. Re:Paul Graham isn't the typical hacker by Anonymous Coward · · Score: 0

      >I'm not a good judge of such things in my fellow heterosexual males.

      sure you wouldn't like to add a few dogs wolfs to butch up a little further...

      oh, suuuure you're not!!!!

      just teasing.

    11. Re:Paul Graham isn't the typical hacker by Anonymous Coward · · Score: 0

      But then girls are proner to say "yes" now than back then...

    12. Re:Paul Graham isn't the typical hacker by jamesmrankinjr · · Score: 1

      I think your definition of geek is too narrow.

      Best,
      -jimbo

  47. If it has X in the title, it isn't X? by Anonymous Coward · · Score: 0

    If it has "engineering" in the title, it probably isn't engineering (darn, sorry all you so-called civil/electrical/chemical/... engineers).

    Sound bites are meant to sound good, but sometimes, they're absolutely content-free. Like the "if it has science in the title..." quote. Move along, nothing useful to see here.

  48. Python by maharg · · Score: 1

    'nuff said

    --

    $ strings FTP.EXE | grep Copyright
    @(#) Copyright (c) 1983 The Regents of the University of California.
    1. Re:Python by MikeFM · · Score: 1

      I'll second Python. It is very clean without being anal. It leaves you more mental capacity to write the program with less spent nitpicking or trying to read your own work. It certainly isn't perfect but so far it's my favorite (and I've used a lot of languages).

      PHP is good for small to medium sized programs but just can't scale well to large programs. I'd say the same for Perl. Not that they can't technically handle the job - it just grows increasingly hard for the programmer to use them the larger the program is. I'd say each is very good for the job they were originally designed for.

      C, C++, and even Java are good for things you need low level speed but again they scale poorly to large projects. I think C scales the worst and Java the best but I still like C best of the three. I think using C where C is needed and something higher (like Python) for the rest is the best idea.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
  49. Art, Programming and design skill by ralphart · · Score: 3, Interesting

    My degrees (bachelors and masters) are in painting, and I've worked for the last 8 years writing code. I'd say my art background has definately been a benefit.

    Art (can) be about seeing overall patterns and relationships between seemingly dissimilar things, as well as about organizing and processing information in a way that gives meaning to it.

    Sounds like the skills I use everyday as a programmer.

  50. Re:"a language that lets us scribble and smudge".. by BrokenHalo · · Score: 2, Funny

    No, just an 029 card-punch :-)

  51. 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.

    1. Re:Computer Science is Science by Drakonian · · Score: 1

      Yes, that's the whole point of the article. Many people in CS are not interested in the Science part of it. They are interested in the coding/hacking part of it. He suggests that maybe CS should be broken into different areas.

      --
      Random is the New Order.
    2. Re:Computer Science is Science by MikeFM · · Score: 1

      As the article points out there is a lot of crap that gets lumped under comp sci. Everything from mathematics and electrical engineering to real computer science and computer engineering is all lumped under the same heading a lot of the time. I think his, and my, biggest complaint is when those of us that'd consider ourselves computer artists get lumped in with the hard science folks. Not that a lot of us aren't involved in computers in more than one of these ways.. the problem is we just don't clarify the difference.

      He outlines programming in a style much like I use. I usually make notes on paper, whiteboards, in my head, etc and then roughly sketch out what my goal is in actual source code. Then I go through and fill that sketch in. Then I finally add the little details that make a full program. I usually debug in each of these steps but usually there is very little source code reuse between the steps. Regardless to how detailed the original spec was the end result is almost never that product. Why? Because the spec just doesn't work. That's the #1 reason you get feature bloat during development. With this more flowing system there are more points at which you finish the working program and see what works, what doesn't work, and what needs to be added. You can make a revised spec and start again. Just paint over the last version you had.

      I think I agree with you in that painting is an applied science. You have the science of chemicals, geometry, knowledge of the structure of various things (plants, animals, people, buildings), etc. It can still be an art. The art is taking the science and making something complex and well designed from it. The same happens when developing software. Connect with other developers, users, and the machine. Don't just do the job - do it well.

      --
      At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    3. Re:Computer Science is Science by djeaux · · Score: 1

      Computer Science is as much a science as Physics or Biology.
      There are plenty of folks in physics or biology who would argue you on that point, but I won't ;-)

      But Graham really isn't saying that computer science isn't "science" anyway. He's saying that academic "computer science" departments span a wide spectrum that includes everything from mathematics on one extreme to hacking on the other, with the "science" component more-or-less in the center. There's a lot of "art" at the hacking end of that continuum.

      Graham bandies about the idea that visual art is applied science (technology) & that really isn't a novel idea.

      In the end, I would have been more surprised had Graham suggested that hacking was a liberal art more akin to poetry. And I thought he was gonna go in that direction when he started in on neat indentation.

      --
      "Obviously, I'm not an IBM computer any more than I'm an ashtray" (Bob Dylan)
  52. Hacking, Painting and Musicians by SuperGrut · · Score: 2, Interesting

    I am the only Hacker/Painter at my company. All of the other Hackers are Hacker/Musicians.

    They act like I am really unusual. Util I read this article I was starting to think I was the only one.

    Why are Musicians so common but Painter's not in the Hacker community?

    --
    The city is being overrun by a herd of Lucy Liu's.
    1. Re:Hacking, Painting and Musicians by Anonymous Coward · · Score: 0

      One word: synths.

    2. Re:Hacking, Painting and Musicians by Anonymous Coward · · Score: 0

      I'm neither painter nor musician, but my 2-cent guess is this: It may have to do with the perceived "coolness" of musicians.

      Still, the bigger picture seems to be that hackers love to create, and that they need other outlets for their creative impulses, besides coding.

      Then again, maybe they're just trying to break out of the geek stereotype.

      ??

    3. Re:Hacking, Painting and Musicians by Mr.+Bad+Example · · Score: 1

      Why are Musicians so common but Painters not in the Hacker community?

      What about actors? Anyone code and act besides me?

    4. Re:Hacking, Painting and Musicians by Anonymous Coward · · Score: 0

      You ever heard of a "band dork" in high school? :)
      Well, they became or are also computer dorks...and...well, just dorks in general.

      Seriously though, I have noticed that too. Being a computer dork myself, I also play a few instruments and have lots of experiance in the visual arts, going to art based schools most my life.

      As for music being the thing more programmers seem to do, rather than painting, perhaps it is somehting to do with the very structured, algorithmic nature of instruments. It is a very methodical thing, and perhaps this appeals to the same people.

      As for me, I've never been one big on theory so I cannot read music well, but I can play as well as just about anyone except the best (i.e. above average, good not great) and I am the same way about code, and school. I don't always take the time to practice, and have poor discipline (lazy...tired maybe)...

      Anyways, I am ranting...also, painting is expensive.

  53. Re:Computer programming is NOT an art. Get over it by skurk · · Score: 2, Interesting

    Programming is as an art as bridge buidling is.

    What about this?

    Art or no?

    --
    www.6502asm.com - Code 6502 assembly or.. DIE!!
  54. Just dawned on me by Anonymous Coward · · Score: 0

    /. is turning into some parallel of the Dr. Dean Edell show. "I used to be a Doctor...."

    And this is bad. Once you stop having first hand experience, you must rely on the experiences of others. And there's and infinity of industry spin doctors, propogandists,lobbiests and institutes, who always have a ready supply of information for those media folks who are short on material.

    Doctor Dean seems to just read from such reports. This is where /. is heading. Talking about whether programming is an art or science? imagine a programmer who'se employed at Wal-Mart as a non-programmer reading this story. DO you think he gives a fuck?

    Our reality is becoming gritty and harsh. The topics on /. are invariably fluffy and disconnected.

    "Oh, time to buy a new TIVO!"
    "Time to buy some DVD's!"
    "Let's watch some TV"
    "Is programming art or science?"
    "Time to buy an Ipod!"

    I read the other day about /. becomming a parody site and this fluffiness about programming and art made up mind.

    1. Re:Just dawned on me by Molt · · Score: 2, Funny
      Odd, I find the Slashdot topics to be remarkably connected..

      "Let's boycott people and not buy any DVDs!"
      "New sci-fi DVD out this week, buy it!"
      "All big computer companies are simply profit-oriented"
      "Apple releases new thing"
      "Most of the world's population are sheep driven by obvious marketing"
      "Isn't this new thing cool and shiny? Buy one! Hell, buy two! Shiny shiny!"
      "Microsoft does thing, isn't it evil?"
      "Linux does thing, rejoicing in the streets"

      ...oh, and..


      "Ask Slashdot: Finding your rear-end with both hands"
      --
      404 Not Found: No such file or resource as '.sig'
  55. Re:Computer programming is NOT an art. Get over it by calethix · · Score: 1

    "I've seen some pieces of code that are VERY beautiful and emotional. ... I nearly creamed my pants when I read through my first recursive function"

    Ok dude, I think you need a girlfriend. :)

    I wouldn't really consider myself an expert coder or an excellent artist but I do enjoy both. For me, it's about the act of creativity and turning some basic components into something more complexe and elegant. When I finish a picture, I look at it and think to myself, wow that's really cool. I get the same type of feeling if I hack up some nifty little web app in PHP.

    It amazes me (not in a sexual way though ;) ) how plain old words or paint or whatever other medium can be turned into something so elegant.

    Do hacking and painting share characteristics? Certainly. Are they the same? In some ways yes but in others, no. An average person that knows nothing about code or painting probably won't be able to look at a peice of code and appreciate it nearly as much as a peice of art.

    Code has other advantages though. You can look at that recursive function for the first time and be amazed by it when you understand how it works because it stimulates your mind.

  56. Objective-C and Cocoa by mlilback · · Score: 1

    I agree with the article's assesment of programming, too. But for a language, I avoid PHP largely for the same reasons as Perl (and because is is largely for web stuff, and I've grown to hate web-stuff).

    If you haven't given Objective-C or Cocoa a try, you should. The language is truly dynamic and very powerful. Sometimes I wish there was garbage collection, but the retain/release/autorelease mechanism is very easy to use and gives you the ability to release objects when you want to (closing file descriptors, etc.).

    Naming arguments makes things much easier -- rarely is there a need to hit the documentation or use code completion to figure out what arguments are -- they are explicit in the names. This makes the code very readable.

    Mark

    1. Re:Objective-C and Cocoa by gregmac · · Score: 1
      I agree with the article's assesment of programming, too. But for a language, I avoid PHP largely for the same reasons as Perl (and because is is largely for web stuff, and I've grown to hate web-stuff).

      My biggest problem with PHP (and perl, for that matter) is that it's very easy to write sloppy code. Being untyped, it's easy to do very messy things and make it work. Of course, this leads to very unreadable, unscalable code. I don't have this problem with my own code because I follow a pretty rigid and consistent structure, but I have run into it many times before.

      The way I code, it could almost be a typed language, the only difference is when you're coding and need a variable, you don't have to bother defining one. It's also nice to be able to concat an integer value into a string without thinking. Of course, these are also things that can make code messy - if you do them messily.

      If you haven't given Objective-C or Cocoa a try, you should.

      People have told me before how Objective-C was nice. But looking again now, it looks like it's only Mac OS-X, which is probably why I never looked into it before. I don't want to get locked into coding for a specific platform.

      --
      Speak before you think
    2. Re:Objective-C and Cocoa by Watcher · · Score: 1

      People have told me before how Objective-C was nice. But looking again now, it looks like it's only Mac OS-X, which is probably why I never looked into it before. I don't want to get locked into coding for a specific platform.

      Objective C is fully available for Unix and windows systems, and I'm using it in my latest spare time project. If you're looking to code in Cocoa, GNUStep already provides a very good implementation of the Foundation, and they're working to get the Application classes fully supported under Unix and Windows.

      In the Windows world you would probably best use the MinGW toolkit. If you don't plan to use GNUStep/Cocoa, but just the standard Objective C runtime, you'll still want to download the GNUStep runtime. The language runtime packaged with the latest MinGW does not support building DLLs, which can be rather frustrating if you don't know about it before you start. Once you get that built and installed, you're good to go.

      I've been very happy thus far working in Objective C. I typically find my code is much smaller than when I work in C++, and its much easier to read and maintain when I'm done. There is something very pleasant and freeing about being able to work in a nicely dynamic language.

  57. What is art ? by jvervloet · · Score: 1

    It's not easy to define something like `art'. As the former Belgian band Noordkaap stated (link in Dutch, sorry) :

    What is art ? What is art ?
    The look in her eyes, that is art.
    1. Re:What is art ? by Anonymous Coward · · Score: 0

      Wow, this is a new low, even for Slashdot.

      "The look in her eyes, that is art."

      No, the look in her eyes, that is cheap romantic crap, not art.

      Please, keep you lame assed Nederlands pop song lyrics to youreself in future.

  58. 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.

  59. Hacking and Painting and... Writing? by kurosawdust · · Score: 1
    ...if you assume that knowledge can be represented as a list of predicate logic expressions whose arguments represent abstract concepts, you'll have a lot of papers to write about how to make this work. As Ricky Ricardo used to say, "Lucy, you got a lot of explaining to do."

    I know this is hardly the forum for discussion of "good design" when it comes to English, and I did enjoy the article very much, but come on - the last sentence in that paragraph is like a fart in a gourmet soup bowl.

  60. Programming and Art by ratajik · · Score: 1

    http://www.ratajik.com
    http://www.ratajik.net/art /

  61. like by geekoid · · Score: 1

    Medical Science.

    --
    The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
  62. Rose tinted shades by coyote4til7 · · Score: 3, Interesting

    Sometimes it's fun to read the slashdot reactions before RTFA. One poster header "painters" and assumes Graham is talking about the Bubba who shows up to cuss and slap cheap paint on apartment walls. Other people assumes he's talking about the code monkeys in the world. The "fun" thing about today is no one listens anymore. Maybe it's just me, but he's not comparing the techniques. He's comparing what makes these people tick. Einstein is one of the great Physics hackers, but he was also supposed to play a mean violin. The wiring that allows people to pull visions out of thin air works in both worlds. Graham isn't saying anything terribly new (at least to me). I was screwing with creating code in Junior High and writing short stories by High School. By the time I was done with college I had a degree in Physics, work in the humanities and published poems and paintings that had been in shows. I've been asked the same question and I always said Physics (or hacking) and the arts back up to each. More correctly the one that can create in Physics/thru hacking is often the same mind that could envision great art. Same mind, different techniques: creation ex nihilo.

    --

    the clock on the wall says 4 til 7
    1. Re:Rose tinted shades by Anonymous Coward · · Score: 0

      I'm not sure what all that babbling was about, I skipped most of it. Geez that was a long post! ;-)

    2. Re:Rose tinted shades by Anonymous Coward · · Score: 0

      What a pompous, arrogant ass you are. No wonder nobody listens to you.

    3. Re:Rose tinted shades by Jerf · · Score: 1

      The "fun" thing about today is no one listens anymore.

      Nobody ever listens. Listening is a hard skill that must be painstakingly cultivated. Not only are we not born with it, if anything, we're born with the opposite, a desire to talk, talk, talk and have everybody else listen to us. (Even shy people who don't have the courage to talk are generally wishing they could.)

      The only reason you might think people listened in the past is that it is only the listeners whom history has recorded; it is hard to do great things like writing great novels without learning to listen to the world first.

      Slashdot is perfectly normal, considered both today and as part of history; most people are too busy talking and showing off to be bothered to listen in the first place. When all the posts on a site are considered and come from a carefully acquired understanding of the subject, that's abnormal.

    4. Re:Rose tinted shades by Anonymous Coward · · Score: 0

      It might be better expressed as "it is only the listeners whom have history recorded."

  63. Re:In case of Slashdotting (it's already a bit slo by sootman · · Score: 1

    Thanks for posting. I *hate* skinny-ass columns. I just got a new 20" flat panel, 1600x1200. Let the text *flow*, dammit! :-)

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  64. people always look at me funny by kraksmoka · · Score: 2, Interesting
    when i tell them that i went to school for music, singing in fact, before i got into photography, which led me into web design, which got me into web application development.

    i always felt that the most important issue, was not just being a maker, or constructivist, but being professional about my business conduct. if there was one and only one thing i learned it was that a proper presentation of one's self would decide if someone else will pay you to make things for them. after that, its all wine and roses, and blooshot eyes and doing what you love.

    The supreme accomplishment is to blur the line between work and play. Arnold Toynbee (1889 - 1975)

    --
    "You never want a serious crisis to go to waste." - Rahm Emanuel
  65. Exactly! by blinder · · Score: 1

    I've been saying exactly what this essay elequently expresses for a long time now.

    I started out as a graphic artist, and by chance ended up doing it professionaly. I still love art and design, and still engage in it, but not professionally (I got fed up with the attitude that everyone thinks they have good taste and sense of esthetic, when that is the FURTHEST thing from the truth).

    So, as something on the side many years ago, I taught myself Perl and Java and along the way picked up PHP and other languages and what I found is, the way I worked, and the thought process was EXACTLY the same when I was creating an indentity.

    The developers I work with find this very difficult to fathom. I always tell them the what they do is really no different than what a designer or artist does, its just he medium is different.

    Artists, designers, architects, hackers... all make things (as the article states) and solve problems CREATIVELY. How that creativity is expressed is the only difference.

    Oh well, that's just my way of looking at it, which is 100% compatatible with this essay... go figure.

  66. Why? by nihilvt · · Score: 1, Flamebait

    Why do people feel the need to romanticize hacking? Do people need to validate the fact that they are programmers?

    Some people love to do what they do and may have a skilled hand at it, but that does not make it like painting.

  67. Re:Computer programming is NOT an art. Get over it by glenstar · · Score: 1
    I've seen some pieces of code that are VERY beautiful and emotional.

    I am not so sure of the beautiful part, but I have seen very emotional code, as in:

    print("why the FUCK doesn't this get called?????!!!!")

  68. slight concern by grid+geek · · Score: 1
    Scientists don't learn science by doing it, but by doing labs and problem sets. Scientists start out doing work that's perfect, in the sense that they're just trying to reproduce work someone else has already done for them. Eventually, they get to the point where they can do original work. Whereas hackers, from the start, are doing original work; it's just very bad. So hackers start original, and get good, and scientists start good, and get original.

    Then what are hello world programs?

    You should figure out programs as you're writing them, just as writers and painters and architects do.

    If this man ever comes near a real product shoot him! Schetches are fine for a small program, 1 MLOG+ programs you want a design for.

    I get the impression this guy has never been near a serious product. Or at least not one I'd pay money for. His assumptions on the role of coding is all wrong for anything but the most basic of projects. It would be interesting to see what he makes of a proper project which has a 20+ year life span, has a couple of hundred people involved and needs coherancy.

    1. Re:slight concern by spyderbyte23 · · Score: 1
      I get the impression this guy has never been near a serious product.
      Your impression would be wrong. If you've been in the habit of trusting your instincts, I suggest you stop.
      --
      -- Support Ometz le-Serev.
    2. Re:slight concern by Anonymous Coward · · Score: 0

      dude, a computer language that noone uses is not a "serious project"

    3. Re:slight concern by Anonymous Coward · · Score: 0

      no wait, i take that back. he's got one of those miller chairs, so he must be "serious"

    4. Re:slight concern by joss · · Score: 1

      > His assumptions on the role of coding is all wrong for anything but the most basic of projects.

      No, yours are. The kind of projects which work well the way you are talking about are equivalent to compiling an encyclopedia. The kind of projects he is talking about are equivalent to writing a great novel.

      I would not normally go out of my way to critise a fellow Earl, and funnily enough I too worked at EPCC while at EdU [are they still using transputers?] but you're wrong and here is why:

      You cannot design software properly before you write it. You can try, but some unforseen problem will bite you in the ass.

      When they make a new airliner, they model the entire thing on a computer first. The CAD model is an unambiguous model of the plane. Important subsystems in it are modelled and analysed independently and in conjunction with the components around it.

      So, if writing software was similar, we would first model the software on a computer. Oh, er, wait a moment. In an important sense, software is a design. The only unambiguous design is the actual software [otherwise we could make the design the programming language]. So, one could have a notion of starting with a fuzzy design and gradually making it clearer, but you can still end up with a bad design.

      High level programming languages are the most elegent way we can think of to
      describe logic. Writing the software cannot be separated from creating the design. Trying to "design" everything up front does not work. It cannot work, because it is equivalent to trying to create the design before you create the design.

      --
      http://rareformnewmedia.com/
    5. Re:slight concern by Anonymous Coward · · Score: 0

      > So hackers start original, and get good, and scientists start good, and get original.

      Then what are hello world programs?

      I'd say anyone writing a 'hello world' program is hardly a hacker... 'Hello world' programs are used to get into the mood of a new language, a new environment, a new way of thinking, not to grow out as true programs (even though they often do so) (check out what the WikiWikiWeb has to say about this).

      Regarding programs and programming, "this guy" has been programming and hacking for so long that he has probably forgotten more things about it than we can never dream to learn nowadays.

      Not only he created one of the few successful dotcoms in the big bubble, he's written many books on programming (in LISP), and is actually creating his own version of a modern LISP dialect for Web and nowadays programming requirements. (and writing bayesian filters out of it)

      One should know what's going to say is about before saying it.

      peace

    6. Re:slight concern by Anonymous Coward · · Score: 0

      He had a successful startup and then worked at Yahoo ... serious enough for me.

      And in the GNU world there are no such really big projects, like Windows, Oracle, SAP, ...

    7. Re:slight concern by tcopeland · · Score: 1

      > 1 MLOG+ programs you want a design for

      Right, and you want to evolve that design rather than trying to figure it out up front. Don't be afraid to learn more as you get more familiar with a problem.

      > proper project which has a 20+ year life span,
      > has a couple of hundred people involved
      > and needs coherancy.

      Like Linux? Or Apache HTTPD?

      Yours,

      Tom

  69. Re:In case of Slashdotting (it's already a bit slo by Anonymous Coward · · Score: 1, Informative

    However long lines of text go against fast reading... some 10 words per line is about the optimum for small eye movement and leverage of whole paragraphs comprehension by a single plank of your eyes...

    when I maximize my browser in my 21'' monitor, it's always because the huge left menubars webmail sites have, but I ususally let open the history sidebar on my phonix/firebird, it makes for a good bookmark and makes sites easier to read [note]

    best regards

    Note: except when I open about 30 tabs in a single window, usually when googling, then I need all the space I have for the tabbar... I think that what NetCaptor does (several lines of tabs) is actually neater, even if it fiddles your vertical space for reading (i hate frames, the upper frames with banners also take much of the vertical space for fast reading.... :(

  70. 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?

    1. Re:He's Got Some Very Valid Points by Lonath · · Score: 1

      As a recovering math person, I think programming is math. For me, figuring out how to write a proof feels the same as figuring out how to write code to do something. It's just a different kind of math.

      I think the issue is that computers let people do mathematics that has computational beauty, not proof beauty, and you have to appreciate the computational side to really understand it.

      It's as Hofstadter wrote in Godel Escher Bach. It is possible to create systems with computers in which the entire system can be understood, but once the system is used to compute, the results can be so complex that they can't be preditcted.

      This is the mathematics of computation where interesting things happen only after you compute. It's not the same as traditional mathematics where the beauty is found in the static proofs of theorems themselves. It's easy to miss what makes computers and programming special if you only try to apply the yardstick "proof beauty" of traditional mathematics to programs without understanding and applying the "computational beauty" that the programs create.

  71. Re:Computer programming is NOT an art. Get over it by Anonymous Coward · · Score: 0

    SO, if I slap you for being so stupid, would you call that art too?

  72. What I need to interpret that... by ratboy666 · · Score: 1

    I *am* a hacker. See, says "code monkey" on my card. And I can't READ that shit. So, here is a little snobol4 program to interpret hacker-speak. The hacker speak generator is left as an assignment for the reader...

    Am I a real hacker now? Please, pretty please!?!

    [I just realized, this is probably too damn obscure -- this is meant as humour].

    Ratboy.

    #! /usr/local/bin/snobol4
    * dehack.sno
    * Fix up hacker speak to english
    &TRIM = 1
    WORD = "'-" '0123456789' &UCASE &LCASE
    WPAT = BREAK(WORD) SPAN(WORD) . WORD
    :(FIRSTL)
    NEXTL OUTPUT = O
    FIRSTL O = ''
    LINE = INPUT :F(DONE)
    WORD POS(0) '1' RPOS(0) :F(P2)
    O = O ' I' :(NEXTW)
    P2 WORD POS(0) SPAN('012345689') RPOS(0) :F(P3)
    O = O ' ' WORD :(NEXTW)
    P3 WORD POS(0) 'd00dz' RPOS(0) :F(P4)
    O = O ' dudes' :(NEXTW)
    P4 WORD POS(0) '1337' RPOS(0) :F(P5)
    O = O ' elite' :(NEXTW)
    P5 WORD POS(0) 'h4x0r3d' RPOS(0) :F(P6)
    O = O ' hacked' :(NEXTW)
    P6 WORD POS(0) 'h4x0r' RPOS(0) :F(P7)
    O = O ' hacker' :(NEXTW)
    P7 WORD = REPLACE(WORD, '307415', 'eotais')
    P8 WORD 'ph' = 'f' :S(P8)
    P9 WORD 'Ph' = 'F' :S(P9)
    O = O ' ' WORD :(NEXTW)
    DONE
    END

    --
    Just another "Cubible(sic) Joe" 2 17 3061
  73. 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 ?

    1. Re:Amen, brother!!! by GlassHeart · · Score: 1
      Programming languages should be abstract.

      Says who?

      Programming languages should fulfill the purpose they were designed for. To solve abstract problems, use an abstract language. To solve concrete problems, use a concrete language. A language should be judged by how well it solves a problem whose solution fits its designed level of abstraction. Even assembly language still has its place today.

      Abstraction is a tool. It helps you ignore some details to ensure overall correctness. It is not an end in itself. When overdone, it can lead to unnecessarily complex and unacceptably inefficient code.

      I've caught myself thinking much more clearly when I did not have to consider implementation details.

      Right, but at some point you still have to. Idealized data structures often fall apart in real life when confronted with real memory or CPU constraints.

    2. Re:Amen, brother!!! by master_p · · Score: 1

      Says who?

      Well, I've got some experience in developing, designing and coding applications, being a professional software engineer from 1998; I am into programming though from 1985, from the halcyon days of ZX Spectrum. And the last 3 years I have been designing defense applications for a large European corporation.

      Programming languages should fulfill the purpose they were designed for

      What would be your problem if you had a general-purpose programming language that was abstract ? you could still use it to solve any problem, just like C/C++/Java/Ada.

      To solve abstract problems

      There is no such thing as an abstract problem. There are abstract approaches though, where the engineer should not care about the implementation details, but rather algorithm correction and validation.

      A language should be judged by how well it solves a problem whose solution fits its designed level of abstraction

      A language should be judged by how efficiently and elegantly solves the problem. But this has nothing to do with abstraction: what I meant with abstraction means that the compiler should be bothered with the implementation details, unless I need to explicitely declare otherwise. For example, I should not have to declare a variable of type 'string', since the statement 'str = "foo"' is enough.

      It helps you ignore some details to ensure overall correctness. It is not an end in itself. When overdone, it can lead to unnecessarily complex and unacceptably inefficient code.

      Surely, nothing is panacea. But, programming languages should have more support for abstractions. Look at Java: slowness because of lack of templates and generalized programming; to make a generic collection, everything needs to derive from Object; otherwise, a great concept. Contrast that with C++'s STL: much greater, and much more efficient.

      Idealized data structures often fall apart in real life when confronted with real memory or CPU constraints

      But nobody spoke about idealized data structures. I spoke about abstraction: the ability of the compiler to understand me, instead of myself trying to make me clear to the compiler. It's frustrating and time-consuming.

    3. Re:Amen, brother!!! by GlassHeart · · Score: 1
      What would be your problem if you had a general-purpose programming language that was abstract ? you could still use it to solve any problem, just like C/C++/Java/Ada. [...] For example, I should not have to declare a variable of type 'string', since the statement 'str = "foo"' is enough.

      I think I understand the confusion now. By "abstract", I'm talking about the programmer writing, for example:

      Container c;

      c.put("url", "http://www.slashdot.org");
      c.put("user", "master_p");
      without having to worry about whether "Container" is a linked list, array, hash table, or whatever. The implementation details are abstracted away. Now, "Container" is a powerful abstraction that allows the programmer to ignore how it really works, to concentrate on overall correctness. At the same time, it may be terribly inefficient on, say, a low-end CPU with no data cache.

      As cool as "Container" is, it costs nothing compared to the database engine that the SQL abstraction requires. For the task it is designed for, SQL will defeat any C or C++ solution in terms of ease and correctness. However, a custom C or C++ database engine can probably still be faster and leaner.

      Let's take a simpler example: the C struct. It is an abstraction, because it allows the programmer to manipulate related data attributes as an entity. Without a struct, you'd have to use parallel arrays, and remember that first_name[i] is related to last_name[i], which can be error prone. However, structs may use more space (alignment issues), and may not be as cache efficient when searching through all the last names.

      Compared to the usefulness of "Container" or struct, your implicit declaration idea is really pretty trivial to a programmer, in terms of bug avoidance. In fact, I'd go as far as saying it's useless in terms of bug avoidance. The truly useful abstractions, on the other hand, are costly.

      All programming languages today trade their abstractions for time or space, or both. This is why it's important to have a variety of programming languages that cater to various levels of abstraction, rather than make all programming languages uniformly more abstract as you propose. Now, I look forward to a future where even very abstract languages can result in very small and very fast code, but that future is simply not here yet.

  74. Is it just you by Nicolay77 · · Score: 1

    Well I really believe you have to be a painter to really get the full analogy.

    I didn't knew that painters had to know that much about chemical processes of paint for example. Just pick a nice color and that's it.

    The part about sketches and evolving the model is to me the most accurate part of the analogy.

    Anyway, it's an analogy, and that doesn't mean hacker==painter. But it means you can use some similarities between them in order to understand the big picture and not get lost in the boring everyday details of coding.

    --
    We are Turing O-Machines. The Oracle is out there.
  75. Re:Computer programming is NOT an art. Get over it by Anonymous Coward · · Score: 0

    I've used software that evokes an emotional reaction... it's just usually something along the lines of anger, rage or frustration.

  76. Keeping programs as short as possible by MarkWatson · · Score: 4, Interesting
    One of the reasons I love to code in Lisp so much is that it is a concise language - Paul Graham has it right when he says that short programs are easier to change.

    When I have to code in Java (most of the time), I try to keep my applications as short as possible by first developing and testing low level class libraries to support a project - once these are tested, I find it easier to write much shorter application programs that I can tweak easily.

    Still, I find Common Lisp to be my most productive language (Smalltalk is pretty good also :-).

    -Mark

  77. a great related article about . . . by kraksmoka · · Score: 2, Interesting
    http://www.salon.com/tech/feature/1999/11/30/lions /

    pg mentions john lions and his supressed Unix tome. this is a great feature article about it, and some (possibly not so anonymous) linux kernel hacker with a really kewl girlfriend.

    --
    "You never want a serious crisis to go to waste." - Rahm Emanuel
  78. 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.

  79. Alchemy by zerOnIne · · Score: 1

    I recently heard Pual Graham speak at my university, giving this very same talk; or, rather, a foreshortened version of it. And I have to say that I agree with many of the points that he makes. I, however, have recently begun to think of hacking as a modern-day alchemy. Not only are you trying to create new things with techniques and skill (the latter is where the science and engineering really come into hacking, as well as painting), but you're also trying to determine what the rules are. In my experience, much of hacking is poking at something to see what it does, seeing if I could make X do Y, and then while also doing Z. Computer Science is really more related to the arcane sciences than the modern "hard sciences."

    --
    09
  80. Art's not just about emotion by Anonymous Coward · · Score: 0
    What if it evokes an emotional reaction in you, but not in me? Is it only art for one of us?

    Or is it only art if it's intended to evoke an emotional reaction? Do we then have to ask the creator what his intent was, to see if it's art?

    Emotion is certainly the central feature of art from the Romantic period, but not all artists would agree with this perspective.... Right now I'm reading The Art of Interactive Design, by Chris Crawford, which does a great job presenting user-interface design as an art - software as a medium with which the designer communicates with the user.

    The same can be true of really good sourcecode, a communication from one programmer to another...it may not be Beethoven, but it's not so different from Bach. It has nothing to do with evoking emotion, but it has a lot to do with the creation of beauty.

  81. Second vote for Python by Simon · · Score: 1
    This is probably going to sound a bit repeatative, but I was reading your comment and I thought "here is someone looking for Python".

    After spending years using Perl for my small ad hoc stuff, I realised that it just plains sucks. Too many basic things were needlessly difficult. I'm referring to things like defining functions, defining classes, defining and using data structures, plus the unreadable line-noise syntax and the 'under the covers' hidden variable stuff.

    Anyway, after that started looking and even went through a PHP phase. Hoping to be also able to use it as a general scripting language. That little "fling" ended after I tried writting Object Oriented code in PHP... the pain!....PHP just does not scale.

    So finally I got around to trying out Python. I had heard a few very high recommendations about it in the past. Wow! Everything is as simple as possible, meaning you can keep it in your head for quick access, while still being very powerful. After a few days at Python I tried some metaclass hacking, something I would never dream of in Perl, and it just worked, with almost no effort. Couldn't believe it. Everything is just so fast and simple, and it scales too. I can't praise it enough. I think that most application can and should be written in Python these days. It just makes sense. (Python + Qt is just sweeeet.)

    Ok, I'm rambling now. stop

    --
    Simon

    1. Re:Second vote for Python by gregstumph · · Score: 1

      That little "fling" ended after I tried writting Object Oriented code in PHP... the pain!....PHP just does not scale.

      I've seen many comments along these lines before on Slashdot. Having done some fairly large projects in PHP which used PHP's OOP features (yes, yes, I know, PHP doesn't have "real" inheritance, etc. etc.; let's not go into all that), I'm curious about exactly what problems people are running into that cause them to throw up their hands. Is it just a speed issue? Something else?

    2. Re:Second vote for Python by Simon · · Score: 1
      The number one problem that I had with PHP isn't so much to do with it's OOP support but more to do with it's "pass by value" default, when it comes to function arguments. For small non-OO programs it's not too much of a problem. But when writing OO stuff it's murder because you almost always want to be passing objects around by reference, you don't want copies being made. This, for me, lead to tons of subtle "Why isn't that object getting changed?" type bugs. Having to be explicit about object passing was just totally working against me. That and the "kind of symbol table references" that are not quite like C pointers and are not quite the same as Java/Python references, was very annoying and also lead to bugs.

      These problems made simple OO programming a real trial. Maybe you could say "Well Simon, that's just your C/C++/Java bias there", but I just can't imagine the benefit or desire for having "pass by value" by default for objects... I was hoping that PHP would be a good general script language (the library support is excellent), but that was the deal breaker for me.

      --
      Simon

  82. Re:Computer programming is NOT an art. Get over it by shaijay · · Score: 1

    "C'est si n'est un pipe."

    Yes, absolutely, architecture is an art. The point of conversion is the context in which actions occur.

    The recognized form of art where the line first blurred is during the Bauhaus (~1912), and the formal arguments are in the Werkbund, the official book of the Bauhus written by the founder, Walter Gropius. "Modernism" from the Bauhaus, over 80 years old now, is the acknowledgement of the machine as a tool for artists, and everyone with a tool is potentially an artist.

    The act of creation is always an art. It's the [De]Constuktivists of 1920's Russia who proved this systematically in a way mathematicans could appreciate. This group of artists was the first to literally reverse engineer, then forward-engineer to create something totally new, all the while focusing on Assembly techniques that are still in use today.

    How is that unlike the art of hacking?

  83. art v. science by sirReal.83. · · Score: 1

    what's the difference between art and science? science is investigating "reality" to see what we can learn about it. the laws of nature existed before us, and will exist after us. art is investigating ourselves to discover what we are capable of. thus art is completely dependent on humanity (a priori); science is completely independent of humanity (a posteriori)

  84. but Painting did and does serve a function! by freejamesbrown · · Score: 1

    a) status. the rich have always sought prestige through status. all the rulers of the various great civilizations have commisioned artists and artisans to create monuments and artifacts to impress upon rivals and so on. and the beat goes on. many rich folks today use these artifacts to show off and get respect. you get invited to right parties. the right people become your friends. you make money.

    b) history. the rich used portrait artists and sculptors to create a living embodiment of their greatness. they serve as the photograph of the past.

    c) education. much of the religious painting that's gone on in the past was used as a means for the church to provide visuals to go along with the various stories. they didn't have charlton heston parting the red sea on tv. those images served to educate.

    it's not such a bad analogy.

    as others responding to your post have said and as you probably know... a lot of us still have to deal with programming as a matter of engineering. regardless of where you work, there are probably deadlines and demands for a something to show to somebody who's paying everybody.

    and i seriously doubt we'll see the national endowment of the arts pay for the next tomcat implementation...

    we might see someone get a grant for something less useful though because whether or not the analogy is true, the world at large sees these things as two very different things.

    being an artist hacker might not get you very far $$$-wise in the coding world right away. not in the process side. they want code fast and cheap.

    there's a big difference between a print journalist and a poet.

    he wants hackers to be poets.

    your boss wants you to be a journalist. tight. concise. and ready to print in tomorrow's edition.

    m.

  85. 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.

  86. and games are definitely an art... by freejamesbrown · · Score: 1

    they can definitely evoke an emotional response and often have important messages to convey.

    why they aren't protected by free speech is beyond me.

    m.

  87. I gotta agree with this guy... by ynohoo · · Score: 3, Interesting

    I came to programming after years of painting (this guy did it the other way around), and have to agree with many of the analogies he draws, i.e. learning by experience rather than intensive studying; designing by code rather than specification; empathising with the user as part of the design process; &c.

    Some folks ask me why I don't paint anymore, and I tell them I get my creative kicks writing software. Nice to know I'm not the only one who thinks this way (because you know the management won't understand!).

  88. Not just you... by mooman · · Score: 2, Interesting

    For me, I thought the article meandered a bit and even outright contradicted itself in places.

    To wit:
    He espouses how important it is to keep the design fluid and to change it midstream as necessary, even being fast and loose with data types. While that may indulge the hacker in being creative, it also wreaks havoc on one conveniently omitted aspect of software: maintainability. Rare indeed is the code that is written and never touched ageain. I'm sure someone can toss in statistics about what percent of time or effort is invested in the creation of code, versus all the maintenance required in it later...

    To ensure you are not shooting yourself in the foot with this method, the hacker/developer/maker needs to devote a certain amount of time in thought and design before beginning to code. If a stumbling block is detected, legitimate thought must be put into how much code must be *undone* and started over to ensure clean code at the finish. Merely exploiting the fact that you have sloppy data types that can be used in multiple ways will only lead to more convoluted (and certainly less intuitive) code.

    Another issue that Paul just sort of tosses out as fact is his claim of how most mediums were at their peak "early on", as in "The paintings made between 1430 and 1500 are still unsurpassed.". Now, I'm no art expert, but doesn't painting predate this by several millennia? Wouldn't the use of perspective by the Greeks seem like a monumental echelon above the flat art of the Egyptians? And aren't the Eqyptians to be praised for their realistic portraits relative to cave art? I'm pretty sure that 15th century art only represents generation after generation of gradual improvements. The fact that the artists following that era began to explore more abstract approaches like impressionism, expressionism and whatnot (http://www.quizbowlonline.com/artmovements.html) does not automatically elevate the "realists" to the pinnacle of the medium.

    In any case, it was oversimplifications like this that made the premise a little harder for me to swallow. Very valid points were made, but the analogies do break down in a few places...

    But I still marvel at how effective Popfile is. Paul has his moments of genius, there's no doubt.

    --
    In the Portland, Ore area and like card games? Check out: http://groups.yahoo.com/group/portlandgames/
    1. Re:Not just you... by alange+lurk · · Score: 1
      I agre that there are some good points in the essay, but overall I think it is not the best analogy - carpentry (as another poster commented) is in many ways closer, but if restricting it to "arts" rather than "crafts", I would suggest that sculpture is a much better analogy.

      While it is possible to just grab a block of stone and just chip away until you have something, most "master" sculptors don't do that - they usually start with sketches and other drawings, then progress through maquettes, and sometimes make multiple versions of the full-size pieces. Large bronzes are almost always done in sections that get connected to a pre-planned framework, and many of those sections get reused elsewhere, albeit with minor changes. (Take a careful look at any large Rodin exhibit and see for yourself).

      The sculptor of a large piece is the creative lead, but almost always the actual implementation (once the design work is out of the way) is done with the help of assistants. Truly massive sculptures are almost never credited to a single individual; even if they are, it is understood that they did not do all the work themselves. (eg, the Statue of Liberty).

      Traditional architects (as opposed to "software architects") are closely related, but they work in different materials and usually have more practical goals that "artistic" sculptors and obviously have much higher costs of failure than the sculptor. ("Oh, an ugly sculpture - nobody will pay me for that" versus "Oh, the bridge fell down, I just killed 27 people").

    2. Re:Not just you... by Raffaello · · Score: 1

      from P.G.'s article: "The paintings made between 1430 and 1500 are still unsurpassed."

      Yeah, that bit is his subjective opinion, and not even a widely held one at that. It was, in fact, a belief widely held by 19th century academic artists - that the Old Masters had technical skills now forgotten, etc.

      I think the history of art since then (Impressionism, Post Impressionism, Cubism, Modernism, Abstract Expressionism) shows that there were many, many more things to be discovered, all of which are more expressive than the naive realism of the Cinquecento.

      Especially since the advent of photography, which provides far superior consensus "realism," to maintain that the paintings of the Cinquecento are unsurpassed is really just nostalgia. This nostalgia is typical among those who haven't painted long enough to see that such Cinquecento styles are both easy, once you learn the technical tricks, and boring, precisely because of their slavish imitation of reality. This nostalgic group includes painters who haven't been painting for 10 or more years, and art historians who, typically, haven't painted much at all.

      The art styles of the late 19th through the mid 20th century are easily a match, and arguably superior creatively and expressively, to anything that Leonardo, Raphael, or Michelangelo painted.

  89. On out-designing the big guys by sohp · · Score: 1

    Best quote on why Worse is Better and other things that plague Open Source programmers, "It would be pretty easy to write a better word processor than Microsoft Word, for example, but Microsoft, within the castle of their operating system monopoly, probably wouldn't even notice if you did."

  90. Why does Paul Graham get such high billing? by Anonymous Coward · · Score: 0
    These days Slashdot seems to love to link to every single article that Paul Graham puts out as if he's some kind of prophet for the geek community. While it's true that his "Plan for Spam" paper was interesting, it was not original, and his latest writings are all just thinly disguised sales pitches for the Lisp programming language.

    I don't understand why the guy gets treated with such high preference by /.

  91. Re:In case of Slashdotting (it's already a bit slo by sootman · · Score: 1

    I know reading end to end across a whole screen is bad, but for me that column was a way too narrow. When I said 'flow' I meant let it be as wide as the window is, and I'll size it to my liking. To each his own. Personally, I don't like to move my eyes up and down as much, so skinny columns force me to scroll after nearly every paragraph. Not only is that manual labor ;-) it also keeps taking me out of the flow of reading. The web isn't a newspaper, but newspapers provide a good hint--they don't have columns the full width of the paper, nor do they go the full height.

    --
    Dear Slashdot: next time you want to mess with the site, add a rich-text editor for comments.
  92. 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. :)

  93. Python, python everywhere by gregmac · · Score: 1

    This is probably going to sound a bit repeatative, but I was reading your comment and I thought "here is someone looking for Python".

    I've had people tell me about python before. I think at the time though, I was looking at web-based stuff, and I decided to stick with PHP. But now that you, and at least two other people have said Python to me again, maybe it's time to take a second look at it.

    Any good reference-type books anyone can recommend?

    --
    Speak before you think
    1. Re:Python, python everywhere by Simon · · Score: 1
      If you want to get into Python, I would recommend quickly going through the Tutorial on the Python site to get a feel for how it works and what's available, then browse the Library reference to get an idea about what is available there, and then just choose a smallish problem and go solve it. (Refer back when needed.)

      This book might be worth checking out too:

      http://www.andamooka.org/reader.pl?section=divein

      Personally I program with "Python in a Nutshell" by my hand.

      --
      Simon

  94. Computing is a game of N-Dimensional topology. by crovira · · Score: 1

    Given the paucity of topologists (the study of deep structure and relationships,) you can imagine how frustrating it is to try to get people to understand the structure under the covers when most CS/IT/MIS people don't even understand that information has topography (the study of the surface.)

    They're thrilled to discover and use 2D tables in relational databases (when they don't turn relational integrity off.) Hey, its a step up from flat files, right?

    Computing is fundamentally based on exploring the structure of and resolving the problems of expressing some mimetic subset of the universe using Boolean logic state machines.

    That's all it can ever possibly be. You're using a computer, a fundamentally finite state machine with prescribed limits (remember the Y2K debacle, that's what it was really about,) you're NOT carving reality out of the ether.

    There is no "magic" to it at all.

    Anybody who tells you otherwise is the same kind of fool who says "At our company, our people are our biggest ASSET" when any accountant can tell you that, barring slavery, people are expenses paid from the LIABILITY side of a balance sheet.

    People hack because its fun (a worthy pursuit.) Hacking creates new paradigms or algorithms for the presentation, storage and manipulation of data and possibly of information.

    But the underlying structure will always be the definition and manipulation of objects and relationships in N-Dimensional topology.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
    1. Re:Computing is a game of N-Dimensional topology. by tcopeland · · Score: 1

      > But the underlying structure will always
      > be the definition and manipulation of
      > objects and relationships in
      > N-Dimensional topology.

      Hmmm.... I feel that statement is almost too abstract. Let's substitute another noun in there: "auto mechanics involves the definition and manipulation of objects and relationships in N-Dimensional topology". Yup, it still works.

      I guess I'm just not sure if looking at something at such an abstract level really buys you very much. I mean, I can draw a UML diagram of Linux that has one big box labelled "kernel", but that doesn't convey any information...

      Yours,

      Tom

    2. Re:Computing is a game of N-Dimensional topology. by Anonymous Coward · · Score: 0

      Oh, man, I'm not sure whether you intended to, but you've really made me laugh out loud with your insight.
      Say whatever you will about evolution, but the underlying structure [of life] will always be anti-entropy, hehe.
      Unintended or not, this is quite possibly the best Slashdot trolling I've ever come across.

  95. Re:Great Quote - nitpick by Simon · · Score: 1
    I had a hard time keeping track of what was declared and when in Python (because the field will flat out not exist until it is assigned a value). Granted you can have null references in Java; atleast you can be guaranteed the field is actually there. This is just my nitpick with python though

    Initialise your fields in the __init__() initialiser. Assign the value 'None' to the "not yet used" fields, just like Java. No more "missing until assigned fields".

    --
    Simon

  96. Re:Great Quote - nitpick by Warped1 · · Score: 1

    Bah! Of course it had to be something easy. ;) Glad I qualified that one as a nitpick. LOL

  97. He has a good point about the method by iabervon · · Score: 1

    Painting a picture and writing a program are, in fact, quite analogous, although he doesn't quite expand this analogy quite as far as he should. When you paint a picture, you sometimes start by doing a bit of research into what the thing you're going to paint looks like. This corresponds to reading about similar programs, communication standards, user expectations, and so forth. Next you may do studies, which correspond to writing pseudocode for the interesting parts. Notice that you don't write pseudocode for the parts that aren't, in some way, novel, or that you already understand well. Next you start sketching. This is different from studies because it's actually on the canvas you intend to use. You're putting down lines which will guide your hand when you're putting down paint later. In computer terms, you're writing interfaces and stubs. You expect to rewrite all of the code, but you'll keep many of the function declarations. It doesn't make sense to do this on paper or in a different language from the one you intend to use. It is convenient if the language doesn't require static types for this, and it's also convenient if it's trivial to write code that doesn't run but does compile. Finally, you actually start to use paint, and produce the work that people will actually see as the finished product. This corresponds to doing the final implementation. You fill out the stubs and so forth. When you're most of the way through this, it is helpful if you can turn on more checks in the compiler. Lack of static typing becomes a bit of a liability, since you've now worked out what the outlines are, and static typing essentially keeps you inside the lines. While you may decide to change types and such, you should be kept from doing so accidentally.

    Of course, hacking also has similarities to architecture, where, in addition to the steps in painting, you will have to follow constraints which allow the result to stand up; painting doesn't have anything which corresponds to "it looks nice, but it falls down if you build it."

  98. Re: NOT Python .... Ruby by false · · Score: 0

    Hear me now & believe me later, it is Ruby you are looking for.

    "One of the many advantages of dynamic languages such as Ruby is the ability to introspect---to examine aspects of the program from within the program itself."
    http://www.rubycentral.com/book/ospace.h tml

    "In Ruby, everything is an Object".methods.each{|s| puts s}

    File.open("posterity", "w+") do |f|
    Marshal.dump(anyObject, f)
    end

  99. wtf? by Suppafly · · Score: 0, Redundant

    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."

    wtf, is that supposed to mean?

  100. It's _one_ point of view by ites · · Score: 4, Interesting
    Having been doing both software and art (painting, drawing, photography) for over 20 years, I agree with Graham only in a few aspects.

    Software is obviously not a single subject: it is like language, and can be applied in many different ways.

    Let me take a simple example. There are two main ways that people look at the world of problems: they search for the commonality, or they search for the particularity. Now, I would argue that good software is built by finding the common patterns and solving those, but that is just the way I make software. Other people I've worked with do the opposite: they focus on hundreds or thousands of individual cases. Clearly we have different types of mind - what I consider mindless and irrelevant detail is to my colleagues the only part worth solving.

    Painters, artists obviously work the same way. So do writers, archietcts, and all creative people, including scientists. There are hacker chemists, and there are the synthesizing chemists.

    Personally, I find that the best art comes from using standard patterns in new way: for instance, good photgraphy relies on excellent understanding of light and subject, but every image must be unique. The best science takes the other extreme: determined effort to find the core patterns and understand those. Ten experiments that are each unique are worthless. Ten experiments that give the same results each time are perfect.

    Two more dimensions to this, in my experience. First, men and women tend to different approaches when it comes to creating and problem solving. More men like to hack, not because we're taught that but because our brains work that way. Second, with age our minds also seem to change: older brains can understand a depth of asbtraction that escapes younger minds. Software is all about abstraction, unlike science or art, but very much like language. Young geniuses may be able to hold thousands of details in their heads, but they cannot (generally) use them to build large-scale abstractions that work well. Again, the same for writers.

    No accident that some of the best programmers ever are also linguists and writers.

    --
    Sig for sale or rent. One previous user. Inquire within.
    1. Re:It's _one_ point of view by Sri+Lumpa · · Score: 1


      Good post, however I disagree that Science is not all about abstraction, it is, or at least it is all about abstracting the world as we live it in words and formulaes that the mind can comprehend and in this quest all that is not an abstracting process is a fact discovering process (experiment) necessary to create new abstractions.

      So the scientific method use other things than abstraction but it is all about obtaining abstractions, IMHO.

      Just my 2 cents.

      --
      "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." Bill Gates,
  101. Scientists aren't painters? by jimthev · · Score: 1

    How are these different?

    Scientists start out doing work that's perfect, in the sense that they're just trying to reproduce work someone else has already done for them.

    For hundreds of years it has been part of the traditional education of painters to copy the works of the great masters

    He's wrong in thinking that scientists (Physicists at least) don't learn science by hacking science. He seems to know as much about traditional science as the average person knows about hacking. His examples of the 'makers' can be applied directly to most scientific research. Perhaps science should be replaced with engineering in the article. Although I know as little about engineering as he does about research scientists.

  102. art vs science by juicy_lizard · · Score: 1
    "In the best case, the papers are just a formality. Hackers write cool software, and then write a paper about it, and the paper becomes a proxy for the achievement represented by the software. But often this mismatch causes problems. It's easy to drift away from building beautiful things toward building ugly things that make more suitable subjects for research papers."
    Actually, no. A paper is much more than a formality. It is intended to summarize the achievement made by building the software in order to communicate that achievement to others. Without being able to communicate your achievement, few people are going to see your "beautiful" software. (Unless, of course, your Microsoft, and you force people to purchase computers with your software pre-installed).
    "Number two, research must be substantial-- and awkward systems yield meatier papers, because you can write about the obstacles you have to overcome in order to get things done."
    Hogwash! Mr. Graham obviously has never heard of Ockham's Razor.
    "Nothing yields meaty problems like starting with the wrong assumptions. "
    The whole point of research is to determine whether certain assumptions are reasonable or not. If you knew you were starting with the wrong assumptions, then you would throw them away to begin with!

    This essay goes on and on like this. Mr. Graham might be a very intelligent business man (I hear he made loads of money on some internet company), but I don't think he has much that's intelligent to say with regards to science and its relation to art. His opinions are anything but objective, and seem to be based on his negativity towards science and mathematics in academia. In fact, I suspect Mr. Graham used the ideas he described in the essay to write the essay itself. He started with a wrong assumption, and then wrote an extremely long essay to defend that assumption. "Nothing yields meaty essays like starting with wrong assumptions."

    jl

  103. Computerology by jefu · · Score: 1
    I prefer to refer to myself as a computerologist rather than a computer scientist, computer engineer or whatever. Sadly most organizations (companies, universities...) don't like the word at all and refuse to let me put it on my business cards or anything.

    It feels like the right word to me, but the reactions of others are interesting. Often it takes a bit of explanation (which is ok). But a few times (maybe three over the years I've used the term) I've had people respond with serious anger. I have no idea (despite explanations of a sort) why.

  104. I especially enjoyed the "Math envy" quotes... by L0stb0Y · · Score: 1

    "While we're on the subject of static typing, identifying with the makers will save us from another problem that afflicts the sciences: math envy. Everyone in the sciences secretly believes that mathematicians are smarter than they are. I think mathematicians also believe this. At any rate, the result is that scientists tend to make their work look as mathematical as possible. In a field like physics this probably doesn't do much harm, but the further you get from the natural sciences, the more of a problem it becomes.

    A page of formulas just looks so impressive. (Tip: for extra impressiveness, use Greek variables.) And so there is a great temptation to work on problems you can treat formally, rather than problems that are, say, important."

    I must be a painter ninja then, because I have a combo computer AND math degree. Now, I can tell, you all automatically think that I am smarter than you! >:) Envy much? hehhehe

    Ok, sorry.

    I think it's all just Cowboy Neil envy anyway.

    --
    "We are the music makers, and we are the dreamers of dreams."
  105. WHAT A GREAT IDEA! by morgajel · · Score: 1

    That's a great Idea! a pressure sensitive mouse! oh well, I guess it could be worse

    --
    Looking for Book Reviews? Check out Literary Escapism.
  106. Re: Drawing on the Right Side of The Brain by bobv-pillars-net · · Score: 1

    Yup, my HS art teacher used that one. First time in my life I drew a realistic-looking portrait.

    Too much effort though. And I didn't see any rich portrait artists, so I went back to hacking.

    --
    The Web is like Usenet, but
    the elephants are untrained.
  107. Inspirational bug-quote by CyberDruid · · Score: 1
    I like debugging: it's the one time that hacking is as straightforward as people think it is. You have a totally constrained problem, and all you have to do is solve it. Your program is supposed to do x. Instead it does y. Where does it go wrong? You know you're going to win in the end. It's as relaxing as painting a wall.

    The next time I go bug-huntin', I hope I remember that quote. It's true - you do always win in the end, but it hardly feels like that when you're pulling your hair and trying to contain frustrated screams.

    --

    Opinions stated are mine and do not reflect those of the Illuminati

  108. Re: cyclomatic complexity by bobv-pillars-net · · Score: 1
    --
    The Web is like Usenet, but
    the elephants are untrained.
  109. I'd have to agree by Anonymous Coward · · Score: 0

    I have a similar story to the author. I studied computer engenieering and work as a programmer (lately more web related stuff), and now since the economy is down, am studying painting and drawing at college.

    There are many methodologies to painting that can be very benificial when programming. Painting (in the academic sense) is not completely about personal expression, there is in fact propper methods and steps that can be followed, for example:

    1. Go from the general to the particular. First flesh out the general forms, the general structure that everything will have before going in and adding details. This is useful while programming, haven't you ever worked out the detail of somethign but then realized when you finished the project that it was unnecesary? Also, when adding details this may change the overall, but you do the overrall loosely.

    2. Be bold and have confidence in every brushstroke. If you paint with no determination it will look soft and have no character to it. In programming, one has to make up your mind and start coding, you can't deliberate the best way of doing it forever.

    Sargent (wonderful painter, look him up) would lay down very bold brushstrokes, if he didn't like it, he lifted it out and tried again. Programming should be similar in that you think of the best aproach and lay it down boldly, if it doesn't work you can rewrite or even take out.

    3. For both programming and painting you need long hours of concentration.

    4. Also, when working in the details of the project, it's important to step away from the canvas and see how it looks as a whole. Sometimes one forgets to do this while programming and gets caught up in a detail, without really seeing how it relates to the whole picture (the whole project in this case).

    1. Re:I'd have to agree by Anonymous Coward · · Score: 0

      Forgot the link:
      here

  110. So why is Lisp fading? by GCP · · Score: 1

    This isn't a troll question. It's a question a lot of people wonder about, and I'd be interested in genuine opinions.

    If Lisp is as great as the best and brightest often claim it is, and if it has been around longer than any of the major popular languages, and if it has been taught for years to the alpha geeks who become opinion leaders... ...then why is it that even relative newcomers with no corporate backing or marketing budgets at all and that are never taught in the Great Halls of CS Learning -- like Perl or Python -- are significantly more popular than Lisp and growing moreso as Lisp fades into the sunset.

    And don't say "Python is a lot like Lisp". If you take Lisp itself, Python, and Perl, rank them in order of Lispiness, then turn the list upside down, you'll have their relative popularities.

    Again, though that's strong language, it's not a troll. I just can't figure out what I'm missing in this picture.

    If Lisp is this great secret weapon, why aren't all those thousands of Lisp programmers from the major universities putting their code where their mouth is and destroying all their Java-, C-, and Perl-using competitors? Why isn't a small army of elite Schemers taking over the industry? Is it that their secret weapon isn't as much of an advantage in practice as their theory claims, or that they could but they just don't want to, or what?

    I don't believe that popularity in a language is based simply on usefulness. Other factors such as first-mover lock-in, corporate backing, programmer egos (part of C's popularity), etc. play a big role. But it would seem as though Lisp has had all of those advantages at some point, so I just don't get it.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:So why is Lisp fading? by Anonymous Coward · · Score: 0
      so close to understanding you are...

      popularity is based on what, exactly?

      if hackers say something but many people say something else, only you can choose your preferred criteria and act accordingly. no one else has any business doing that for you.

      how does the sun fade when you leave the surface of the planet?

    2. Re:So why is Lisp fading? by MarkWatson · · Score: 2, Informative
      Good question!

      One answer is that it is not fading (too much :-)

      There are several fine commercial Lisp development systems and many fine/good free Common Lisp compilers.

      You are right though - relatively few programmers seriously use Lisp. This does not bother me in the least. Personally, I always like to use the right tool for a job. Choosing the right tool also involves issues like "can I find a programmer to maintain this code", etc.

      I used Common Lisp recently on a commercial product that I developed - I was only planning on selling "shrink wrapped" executables and the algorythms that I used were tricky (for me at least) to figure out - so using Lisp seemed like a good choice.

      On the other hand, I make most of my living writing (or getting customers started with) Java server side stuff - using Java and web standards helps insure the value of the resulting project (with source code) over the long haul.

      A few months ago, I had to do some tricky coding - I used Smalltalk to get the algorithm right - then rewriting in Java was trivial.

      BTW, I enjoy using different programming languages.

      -Mark

    3. 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.

    4. 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.
    5. Re:So why is Lisp fading? by Anonymous Coward · · Score: 0

      Given that Lisp is ANSI-Standard but "web standards" change on a near daily basis under the "direction" of the w3c and its corporate masters, I'd say Lisp is standard I'd choose for long-haul value. There is lisp code from the 70s that still works today.

  111. Psychology doesn't have the word science in it. by bobaferret · · Score: 1
    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."

    Yet.....

    1. Re:Psychology doesn't have the word science in it. by djeaux · · Score: 1
      I think T.S. Kuhn would call computer science "preparadigmatic."

      For the utterly benighted, here's a little primer: Thomas Kuhn

      --
      "Obviously, I'm not an IBM computer any more than I'm an ashtray" (Bob Dylan)
  112. Paintings are functional by rodrigo_braz · · Score: 1

    I disagree with you; paintings have the function of causing an interesting response on the viewer. This will depend on how their internal elements are laid down and related to each other. A painting can either work or not, just like a piece of software.

  113. Science, Engineering, Art, and Mere Details by Anonymous Coward · · Score: 0

    > when programming, you shouldn't be bothering with types, memory locations, pointers, and other
    > nonsense that has nothing to do with how the program works. Or in other words, the formal
    > 'scientific' aspects of programming.

    Those are no more the 'scientific' aspects of programming than the wiring required to run a particle accelerator is the 'scientific' aspect of physics. Those are mere implementation details.

    Even the algorithms and design involved in programming aren't 'scientific' aspects - that's engineering, just like using known tools to design a bridge.

    Programming, per se, has _no_ scientific aspects, any more than using a wrench has scientific aspects. Programming is, to a scientist, a tool to accomplish a task. Sometimes that task is discovering what can be computed efficiently (new algorithms), or what computers can do to aid a task (create animations), or what the ocean's doing - a friend in oceanography does more programming than I do, and I'm in CS.

    In a nutshell:

    - Science is discovery
    - Engineering is construction
    - Art is communication

    Programming itself is rarely anything other than engineering, but is often a part of all three. Don't say "programming is an art" when you really mean "programming is tricky". Creativity doesn't mean art; creativity means _talent_.

  114. Re:Interesting... by An+El+Haqq · · Score: 1

    In short, Paul Graham is a geek by association, because of what he decided he likes to do,

    Hmmm--that's interesting. You believe that people actually decide what they like to do. Couldn't you just as well say that not all people who like to program are geeks--that is, that the genetic components and/or life experiences related to skill and interest in algorithmic and system design are not necessarily linked?

  115. What's wrong with the term "Computer Sciene?" by fishexe · · Score: 1

    Computer Science is a science. It needs to be called a science to differentiate it from the art of computing. Or just computing without thinking about it. Do i need to point out that saying "they're just mathematicians" doesn't hurt the case for the term computer science because *gasp* mathematics is a science?
    I've studied physics and computer science for several years, and they're basically the same. The way theorems are presented, tests are carried out, proofs are written, it's the same business. Lots of purely theoretical constructs for the purpose of making examples. That which is referred to as computer science has nothing in common with painting. It's a science. /Programming/, on the other hand, which is not what is referred to as computer science, is an art, when carried out by great programmers. But nobody I've ever met uses the term computer science to mean, or even include, the art of hacking or even the act of programming.

    All told, I found the article fairly ignorant. I liked the point it made, that hacking is an art, like painting, and I definitely agree, but the lesser point that computer science is a misnomer was full of hot air and poorly supported.

    --
    "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
  116. CMUCL by Raffaello · · Score: 1

    Have you looked at CMUCL (Carnegie Mellon University Common Lisp)? I believe it has what you want.

    1. Re:CMUCL by rjh · · Score: 1

      Haven't found GTK+/Qt/Swing bindings for it--or am I just not looking in the right place?

    2. Re:CMUCL by DGolden · · Score: 1

      gtk+ bindings that I haven't ever used are mentioned on cliki

      JACOL apparently allows java / cl interop, but again, I've never used it.

      I haven't seen Qt bindings.

      McCLIM is the most fun, though - a project for an open-source implementation of the CLIM spec. Just reading the CLIM specification is worthwhile, if you're academically interested in graphics toolkits.

      --
      Choice of masters is not freedom.
  117. I'm with you there. by BitwizeGHC · · Score: 1

    Part of the reason why I think Extreme Programming exists is to make a mundane task sound exciting again. I mean think of it. Sounds like something skater kids would do while chugging Dew, doesn't it?

    While XP is hardly suitable for all applications, it does formalize the refine-the-design-as-you-implement process Graham talks about. Nevertheless, 99% of projects I've tackled, either for pay or on my own, have been achieved using othing more than GOFH (Good Old Fashioned Hacking).

    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  118. What is beauty? by newhoggy · · Score: 1
    how beautifull would a car that looks good but keeps breaking down be?

    A car that looks good but breaks down is not very beautiful. But isn't that the point? Beautiful things are suppose to work.

    there is a place in ergonomic to write "beautifull software", but a serious piece of software does need some science.

    Maths is beautiful. Science is beautiful.

    Beauty is when reality and mind connect. When abstractions resemble the concrete. When interacting concepts are mutually consistent. When expectations converge with results.

    For us hackers, it is when the programmer, problem, design, code and execution are one.

  119. Easy to beat Word? by sean23007 · · Score: 1

    It would be pretty easy to write a better word processor than Microsoft Word, for example, but Microsoft, within the castle of their operating system monopoly, probably wouldn't even notice if you did.

    Then why hasn't anyone done it? If OpenOffice actually does someday become better than MS Office, people will take notice. No matter how rapidly Open Source you are, you have to realize that MS has the best word processor out there; it isn't going to be that easy to top them. However, I say all the more power to anyone who wants to do it.

    --

    Lack of eloquence does not denote lack of intelligence, though they often coincide.
  120. But... by GCP · · Score: 1

    ...it seems to me that you are mostly describing the mystery instead of answering it.

    It seems to me that you are saying that Lisp is excellent, easily available, the right tool for really hard jobs, and yet "relatively few programmers seriously use Lisp". In addition, using Java instead of Lisp for most work on the server side (where the architects are free to use whatever they think will give them a competitive advantage) is how you "ensure the value of the [project] over the long haul".

    Guy Steele, the creator of Scheme, pushes Java instead of Scheme for server-side work just as you do. Of course, he works for Sun, but if Lisp were such a superior tools, why isn't Java an upgrade of Scheme?

    So my question remains, if Lisp is so great (and a lot of impressive people make impassioned and yet solid-sounding arguments that it is), why isn't using Lisp the way to ensure the value of server-side projects?

    I'm being persistent (but hopefully not obnoxious) because I can't figure out the reason for Lisp's unpopularity. If it were because it's really hard, then I'd be delighted and work hard to make it my secret weapon. I enjoy using a variety of languages, too. But if it's because it has failed to pay off in actual use after years and years of (flawed) theoretical claims, then I'd like to know that, too.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:But... by MarkWatson · · Score: 1
      There is one big advantage of Java on the server side:

      With Java, I have free servlet/JSP containers (Apache Jakarta Tomcat), a free EJB container when the use of EJBs makes sense (JBoss), simple SOAP support (Apache Jakarata Axis), lots of XML/XSLT tools, etc.

      The commercial Lisp vendor that I use does not directly support web services (every few months I propose to them that they hire me to write such support :-)

      Again, good questions!

      -Mark

  121. Yes, Yahoo Store and Orbitz by GCP · · Score: 1

    I keep hearing those two examples over and over again whenever I ask about Lisp, and it just deepens the mystery for me. If Lisp really gives its users such an advantage (in actual practice), why are there so few examples, given the number of top notch CS grads who have learned it over the years?

    As for taking time to master, it doesn't seem any harder to master than C++ (the federal tax code of programming languages), so I don't understand why it isn't more popular, especially for server-side apps. Do all of those MIT grads who spent years using it know something about its unsuitability for the real world that I haven't discovered yet?

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:Yes, Yahoo Store and Orbitz by Anonymous Coward · · Score: 0

      People who are good at Lisp programming tend to become professors, scientists, management consultants, etc. Lisp is a hobby, because the people who choose it, choose it for themselves to use, not for others to use.

    2. Re:Yes, Yahoo Store and Orbitz by Anonymous Coward · · Score: 0

      (a) I would say that Lisp is easier to master than C++. But "mastering" C++ is mastering endless idiosyncrasies and special cases, while learning workarounds for deficiencies. And when you've expended all that effort doing that, to acknowledge C++'s obvious flaws would be to devalue the effort you expended, so cognitive dissonance sets in and you become a rabid C++ advocate...

      (b) Lisp's reputation suffered heavy damage (unjustly) due to its association with AI. The 80s AI hype was the .com hype of its time. Lisp is only now recovering, really.

      (c) The division between Scheme and Common Lisp befuddles people. They're both really part of a wider "lisp" platonic ideal, but very different in many ways - in particular, CL offers much better support for large system development, while scheme values purity above all else.

      (d) Lots of people repeat obsolete stuff about Lisp that is no longer true. Yes, Lisp was a resource hog once. Compared to Java, it's certainly not. Yes, lisp once only had lists - in the 1960s! Yes, lisp once only had dynamic scoping. That changed with scheme and common lisp. Yes, lisp once only had dynamic typing. That changed with common lisp. Yes, lisp can be used for functional programming. Because it can be, it is often used to teach it - but it can also do OO, data-directed and procedural programming!

      (e) Lisp isn't exactly fading. It's got an active user community, new stuff is still being done in it, and the Open Source Lisp community is increasing its visibility a lot these days - e.g. the McCLIM GUI subsystem is shaping up very nicely.

      (f) If Lisp used for server-side apps, you won't know unless someone chooses to tell you. xanalys' biggest customers are intelligence agencies. Not reknowned for shouting from the hilltops what technologies they use. Xanalys is doing very well for itself, all the same.

      (g) Marketers have found they can "sell" languages. C# and Java are both deeply flawed languages from a technical perspective. But they're both hyped so hard there are whole internet-generations (2 years) of programmers who really think they are all there is - and it doesn't help that corporate programmers are usually told what language to use by their PHB, rather than being allowed choose the best language for the job.

  122. Out his arse by Anonymous Coward · · Score: 0

    In this article, Paul Graham speaks out of his arse.

    There are so many things wrong with this its humorous.

  123. Cool premise for a debate, little debate found by 4521red · · Score: 1

    I realize this won't be perceived as friendly, but I so looked forward to a really meaty discussion over this article and this just isn't.

    Just because you can write code that works does not entitle you to call yourself an artist or a scientist.

    If you strive to write elegant code, which embodies the simplest, shortest, most efficient means to an end, then you may proceed to the debate.

    In the spirit of constructive criticism, there's a really excellent guide to presenting effective arguments here:

    http://www.datanation.com/fallacies/

    [Oh, I already feel stupid for not being able to figure out how to correctly post the link, so you needn't point that out. I'm off to pursue enlightenment now.]

  124. Irony is not dead by jbuhler · · Score: 1

    "So why do universities and research labs continue to judge hackers by publications? For the same reason that "scholastic aptitude" gets measured by simple-minded standardized tests, or the productivity of programmers gets measured in lines of code. These tests are easy to apply, and there is nothing so tempting as an easy test that kind of works."

    Did anyone else find this rather dyspeptic comment ironic given the author's views on hacking?

  125. Re:"a language that lets us scribble and smudge".. by keramida · · Score: 1
    If hackers are painters, then text editors are the "bowl of fruit" painting. Check freshmeat if you don't believe me. :)

    Hahaha... indeed!

    Last afternoon, I told a local teen that he should start with simple programs and move on to more advanced stuff a bit later, when he feels confident enough. He immediately replied "Oh cool! I'll probably write myself a small text editor then."

    I nodded and smiled :)

    --
    My other computer runs FreeBSD too.
  126. REXX - Try it, you might like it by stephandahl · · Score: 1
    The REXX language is ubiqitous on IBM platforms, and has been ported to almost all platforms including PalmOS and Amiga.


    It's great for quick prototyping - there is a very short time from idea to implementation. It has good string parsing constructs (not as general as regexp, but close), which means it is useful for systems tools programming. It is also very readable, as opposed to, say, Perl. You can actually go back to your quick, uncommented hacks months later and understand what they meant...


    If you're using PHP as a processor module for Apache, you'll be pleased to know that there is a mod_rexx too.

    --
    What is the difference between a real song and a simulated song?
  127. No it is not only you. by jotaeleemeese · · Score: 1

    I don't understand why IT types, specially programmers, long for a more artsy, bohemian stereotype of themselves.

    There can be beauty in almost any trade or activity if you have a positive attitude to life and to what you do, That does not make you an artist.

    Your trade may require a lot of skill, but that deos not make your produced output art, specially if your production has only meaning if it compiles and solves a given problem.

    Creativity can be found in any profession, programmers (and for that instance painters) nned it more than others, but they should come down of their high horse, anjoy what they are and branch to other stuff without implying that they are what they are clearly not.

    If I want to be an artist I play an instrument, paint, write, film, photograph. But would never code. Code is not an artistic means of expression, no matter how you spin it.

    --
    IANAL but write like a drunk one.
  128. You are confussed. by jotaeleemeese · · Score: 1

    The right comparison would be to compare the humble builders (thos that know how to build a brickwall, install a toilete,etc) with the programmers.

    --
    IANAL but write like a drunk one.
  129. creativity != art by sultanoslack · · Score: 1

    Wow, I'm floored that this was modded up to +5. Creativity alone does not make something art. I guess this is probably mostly the effect of the Slashdot crowd that would like to fancy themselves hackers and artists, but has little bearing on the world of art.

    Anyway; it just happens that I was in a discussion for several hours about this last night. Here's the executive summary:

    Art is something that happens by a creator when they consciously or subconsciously express something through their creation. It is an active process of expression, not something that merely has creative merit.

    There's a difference between a clever technician and an artist. This isn't to say that forms not traditionally associated with art (i.e. programming) can't qualify to be art, but certainly most coding isn't art, despite requiring creativity. This same dichotomy exists in other fields -- think journalism vs. literature, graphic design vs. visual art, civil engineering vs. architecture.

  130. Thanks! by GCP · · Score: 1

    Thanks for the excellent summary.

    If the unpopularity of Lisp despite so many advantages is really the result of guilt by association (AI) and backing the wrong horse (LispM v. Unix) -- and that sounds plausible -- then maybe it is worth investing some time in.

    You mentioned CMUCL as "high-quality" and CLisp as "up and coming". Would you mind explaining what you mean by that? Those are the two I hear mentioned most often (among free Lisps), but I don't know what the differences are among Lisps, nor how to evaluate them for suitability for commercial software dev (say, database-backed server-side web apps or natively compiled Windows GUI apps, for example).

    And why would CL be more practical (as you suggested) than Scheme? Scheme seems to be taught even more than CL these days, and used even less in the real world: sort of the paragon of the overall Lisp phenomenon. ;-)

    And thanks for the info. Lisp, for me, is one of those cases of something sounding too good to be true, so I'm grateful for any practical guidance from those with experience.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:Thanks! by mrdlinux · · Score: 1

      CLISP is a fairly well-established implementation but due to some reason I cannot fathom, the implementors choose not to be fully ANSI-compliant. You won't notice it at first, but if you get into advanced object-system hacking CLISP will become unsuitable. Also, it's a byte-code interpreter system. This severely affects performance (except in bignums, due to some numerical methods magic), but it does have a smaller memory footprint. And it's widely ported.

      CMUCL does purport to be a complete ANSI-conforming implementation, and it has a high-performance native-code compiler. But it's not ported very much (some ports have gone unmaintained) and only to Unixy systems. The current maintainers are interested mostly in features and speed, whereas...

      SBCL is a fork of CMUCL, with the goal of being more easily maintained, cleaner, and conforming. It's also more widely ported now, having resurrected some of the old CMUCL ports and added some new ones (someone is working on OS X now). SBCL has been adding features back that were dropped, sometimes improving, for example, kernel-threads recently (vs user-threads in CMUCL).

      Lately they've been driving the development of each other, since many patches can be cross-ported easily. This is all the better for the users :-).

      I use CMUCL for most of my work, which involves database-driven web-app development, and it works fine. Though I am thinking about switching to SBCL soon, with nice features like kernel-threads coming around. Well, presumably I would be able to use either. I use libraries like AllegroServe (HTTP server), UncommonSQL (RDBMS OO interface), and IMHO (web apps w/Apache).

      Neither work on Windows (yet) so there you would need to look into Allegro, LispWorks, or Corman Lisp (which I forgot to list in the previous post). All these are native compilers that can produce Windows applications. There are no free compilers for Windows which produce native code, afaik. You can investigate GCL or ECLS, which compile to C and may work under mingw. The commercial compilers all have GUI toolkits or bindings to the Windows API. Allegro is probably out of your price range, LispWorks is ~$900 and Corman is ~$150. All have free personal editions to play with.

      Why do I say Scheme isn't as practical? Well, most Scheme implementations aren't anywhere near the same quality as the CL ones (with a few notable exceptions) and they all have to implement incompatible supersets of the language (because R5RS defines approximately nothing). Personally I think the design of Scheme itself works against practical usage and implementation, but there are those who disagree. In universities they teach Scheme, but as I was saying, as an academic exercise and not something to be used in industry. Which is a real shame.

      Anyway, if you want a learning environment, I recommend the LispWorks personal edition IDE (Linux, Windows, Unix, and soon OS X). This will get you started with a minimum of fuss. Later on, you can setup Emacs with the ILISP package and interface with your CL implementation; this is a popular way. Or you may find some other IDE. The minimum needed really is parenthesis-matching and auto-indentation. After that you might like interactive features such as shortcuts to compile code-fragments, documentation at a keystroke, easy access to a Lisp listener, inspector, debugger, etc.

      There are many books, such as Paul Graham's ANSI Common Lisp, Peter Norvig's Paradigms of AI Programming, online tutorial Successful Lisp, and sites such as CLiki with lots of pointers to resources.

      CMUCL
      SBCL
      LispWorks
      Corman Lisp

      --
      Those who do not know the past are doomed to reimplement it, poorly.
    2. Re:Thanks! by voodoo1man · · Score: 1
      "the implementors choose not to be fully ANSI-compliant. You won't notice it at first, but if you get into advanced object-system hacking CLISP will become unsuitable."
      This used to be true at one time, many many years ago. Nowadays, CLISP by default will start up in a mode where it's not fully ansi compliant (probably because the changes they made are more user friendly), but with the -ansi command line flag CLISP drops into a fully ansi CL compliant mode (except for bugs, of course). I guess by the object-system hacking you mean the Meta Object Protocol, which the ansi spec doesn't cover. The baseline for the MOP seems to be Kiczales' PCL CLOS implementation, which is used as the base for the CMUCL, SBCL and ECL implementations (and maybe a few of the commercial ones too). CLISP doesn't use the PCL for it's CLOS implementation, but there is a port available.
      "Also, it's a byte-code interpreter system. This severely affects performance (except in bignums, due to some numerical methods magic), but it does have a smaller memory footprint. And it's widely ported."
      Well, it's one of the faster bytecode compilers out there (I haven't tested this myself, but every once in a while this comes up on Usenet, where CLISP seems to be at least 2-3 times faster than the Python bytecode compiler). The "numerical method magic" is probably the hand-optimized C code (the non-ansi part of CLISP also includes arbitrarily precision floats, which are supposed to be quite fast). The base memory footprint for CLISP is just over 1.5mb, and it's probably the most widely ported CL implementation right now (it does run on Windows under Cygwin).
      "I use libraries like AllegroServe (HTTP server)"
      Me too :). AllegroServe is really a kick-ass web server, especially if the web application sits in the same Lisp image.
      "You can investigate GCL or ECLS, which compile to C and may work under mingw."
      GCL runs under Windows quite fine (that's what they use for the Windows version of Maxima). I don't think anyone is working on porting ECL (the Spain is no longer in the acronym :) to Windows, but it shouldn't be very hard, since the core bytecode compiler/interpreter is written entirely in C.
      "Well, most Scheme implementations aren't anywhere near the same quality as the CL ones (with a few notable exceptions) and they all have to implement incompatible supersets of the language (because R5RS defines approximately nothing)."
      I started out as a Schemer, and I agree on both points. The lack of useful iteration constructs quickly gets annoying, and there really are no Scheme compilers (except for Stalin, but where's the top level? :) that come close to the CL ones (well, there really aren't that many compilers period that can match CMUCL). But DrScheme has a really nice window IDE and development environment (wxWindows), and there really isn't anything like that (ie - free) for CL. CLISP, however, comes with GNU readline, and has the best command-line interface out of any of the lisp implementations (paren matching, completions, history, etc.)
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    3. Re:Thanks! by mrdlinux · · Score: 1

      I only found the DrScheme IDE to be annoying. Emacs w/ILISP is better, certainly the commercial IDEs are. And just because they're not free doesn't mean they don't exist.

      As for CLISP, I think it used to not support CHANGE-CLASS (which is in ANSI). But you are right, even without -ansi option it seems to support it in recent CVS, at least.

      --
      Those who do not know the past are doomed to reimplement it, poorly.
  131. confusing arts and crafts by g4dget · · Score: 1

    Graham is confusing the arts and the crafts. You probably need to be a decent craftsman to be a good artist, but you just being an excellent craftsman isn't sufficient. Painting is not just a skillful depiction of objects and people, it's about the human condition. Most software is not.

  132. Definitions by Anonymous Coward · · Score: 0

    People often try to define what they don't understand.

    Art in particular.

  133. It helps to read the article by Anonymous Coward · · Score: 0
    "A paper is much more than a formality. It is intended to summarize the achievement made by building the software in order to communicate that achievement to others. Without being able to communicate your achievement, few people are going to see your "beautiful" software."
    Umm, so it's a communications formality whose subject is the software?
    "Mr. Graham might be a very intelligent business man"
    "I had never liked the business side very much, and said that I just wanted to hack."

    "And the things I had to do the other three quarters of the time ranged from tedious to terrifying. I have a benchmark for this, because I once had to leave a board meeting to have some cavities filled. I remember sitting back in the dentist's chair, waiting for the drill, and feeling like I was on vacation."

    "I hear he made loads of money on some internet company"
    "When Yahoo bought Viaweb, they asked me what I wanted to do."
    "His opinions are anything but objective, and seem to be based on his negativity towards science and mathematics in academia."
    "If universities and research labs keep hackers from doing the kind of work they want to do, perhaps the place for them is in companies."
  134. It helps to read the article... by Anonymous Coward · · Score: 0
    "I've never liked the term "computer science." The main reason I don't like it is that there's no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they're doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers-- studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department."

    For those with reading comprehension problems (as the parent poster appears to have), what Graham is saying can be summarized as follows: Computer Science the term and university faculty (since when was "Programming" a separate degree program?) groups the unrelated fields of mathematics and hacking, which isn't always good.

    "But nobody I've ever met uses the term computer science to mean, or even include, the art of hacking or even the act of programming ... but the lesser point that computer science is a misnomer was full of hot air and poorly supported."
    Wow, you sure back your point up with objective evidence (how many people have you met, anyway?).
  135. Thanks again! by GCP · · Score: 1

    Excellent info. Thank you so much. I find lots of lists of pointers to various implementations, but it's pretty hard to find "reviews" of the pros and cons of each, informed opinions on which would be best for what and why, what direction each appears to be going, which appears to be obsoleting which, and so on.

    These must qualify as frequently asked questions, so I'm hesitant to ask them on online forums, but they aren't addressed in any FAQ I've seen so far because, presumably, it's politically incorrect for a FAQ to pick favorites. So, information like your posting here is greatly appreciated.

    Thanks.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
    1. Re:Thanks again! by mrdlinux · · Score: 1

      Well someone has corrected my old impression of CLISP, it seems to have shaped up in recent times. So it is ANSI-compliant with -ansi option, modulo bugs.

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