Slashdot Mirror


Paul Graham On 'Great Hackers'

dcgrigsby writes "Always interesting, if not unbiased, Paul Graham has published a new article on 'Great Hackers', discussing why Perl and Python are apparently better than Java, on why Microsoft developers get offices, and a host of other sure-to-be-controversial stuff."

13 of 620 comments (clear)

  1. I'm going to have to go with "blowhard" by jbellis · · Score: 5, Insightful
    From someone who has RTFA, Graham says,
    What we ought to look at, if we want to know what tools are best, is what hackers choose when they can choose freely-- that is, in projects of their own. When you ask that question, you find that open source operating systems already have a dominant market share, and the number one language is probably Perl.
    First of all, if you look at sourceforge stats, the top languages are C, C++, and Java, so if Graham is right and these languages are vastly less productive than Perl and Python (whose only common characteristic is they are both "scripting languages"), he's very wrong that open source programmers working on their own time are better judges of language power than others.

    Second, and I'll probably be modded as troll for this, but all the programmers I know who like perl are sysadmin types who don't know better. Popularity isn't a much better measure of "goodness" in the open-source world than it is anywhere else.

    Graham may make some good points but he's SO far out in left field on others that his credibility is shot as far as I'm concerned.

    1. Re:I'm going to have to go with "blowhard" by mike_scheck · · Score: 5, Insightful

      As a sysadmin type who "doesn't know any better", I can tell you that I like PERL because its effective, and easy to write a short legible program that is far more powerful than a shell script. I work at a large company, and we have many cases where a perl script evolved into something much more complex than many C/Java programs in production, simply because when a small change needs to be made, almost anyone who has taken a previous programming language can make the changes or add features.

      BTW, we have had Java programmers come in and give preso's on why Java is so great, and its pretty funny, they talk about a lot of things that perl has, but they don't realize it. Oh, we can create "objects and manipulate them", or "we can reuse our code". Crazy me, I've been typing all those perl modules by hand and throwing them away when I was done with them!

    2. Re:I'm going to have to go with "blowhard" by JerkBoB · · Score: 5, Insightful

      Second, and I'll probably be modded as troll for this, but all the programmers I know who like perl are sysadmin types who don't know better.

      Well, I'm a 'sysadmin type', and Perl lets me get my job done with a minimum of fuss. I have lots of one-off tasks that would be tedious to do by hand, and shell scripting is just annoying. But I've also written a whole ISP provisioning system with Perl, and tied it into our company's proprietary billing system. If I'd been doing it with C or Java it would have taken me a lot longer and definitely wouldn't have been as stable as quickly as it was.

      Is it possible for me to program in C or Java? Sure. I had CS classes. But for me, Perl is the right tool for most of my jobs. People like you who look down your noses at a 'scripting language for sysadmin types' are typically the sort of people whose messes I have to clean up because they have just enough knowledge to demand root on their workstation so they can screw things up.

      You haven't taken the time to appreciate how Perl can be used in a sane manner to create stable, maintainable codebases and applications. That's fine, but it doesn't invalidate or devalue what the rest of us are doing with it.

      --
      A host is a host from coast to coast...
      Unless it's down, or slow, or fails to POST!
  2. Java by kaffiene · · Score: 5, Insightful

    Is suited to people who simply want to write large bodies of maintainable code. It's not intended for small hacks, nor is it intended for being close-to-the-metal.

    The idea that one must automatically be a crap programmer because one likes Java is an egotistical and obnoxious point of view. I happen to like Python and C and C++ as well as Java, and I use all of those on occassion, but Java is no less a suitable and appropriate language to use for some tasks as any of those other languages.

    I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.

    1. Re:Java by daveinthesky · · Score: 5, Insightful

      Herd mentality.

      Java has nothing about it that makes it any more maintainable than any other language.

      But,
      LISP, Python and Perl do have language _features_ that make it much more powerful to good programmers. Closures, anonymous functions. LISP has macros. Imagine java or C/etc without recursion. That's what Java is. A language without closures, macros and lambda. It's missing stuff!

    2. Re:Java by kaffiene · · Score: 5, Insightful
      Java Python and Perl are simply NOT aimed at the same target. The things I would gladly write in Python or Perl I just wouldn't consider Java for.

      Insisting that one and only one language is the true language is just silly.

      Having programmed in Java, Python, Perl, and a motley variety of other languages, I've got to say, if you are happy in Java, especially after having tasted Perl or Python (or Ruby or Ocaml or whatever)... no, you're not one of the great and yes, they will sound arrogant. But their claims, nonetheless, will be true.

      Uh huh....

      Look, I'm a software engineer with 20 years experience. I'm no newbie by a long shot, and as much as I back myself and my skills, I would never say such a bullshit statement as "if you're happy with language X, then you can't be one of the great"

      Your milage obviously varies

  3. Eric Raymond by EmbeddedJanitor · · Score: 5, Insightful
    ESR will tell you that you must be like him. He says one should play a musical instrument, enjoy (and preferably write) science fiction. He does not mention having a gun fetish, but I guess this helps...

    Now I would classify myself as a hacker, but cant play a musical instrument (CD player isn't a musical instrument right?) and sci-fi gives me a softie. Dig guns though.

    IMHO a good/great hacker must be prepared to go where he wants to with confidence. Don't just take on everyone else's mindset (if you do what the other 6 billion people are doing you're not going to do anything worthwhile). In short, scratch your own itch.

    --
    Engineering is the art of compromise.
  4. Re:creativity plays its part by Tirinal · · Score: 5, Insightful

    Slashdot... where lifting something directly out of the article, making the punctuation worse, and asking if the original author mentioned it is modded +5 insightful.

    Dear God, I'm beginning to see parallels between this place and our political system. I need a drink...

    --
    ~Tirinal
  5. Java Vs. perl by fimbulvetr · · Score: 5, Insightful

    He's right. You guys are so personally offended you can't see the forest for the trees.

    He's talking about hackers here, kids. Not 90% of the /. crowd. In your opinion, who's the most likely hacker?

    a. sysadmin
    b. java developer
    c. janitor

    Personally, I'm voting for (a). (A) because most sysadmins deal with perl, lots of unix systems, they know *nix inside and out.
    Java guys are out of the question, they're too wrapped up in their baby blankets sucking their thumbs to realize they are not _in_ the group we're speaking of.
    Janitors, well, it's possible, but probably not common.

    I'm a sysadmin, and I user perl all day long. Sometimes at night, when a brute force ssh attack comes along. I need to know which exploits are out there, I'm constantly trying to break my system. I'm constantly learning about the newest buffer overflows in solaris. I am intimately aware of memory space in the kernel. I don't live in a Java Dream World (tm). I don't have all day long to dream of how, if java were tangible matter, it'd be able to cure world hunger. I'm too busy living in the Real World(tm).

    In conclusion, while it's uncommon to have good hackers know they're good, it's a lot more common to have a bunch of wanna-bes think they are "the hackers".

  6. Tool for the job. by DarkMan · · Score: 5, Insightful
    First of all, if you look at sourceforge stats, the top languages are C, C++, and Java, ...


    If you look at what a good joiner uses, you'll note that he has a large set of tools, and picks the right one. There is no advantage in trying to turn wood on a lathe with a screwdriver - that's the job of a chisel.

    A similar thing applies with computational work. If you truely know what you are doing, you'll use the right tool for the job. If your wanting to accumulate a large set of facts, and then do some comparisons across that set of facts, that's a job for Prolog. No matter that C, or Java, or Perl, or whatever, is more popular. They are just a poor fit to the task, which would mean you'd need to write a predicate logic packeage in them, to get them to work.

    Look at tools like FFTW. It's written in OCaml, and C. Two different languages, each used seperatly, to play to thier strengths. OCaml does tree parsing, and optimising of an abstract syntax tree. C code does the numerical heavy lifing. That's choosing the right (rather, a good, there is a pluraity of good tools for that) tool for the job. Trying to do the abstract syntax tree parsing in C, or the numerical heavy lifting in OCaml is just stupid - you'll end up with something that's nowhere near as good.

    Try writing an OS kernel in Perl.

    'Favourite language' is something that's not a good metric. I've solved problems (and that's what it's all about) using 50 lines of C feeding 100 lines of Fortran feeding 50 lines of Perl producing Postscript that compiled to the desired diagrams, because that's what suited the problem domains best.

    Claiming that 'good hackers like language X' misses the whole point. Good hackers will use the best tool for the job.

    Also, Graham seems to be conviently ignoring the 'can this be understood three years down the line' aspect. There is no point in having code that you can't maintain. That's where Java comes in - it's got a blend of power and syntactic salt help keep things maintainable. Asserting that maintainabilty isn't relevant just strikes me as something that's, well, immature.
  7. Python, PERL and Hackers... by Qui-Gon · · Score: 5, Insightful

    Software maintenance is the single largest portion of the software life cycle. (IMHO)

    So, why would I as chief programmer or system architect on a software project (that has a budget) allow pieces of the of software system to be built with languages that the 'common' programmer doesn't know? Sure, you could spend money training all the 'lesser' programmers in Python and/or PERL but, why waste the money? There are perfectly good languages that are defacto standard, provide loads of functionality, development tools, and are known by the 'so-called common' programmer. Every language has its pros and cons. So, if Java's weakness is uber-hackers don't like to use it than PERL's and Python's is maintainability.
    (However, I think author might be poking the tiger with comments like: "Of all the great programmers I can think of, I know of only one who would voluntarily program in Java." And we all feel right into that trap... I know I did. :) )

    Also, the single most important resource on a software project is people (again IMHO). Typical development scenario: New contract has been acquired. So, you as the "boss" hired 10 developers for the new project. One of which falls in the author's super-elite hacker class. The project's initial system delivery goes as smooth as glass cause the 'brains' of the operation (or the 1% as the author calls it) did majority of the work. Well, shortly after the initial delivery the hacker decides the project is now boring, the system was delivered and he or she is now looking for a new challenge. He or she now leaves the program and/or company. Now, there is a serious issue. Since the hacker did 90% of the work, now 90% of the core knowledge of how to maintain the system has left as well. (And I don't care who you are. Jesus himself couldn't write software that is perfect the first time. Bugs are always present and requirements can and do change. And Jesus also can microwave a burrito so hot he himself couldn't eat it!)

    Given the author's profile of the hacker- Quiet, anti-social and loves his/her corner office with the door locked (which is a BS stereo-type)probably also didn't bother to pass any knowledge on to anyone else on the project. So, tell me again why this person was 'the most valuable thing' to us and the delivered system?

    I personally love working with people are technically sharp but, also like working with other people and sharing info. I have caught myself being sort of elitist when I was the technical authority on something. But what does that gain you? Nothing in my experience. You want to be respected by your peers and co-workers? Share with them your knowledge not just lines of code (be it byte-code or interpreted scripts).

    --

    We are blind to the Worlds within us
    waiting to be born...
  8. summary of slashdot response to this article by BlueStraggler · · Score: 5, Insightful

    "It was really interesting until he pointed out that great hackers work differently than I do, at which point it became clear that he is a moron."

  9. Great Engineers by Keel · · Score: 5, Insightful

    I know there have been flame wars about using the word "hacker" for years, and I certainly don't want to start another one. I don't care if people use the term as a pejorative or a badge of honor. I don't care if it means a computer criminal or software developer. I don't care if it means white hat or black hat. That's a debate best left back in 1985.

    But having said that, I think it's time we retire the word "hacker". The reason I think this is because the use of this word, which is supposed to be so positive: the curious, problem-solving tinkerer, isn't really that positive anymore. I'm talking about hackers as craftsmen (another word the author uses in the article). Defining software development as a craft harkens back to a an age when the industry was young and still defining itself. An age when the industry was hidden behind equipment in a backoffice or university machine room populated by bright-but-eccentric pioneers. A time when the industry, and its pioneers, didn't know what its Best Practices were. Those days are over.

    Today, the industry has matured in many ways. Today, projects, and the organizations that manage them, don't want a tinkerer who will sit in the backoffice and figure stuff out. They want well-rounded individuals who can gather and interpret requirements, communicate with their team, and develop elegant, well-designed solutions using best practices. They want Software Engineers and Software Architects.

    There is still a camp out there that is resisting this change. They still believe in the craftsman lifestyle, and they still code with emacs (oops, another flame war! ;) But I don't think this view represents the majority of developers; it may not even represent the majority of open source developers. The hacker/craftsman camp is a small minority.

    The author makes the point that some developers are so much more productive than their peers because of how they use technology, but does he realize that those productive developers are not hackers/craftsmen pecking out PHP or perl in their emacs session? They are Software Engineers using latest-generation tools and languages, design patterns and best practices, object-oriented techniques and integration technologies like message queues, not to mention web services and remoting. And incidently, they're still employable.

    --

    ----

    "Oh, bother," said Pooh, as he hid Piglet's mangled corpse.