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

620 comments

  1. Interesting insights... by Fux+the+Penguin · · Score: 3, Insightful

    Interesting insights.

    I wonder, how does one become a great hacker? How do you make yourself a great hacker? I'm not sure it's possible...I mean, I know you can do a lot of things to make yourself dumb, but what can you do to make yourself smart?

    I guess a good part of it comes from working on what inspires you, and what makes you happy. In general, I find that it's very difficult to make very smart people do things they don't want to do.

    I suppose that in order to accomplish something important, it has to be important to you. It could be that you love it. Obviously, if you can keep alive the zest for programming you had when you were young, then you're bound to do well. If your current profession is making you senile, then you're probably not going to keep that hacker spark going.

    I think the real issue must be inquisitiveness. I find that good hackers are very curious about the world around them. Ultimately, that must be the answer. To be a good hacker, you must have a genuine thirst for knowledge, and a desire to improve things for those around you. Sounds good to me.

    1. Re:Interesting insights... by Jack+William+Bell · · Score: 1
      Some time ago I wrote a link rich /. journal entry about salary differences for star programmers which covers some of the same ground. But I think the core insight of the article above is this:
      Ordinary programmers write code to pay the bills. Great hackers think of it as something they do for fun, and which they're delighted to find people will pay them for.
      I found it very interesting that I meet every single qualification for being a great hacker in that article -- except one: I am currently contracting for a certain large software company in Redmond...

      Does anyone in the Seattle area need a great hacker who would really rather be writing Python than C#?

      --
      - -
      Are you an SF Fan? Are you a Tru-Fan?
    2. Re:Interesting insights... by Anonymous Coward · · Score: 0

      http://slashdot.org/comments.pl?sid=116107&cid=982 7487 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.

    3. Re:Interesting insights... by IrresponsibleUseOfFr · · Score: 2, Insightful
      I wonder, how does one become a great hacker?

      How does one become great at anything else? 1 part talent, 9 parts determination.

      Another part of the question is: how do organizations support the development of "great hackers". The first part is to recognize that programming is a skill. There is only one proven method of developing skills in people, and that is mentoring. We do it for doctors. We do it for carpenters. We do it for all professions that depend on the workmanship and talent of one particular person, even if they are in a team setting. It is the only proven, time-tested way.

      That said, most companies don't want great hackers. They want coders. That is interchangable people who can write code to produce a product. Coders don't require originality. They require that you can implement features X, Y, Z in a product in a certain time-frame with a certain quality. I personally don't think that being a coder is a bad thing. Not everyone is very ambitious at their job. Frankly, they have better things to do. Spend time with the wife and kids. Go fishing. Whatever. A job is what they do, not who they are. I highly respect that point-of-view. The most important thing to realize if you are a coder is that you are a coder. You should work 9 to 5, 40 hour weeks in a nice environment for good pay. Don't let your job control your life.

      Great hackers are wired differently. Their priority is what they produce. Everything else is secondary. They are out to change the world and how it works with their art. But the reality of the matter is, they don't have as much of a life outside of their job. They don't get paid as well unless they are in a start-up that goes big. Their financial situation is naturally riskier. 9 to 5, 40 hours a week are not practical. While, we might idolize great hackers for the amazing things they are able to produce. For a good portion of the time, it actually sucks to be them. And success is by no means guaranteed.

      Most people fall in between these two extremes. Take into account your ambition and what you want to do with your life. Great hackers make huge sacrifices. You might find it to be more satisfying to just be a good coder.

      Organizations fall into extremes of how they support programmers also. But the best environment for programmers is that there needs to be a way for a person to work uninterrupted and quiet for as long as they need, and there should also be a place where programmers can mull about communially during breaks.

      Microsoft is actually a great place to work. They do attract some of the best coders and some great hackers. This is with respect to working for them, not their business practices.

      The worst organizations to work for are those that claim that they want great hackers, when all they really want is a bunch of coders. These organizations will appear to be run by PHB's. They use duplicity to build a better wage-slave. It is simple cost/benefit and trying to extract the maximum amount benefit out a person for the lowest cost. I honestly believe this has become the dominant thinking in American corporate culture. Partly, because it requires no skill, and why the US is losing its technological edge. It is very demoralizing to work for those companies too. No one believes implementing yet another payroll system is going to change the world. Or replacing an old mainframe system with some sort of EJB web interface. Businesses need this done. But it is done by coders, not great hackers.

      I think that this basically summarizes what Paul Graham said along with my own insights. I think Paul Graham plays a little bit fast an loose with definitions, which is why, what he says comes off as controversial. When, in fact, it isn't. He is stating well known facts, just not very well :)

      --
      Facts are meaningless. You could use facts to prove anything that's even remotely true! -Homer Simpson
    4. Re:Interesting insights... by D.+Book · · Score: 1

      The most interesting insight I've garnered from your post is of how easy it is to get modded +5 Insightful by plagiarising large portion of a linked article, changinging a few of the words around, and presenting them as your own ideas.

    5. Re:Interesting insights... by TuataraShoes · · Score: 2, Insightful

      Generally, I enjoy Paul Graham's techno-philosophy. But I think he's gone off the rails a bit here.

      First of all, his word 'hacker' seems to imply something that excludes application programming. Most of my job is application programming. Second, a 'great hacker' seems like a rare breed. It's like talking about the great legendary firefighters, when in reality, many good hard working fire fighers could put out regular fires just as well.

      I am not a 'great' programmer. But I write good, stable, maintainable, software. If I may be so bold, I think some of my work is artful, functional and bloody good.

      I enjoy perl and I enjoy Java. The scripts that personalise my linux box are perl. The scripts that shoehorn my customers' data into various systems are perl. The cgi's that give an interface to email and admin utilities are perl. But If I need a gui (other than http - and yes, I've used Tk before) or if I'm starting a new large scale project that will be coded and administered by a team, I would choose java. Why, because we have a large scale server app entirely in perl, and many of the routines are so stylised to the person how wrote it, that nobody else can figure out what's going on without hours of head scratching.

      So each tool has its merits. It may be that some of the Mozarts of computer software prefer various languages. And these guys may be Paul Graham's buddies. But the rest of us are programmers of varying experience, many very good. And we can write elegent code in Java just as we can pen poetry in perl. Some of us can even pick the right tool for the task without imagining that the choice says something about our personal greatness.

      --
      Surely in vain the net is spread in the sight of any bird -- Proverbs 1:17
    6. Re:Interesting insights... by Alan+Shutko · · Score: 1

      That said, most companies don't want great hackers. They want coders. That is interchangable people who can write code to produce a product.

      Every company I've worked for wanted hackers. Unfortunately, they didn't realize it and couldn't try to hire for it, but when they got one in their clutches they hung on hard. So I'd say more companies than one would think actually appreciate hackers.

      I do make a habit of avoiding truly bad management when I choose jobs, so maybe it's only places with smart managers (immediate managers, not the higher ups) who appreciate hackers, but I still believe there's a lot more out there who would enjoy employing one than know it.

    7. Re:Interesting insights... by JohnsonJohnson · · Score: 1

      The same way you become a great athlete, or a great musician, or even a great investor; practice.

      There is of course an absolute limit to what you will be able to accomplish that's beyond your control, at 6' tall no matter what I do I will never be able to be a more valuable basketball player than Tim Duncan, no matter what I've always got to deal with the extra 12" of height (and probably more in reach) that he has. But that doesn't mean a 6' tall person can't become a great basketball player; Allen Iverson, Isaiah Thomas, Calvin Murphy etc. all show that it's possible.

      Similarly if you want to become a great hacker, then hack away. Devise projects and complete them. In time you'll find it becomes easier. Education helps too. And there may be some things you can never be good at. If you lack good spatial orientation skills the finer points of computer graphics may escape you, but that won't prevent you from being perhaps the next great writer of file systems, compilers, DBMSes etc.

    8. Re:Interesting insights... by Anonymous Coward · · Score: 0

      sorry but the writer of this article knows about hackers and programming as much as the director of "Hackers" the movie (i.e.: the word sounds cool). to go off and say that python is better than java and people who use it are smarter is nothing more than a lame attempt to start a flame-war .. if 1 monkey took 1 hour it would write this piece of crap (and apparently did) .. couldn't finish reading it

    9. Re:Interesting insights... by TKinias · · Score: 1

      scripsit IrresponsibleUseOfFr:

      Great hackers [...] are out to change the world and how it works with their art.

      I think the key may be the art part... In my mind, a hacker views his work as an art form...

      --
      In principio creauit Linus Linucem.
    10. Re:Interesting insights... by ahdeoz · · Score: 1

      I've always wanted to learn python (or at least use it beyond the few simple tutorials I've done so far) but I'm still suspicious of it's greatness as a language, since there are few, if any, great tools written for, or in, python that I've heard of. Like for instance, web apps. I really want to use python, but there's nothing for it. Zope is a toy, webware is incomplete, and mod_python is buggy. GnuE interested me for about a year, but I eventually realized it's all talk. What gives? Simple things like def, tabs, and constructor syntax gave me the first impression that python users just didn't "get it" and as much as I'd like to get used to the syntax (it being the cleanest i've seen otherwise) I can't seem to find the seriousness of the languages creators, and I'm not clever enough to contribute on my own.

    11. Re:Interesting insights... by cfuse · · Score: 1
      I mean, I know you can do a lot of things to make yourself dumb, but what can you do to make yourself smart?
      1. Make mistakes and learn from them
      2. Ask questions
      3. Talk to other people
      4. Learn how to listen (as opposed to just hearing)
      5. Learn how to debate and argue (intelligently as opposed to agressively). Try arguing for something that you don't believe to be true, it's a good exercise.
      6. Read anything and everything
      7. Don't watch TV
      8. Avoid things that will damage your brain (alcohol, cigarettes, glue-sniffing ...)
      9. Eat regularly, and avoid eating rubbish. Your brain runs on glucose, and it gets the shits when it doesn't have anything to eat.
      10. Sleep enough, and sleep at night not during the day
      11. Reduce stress
      12. Exercise
      13. Meditate
      14. Deal with illness and pain as rapidly as possible. They hamper your ability to think.
  2. All hackers are "great" by beee · · Score: 4, Insightful

    Anyone who spends their time improving software is doing us all a favor... that's why my screensaver at work has always said: 'Hackers are great'.

    It took some explaining to convince my boss that "hackers" wasn't a negative term, but since then I've received nothing but compliments from other geeks in the office.

    Hackers are great!

    --


    + Donald Gunth
    + Email: dgunth@quicktek.net
    "Caffeine is the greatest lubricant ever created." -ESR
    1. Re:All hackers are "great" by the_argent · · Score: 2, Insightful

      The best non-techical reference for a hacker to get the point across to people that I've used is the Wright bros. They used bicycles to build a fully flight capable aircraft. If they tried to do that today, they would get procecuted under some form of the DMCA. Thank god they weren't born under the current hampering of innovation that we face....

    2. Re:All hackers are "great" by Anonymous Coward · · Score: 0
      If they tried to do that today, they would get procecuted under some form of the DMCA.

      Have you ever considered reading the DMCA, so you might have, you know, the slightest idea what it covers?

    3. Re:All hackers are "great" by kfg · · Score: 5, Informative

      The Wright Bros. sued nearly everyone in sight for patent infringement, which is the main reason the center of aero-technology moved from America to Europe in less than a decade.

      By the time of WWI America was put in the position of having to license aeroplane and engine technologies from England and France.

      I think you should find a better example.

      KFG

    4. Re:All hackers are "great" by Telex4 · · Score: 4, Insightful

      One thing that Graham's essay didn't address directly, but that he alluded to, is not only how you can tell a Great Hacker from an ordinary Hacker, but how one can tell how good a Hacker is in general.

      He mentioned several key qualities, namely: curiosity, concentration, and the desire for control and autonomy over tools and environment. He suggested that Great Hackers exhibit these qualities, but it's not as though you can judge how curious a person is, or rate their desire for autonomy (they might just be a jerk).

      Perhaps the more important thing is that people have these qualities at all. In societies where people seek life quality in television, money and "quality time", we ought to all admire the Hacker's qualities and aspire to them (amongst others, of course). Companies ought not to worry too much about Great Hackers, if they are as rare as Graham suggests, but it's well worth considering how they can improve the lives of their employees and thereby improve their productivity.

      Hackers don't just give us great software... they give us a successful model of how we can improve ourselves. Well, except in terms of exercise perhaps ;-)

    5. Re:All hackers are "great" by d474 · · Score: 1

      Kind of to your point, if anyone hasn't read "The Hacker Ethic" by Pekka Himanen, you should if your interested in the 'hacker' topic and explorations into its definitions.
      It goes into great depth about not only what comprises a good 'hacker', but also how society in general could greatly benefit from employing this "hacker ethic" that contrasts greatly from the 'Protestant ethic' of which almost all corporations currently have as their modus operandi.

      --
      Authority questions you. Return the favor.
    6. Re:All hackers are "great" by Javagator · · Score: 1
      He mentioned several key qualities, namely: curiosity, concentration...

      One quality he didn't mention, is a sense of elegance. The best programmers I have worked with always wrote clean, well organized, easy to understand code. Code that was easy to use and easy to re-use. I have worked with some brilliant people who were good programmers but not up there with the best. The quality they lacked was the ability to write elegant code.

    7. Re:All hackers are "great" by FuzzyBad-Mofo · · Score: 1

      Heh, so much for the theory that IP protection spurs innovation. (yet again)

    8. Re:All hackers are "great" by Safety+Cap · · Score: 2, Interesting
      They used bicycles to build a fully flight capable aircraft.
      Seeing as how bicycles are/were made from metal tubing, and the Wright Flyer was made entirely from wood, canvas and wire cables, please explain how the "fully flight capable aircraft" was built.

      So what exactly differentiates a so-called fully flight capable aircraft from other aircraft?

      Suggestion: less time on /.; more time paying attention in school and reading books in the library.

      --
      Yeah, right.
    9. Re:All hackers are "great" by killjoe · · Score: 4, Insightful

      More to the point. Sometimes great hackers make the worst employees. They are hard to get along with, arrogant, and throw tantrums.

      The problem is that frequently the job of programming is routine and boring. Maintaining old code, debugging, writing tests etc are all crucial to delivering software but the great hackers can't be bothered with that boring stuff.

      If you see a great hacker don't hire them as an employee. Hire them as a consultant so they can come and go. They are useless once an application has been built and the mundane stuff kicks in.

      --
      evil is as evil does
    10. Re:All hackers are "great" by bladesjester · · Score: 3, Insightful

      Oh, I think that it shows IP protection spurs innovation - right to places that don't have it. :P

      --
      Everything I need to know I learned by killing smart people and eating their brains.
    11. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      I doubt by your message that you've ever worked with a person that has exceptional computer skills (someone in the top %2). I had the pleasure of working with one such individual at Sun in the early 90's. This person enabled many many people to operate a couple levels above their norm. Perhaps you worked with some arrogant talented people, but the great ones set the standard for the rest of us to follow.

    12. Re:All hackers are "great" by the_argent · · Score: 1

      Well, Seeing as the Bros. Wright opereated a bicycle shop to pay the bills, I'm sure they adapted at least part of the gearing and drive train knowledge and/or parts to thier proto-type aircraft.
      And the "fully flight capable" aircraft would be defined by the length and air time sustained by thier first craft. I can build anything I want and call it an aircraft, but it doesn't necessarily make it so, now does it? And as for them pursuing copyright infringement, that I did not know.

    13. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      Keep dreaming. A Great Hacker wouldn't be caught dead at a 'job'.

    14. Re:All hackers are "great" by frank_adrian314159 · · Score: 3, Interesting
      Maintaining old code, debugging, writing tests etc are all crucial to delivering software...

      I see you've never worked with a great hacker.

      Code written by a great hacker usually doesn't need maintenance because it already does the right thing. If it does need maintenance, it is modular enough that adding new functionality is not an onerous or time-consuming task.

      As for debugging and writing tests, a great hacker's code is so clean and so defect free, they don't need to spend a lot of time debugging and writing test cases will simply diminish returns.

      That being said, maybe one in a thousand programmers is great hacker. Their rarity and general non-availability explains why the rest of us believe that the maintenance, debugging, and test writing to cope with the badth of our pitiful code is necessary.

      --
      That is all.
    15. Re:All hackers are "great" by killjoe · · Score: 1, Insightful

      Geez can I please visit your planet once in a while. It sounds like a wonderful place.

      Tell me something. On your planet of self maintaining, self debugging and self testing code is the code self commenting too? Now that really would be nirvana.

      --
      evil is as evil does
    16. Re:All hackers are "great" by frank_adrian314159 · · Score: 4, Interesting
      Where did I say I live on this mythical plane? Most of my work has been involved with the same bad code you describe.

      I have on one occasion worked with a person whose code was so good he didn't need this stuff. He *was* that good. And I doubt I'll get another chance to work with someone *that* good again. That's the difference between an average hacker and a "great" hacker.

      And, yes, the code *was* understandable and well-organized enough that it was self-documenting.

      --
      That is all.
    17. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      The real question is would they have gone to the effort of making the technology work if everyone else could just snipe the working product and take away their advantage -- while leaving them w/ the costs.

      Face it, patents have a legitimacy in meatspace.

    18. Re:All hackers are "great" by Keel · · Score: 2, Insightful

      I firmly believe that the notion that great software developers are arrogant and difficult to get along with is a total MYTH. I think those individuals believe they are great (hence the word arrogant) and they may successfully convince others, especially non-technical people, that they are great, but they are not.

      In today's large, complex, object-oriented enterprise application development environments, being able to work with teams and communicate is an essential skill. Sticking an asshole in a corner and waiting for him to kick out thousands of lines of code by himself doesn't fly anymore. Developers not only have to get along with their teammates, they often have to communicate with business people, or even customers. This is even more true when they're consultants.

      --

      ----

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

    19. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      I guess he meant "able to take off, fly some distance safely, and finally land without destroying the plane" by "fully capable".

      Other stuff are the details.

    20. Re:All hackers are "great" by killjoe · · Score: 2, Insightful

      No code is self modifying. All code needs maintenance. Business rules change, the marketplace changes, the competition does something you didn't expect etc.

      If a GreatHacker wrote the original code then the same GreatHacker will derive absolutely ZERO pleasure in modifying his/her old code to work in a slightly different way. GreatHackers thrive on solving new and difficult problems.

      So if you hire a GreatHacker good luck getting any productivity out of him/her after the hard and creative work has been done. Unless you have him/her working on something new he/she is likely to go into serious apoplexy once the work gets boring and mundane.

      --
      evil is as evil does
    21. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      More to the point. Sometimes great hackers make the worst employees. They are hard to get along with, arrogant, and throw tantrums.

      heh! that describes me perfectly... except for the great hacker part

    22. Re:All hackers are "great" by mcrbids · · Score: 1

      More to the point. Sometimes great hackers make the worst employees. They are hard to get along with, arrogant, and throw tantrums.

      I've noticed that the people who are hardest to get along with are the ones most insecure about themselves. In my experience, people who are moody, arrogant, and throw tantrums generally produce the worst quality code. They are simply reacting on the truth that they are, in some fashion, aware of: they are really incompetent.

      A true hacker is confident of his/her skills, and doesn't feel the need to prove his/her value by throwing tantrums. A true hacker really should be one of the higher-ups, and should hire coders for the mundane stuff.

      --
      I have no problem with your religion until you decide it's reason to deprive others of the truth.
    23. Re:All hackers are "great" by cronie · · Score: 1

      One more point: great hackers are against IP...

      (They must be hating IPv6 as well :) To all great hackers: please stop this IPv6 hysteria! It's like replacing the 10-digit phone numbers with 60-digit ones. Would you remember your friends phone number that looks like

      GREG (CELL): (578) 567-7292-91123-89202-83939-19381-82727-10384-93838 -03928-77261-78910

      IPv6 sucks just because it's not practical. I'm against it.)

      --
      "Programs must be written for people to read, and only incidentally for machines to execute."

    24. Re:All hackers are "great" by runen · · Score: 2, Insightful

      This sounds more like the Tao than reality.. "Code written by a great hacker usually doesn't need maintenance because it already does the right thing" All software needs maintenance, no-mather how close to perfect (perfection is an illusion) they are from the start. The world changes, requirements changes, frameworks, APIs, Operating Systems, hardware.. everything changes. Sorry for dissing the Tao - I shall not sleep tonight :)

    25. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      IPv6 sucks just because it's not practical. I'm against it.

      What, and 32bit address IPv4 is? Look, we have this amazing invention called "Domain Name Service" which lets you specify an alias for an IP address. So instead of having to remember ff:ab:3a:53:5a:f1:20:1b you just use "www.example.com" Great isn't it?!

    26. Re:All hackers are "great" by cronie · · Score: 1

      So instead of having to remember ff:ab:3a:53:5a:f1:20:1b you just use "www.example.com"

      That's you, not me. Any sysadmin will have to deal with numeric IPs despite the promised IPv6 automation tools. It's [almost] like saying alphabetical phone numbers for the 60-digit system (in my example) would solve it all. Some things must be readable/maintainable by humans, too.

    27. Re:All hackers are "great" by Anonymous Coward · · Score: 0
      In today's large, complex, object-oriented enterprise application development environments
      The talented coder has a blank canvas, buzzword spouting management types have a blank mind.
      being able to work with teams and communicate is an essential skill.
      More self assessing management double speak.
      Sticking an asshole in a corner and waiting for him to kick out thousands of lines of code by himself doesn't fly anymore.
      Let's replace one single asshole with a project manager and an entire team of assholes, good call Einstein! I have a suggestion but since I'm not really popular within the group we'll just let the deadline slip and keep on with the false smiles.
      Developers not only have to get along with their teammates, they often have to communicate with business people, or even customers.
      You're talking about totally different things as if they are somehow related.
      This is even more true when they're consultants.
      And here ends our corporate brainwashing for the day, remember kids; to be employable and a good citizen you must learn good communication skills and avoid thoughtcrime.
    28. Re:All hackers are "great" by tesmako · · Score: 0, Troll
      Also;

      Linking bad code against a great hackers code will crush the bugs out of existance.

      The code will over time improve upon itself to remain competitive with any future innovations. Only the code of another great hacker can keep a great hackers code at bay.

      A great hackers code will run correctly on any machine, real or virtual, even overcoming machines that are not Turing-complete.

      The ground on which a great hacker has walked cannot be crossed by evil being of shadow, making it important to keep the engineering facilities far from marketing and accounting.

      Eating the ashes of a print-out of a great hackers code will cure cancer, tooth rot and the common cold.

      Great hackers all go to heaven and get the good rooms near the elevator to the bar. Unfortunately they dont dare visit the bar during open hours due to social incompetence.

    29. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      Great hackers write stuff such as HAKMEM

      http://www.inwap.com/pdp10/hbaker/hakmem/hakmem. ht ml

    30. Re:All hackers are "great" by Tinidril · · Score: 1

      Actually, an ipv6 address would be more like this.

      ffab:3a53:5af1:201b:78de:fb8c:2897:192f

      However the standard allows for replacing any single string of zeros with ::, and most IPs will have a long string of zeros. So with that an IPv6 address might look like this.

      ffab:3a53:5af1::2f

      --
      XML is the best data format; unless your data needs to be read or written by a human or a computer.
    31. Re:All hackers are "great" by poot_rootbeer · · Score: 2, Insightful

      Code written by a great hacker usually doesn't need maintenance because it already does the right thing.

      I see you've never worked with a typical business team.

      Sure, a great hacker will produce code that Does the Right Thing based on the specs he (or she) is given, but in the real world those specs are guaranteed to be between 5% and 100% WRONG. The client can't explain what it is they actually want, the business rep can't help draw real specifications out of them, the systems analyst can't convert the nebulous requirements into a solid spec.

      Clean as the code may be, if the Right Thing at the core of it turns out to be the Wrong Thing, you're going to have a maintenance nightmare.

    32. Re:All hackers are "great" by slashjames · · Score: 1

      You also forget that, when the US entered WWI, it FORCED the newborn airplane industry to cross-license patents and other "intellectual property" so they could build working airplanes capable of taking on the Germans.

    33. Re:All hackers are "great" by Anonymous Coward · · Score: 0
      Eww, Wiki-speak!

      Do you program in Java as well?

    34. Re:All hackers are "great" by sql*kitten · · Score: 2, Interesting

      As for debugging and writing tests, a great hacker's code is so clean and so defect free, they don't need to spend a lot of time debugging and writing test cases will simply diminish returns.

      We have some incredibly bright people here. We are a financial services company and we hire PhDs by the boatload and set them to work on trading software.

      What you've said is true of none of them. Anyone who dared to claim that writing test cases diminished returns would very quickly find themselves sidelined. No-one is perfect, and EVERYONE needs an independant authority who can veto the release of their code if necessary. That's why we keep development and test groups entirely seperate.

    35. Re:All hackers are "great" by solprovider · · Score: 1

      "Code written by a great hacker usually doesn't need maintenance because it already does the right thing"

      All software needs maintenance


      --- Disagreement
      I wrote an application 5 years ago. Every time they called asking for new features, I told them it was already in there and which configuration option to change. They may need a revision later this year because the infrastructure is changing, but not because the program stopped fulfilling their needs.

      Another company used software I wrote in 1991 until 1999 when their new parent company insisted they change to a standard Human Resources application. The new program does not meet their needs as well as my DOS-based program (which ran well in Windows95.) No maintenance was ever done on my program.

      My current project keeps expanding, but I am the visionary expanding the specifications. Adding one minor function would make the business people feel it is good enough, but I want to add 5 major functions. It will be finished later this year, and should not require any maintenance.

      Lotus Notes 6.5 can still run applications built for Lotus Notes 2.
      Java 1.5 runtimes can run Java 1.0 programs.

      --- Agreement
      WindowsXP finally killed DOS programs.
      Longhorn is supposed to kill Windows programs.
      (That says something about depending on MS.)

      Hardware compatibility depends on what connectors are provided. ISA cards will not fit in most modern motherboards. But most hardware does not care what software runs on it. The exception is that printers were controlled by applications until Windows95, which introduced an API for printing.

      --
      I spend my life entertaining my brain.
    36. Re:All hackers are "great" by stonecypher · · Score: 1

      So what exactly differentiates a so-called fully flight capable aircraft from other aircraft?

      Um. Probably the ability to fly. This may seem like a silly distinction today, but back then and at Kitty Hawk it most certainly was not (various forms of hang-glider posing serious contemporary arguments.)

      Maybe it's a clumsy phrasing, but it's not exactly inobvious, and it is at least satisfactorily literal. What would you prefer? Self-powered aircraft?

      --
      StoneCypher is Full of BS
    37. Re:All hackers are "great" by x3ro · · Score: 1

      Surely even a Pretty Good Hacker would find herself (not necessarily female, but his/her is so ugly) would only rarely find herself in a position where she needs to modify her old code so it works in a slightly different way. I am no Great Hacker, but I do take satisfaction from situations where this looks like it's necessary, but really it's just a matter of choosing the right level of abstraction at which to build the functionality ..

      --
      [ UNSIGNED NOT NULL ]
    38. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      PhD is indicative of nothing. I know quite a few ph. d. cs people from very good programs who are so far from being great hackers that it is laughable.

    39. Re:All hackers are "great" by Anonymous Coward · · Score: 0

      Good for you. It remains for you to show that a "PhD is indicative of nothing" though.

  3. Re:OT: Los Alamos's missing disks NEVER EXISTED! by EzraTeneflin · · Score: 0, Offtopic

    Cool! But, doesn't this still mean that the accounting system is screwed up? (While acknowledging that the users are vindicated).

  4. 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 Junks+Jerzey · · Score: 5, Informative

      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.

      Nah, that's just the people you know. Perl, in my experience, tends to be used by people who write little programs to get things done quickly. And really, this covers a lot of sysadmins. But that's always been the secret of Perl: it's geared toward solving problems quickly. For example, in most languages you compile regular expressions and get back a handle, then you use the handle for searches. But in Perl the compiler takes care of this for you. You don't worry about it. You don't have to import an "re" library either. A good philosophy overall, even if the language isn't as pure and pristine in other ways.

      Still, I read the article, and I can't help thinking that Graham has already written this same article a couple of times in different forms.

    2. Re:I'm going to have to go with "blowhard" by jbellis · · Score: 2, Interesting

      Yes, that's exactly my point. Perl is fine for "little programs." I have written many perl programs myself in the 100 line range; by the time you get to 500, though, perl is clearly a poor tool for the job. And however concise perl is, there are few really interesting programs you can write in under 500 lines.

    3. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 4, Insightful

      LOL, since when is the number of projects on Sourceforge a good indicator of anything? 90% of them never make it to a release - sooo many projects are "pre-alpha" with near-empty homepages with comments like "project X will be the greatest Y ever built. Right now we're deciding how to start designing it."

      Heck, for all I know, the high number of C, C++, and Java projects could just be an indicator that users of those languages tend to start things but never finish them.

      And, by the way, the _main_ thing Perl and Python have is common isn't that they are scripting languages (a term that isn't very well defined anyway), but they are much higher level than, say, C or C++ (and to a lesser but still important degree Java). And _that's_ why they allow developers to be much more productive. If you have trouble understanding/believing this, then imagine explaining to an assembly programmer why you're so much more productive in C++ than assembly. Now, apply those same principles to something like Python, and you'll start to see the light.

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

    5. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Hello!

      I'd like to hire you to write me a distributed, enterprise-level business system in perl [and have it not suck horribly!].

    6. 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!
    7. Re:I'm going to have to go with "blowhard" by tcopeland · · Score: 1

      > if you look at sourceforge stats

      Yup, but remember, there are other homes out there that sort of dilute the SF numbers - i.e., RubyForge and LuaForge.

    8. Re:I'm going to have to go with "blowhard" by Lovebug2000 · · Score: 1

      If you'll notice, the two languages he goes on about are scripting languages, basically the VB of linux (I'm sorry portage, I don't really mean that as an insult). So what does a hacker do to hack up small programs for personal use? The easiest and fastest tool there is.

      However, those needs aren't a companies needs. Writing graphics intensive programs in Perl is probably not a good idea, and writing a text parser in C probably isn't. As for java, it's one of the primary languages for easy interface with databases. And most companies are founded around data (held in databases) so of course something as robust and supported as Java is going to be used.

      He's right about a lot of the social problems in how hackers are currently dealt with, though. The worst thing you can do to a good one is bug the crap out of him to the point that he can't get his train of thought started, much less followed through.

    9. Re:I'm going to have to go with "blowhard" by Profane+MuthaFucka · · Score: 1

      Perl is a fine language, but the name is horrible. It should have been called "One-Shot". That would have made it a perfect language, as long as the programs written in it were only used for one shot.

      --
      Fascism trolls keeping me up every night. When I starts a preachin', he HITS ME WITH HIS REICH!
    10. Re:I'm going to have to go with "blowhard" by Bull999999 · · Score: 1

      It's about right tools for the job. Sure, you can kill that fly with a .45, but why not use a fly swatter? Quicker and less messy for a such a small task.

      --
      1f u c4n r34d th1s u r34lly n33d t0 g37 l41d
    11. Re:I'm going to have to go with "blowhard" by photon317 · · Score: 2, Insightful


      I'm going to have to disagree. You're confusing "open source hackers in general" with "Great Hackers", which is what he was describing. The two terms are not interchangable. For every 1000 crappy programmers who were never meant to be, there's 100 decent programmers, and there's 10 open-sourcy hacker guys are pretty damn cool (they make up your sourceforce demographic), and there's 1 Great Hacker.

      And yeah, these great hackers, oddly enough, tend to have a lot of overlap with those sysadmin-y perl-y type people.

      --
      11*43+456^2
    12. Re:I'm going to have to go with "blowhard" by Coryoth · · Score: 4, Insightful

      It's quite easy to write larger programs in perl, all you have to do is start the program with a different mentality. Write modules, use perl's OO (which is in some ways a kludge, but in other ways remarkably flexible and versatile). People who claim you can't write large programs in perl are simply failing to use the features of perl available for doing those sorts of things - they're trying to expand the same sort of programming they used for their 500 line program into something that works for a 5000 line program. Really, this is akin to trying to write a large C program by just putting everything in main() and then complaining C is no good for large programs.

      For reference, I much prefer python to perl - I find it cleaner and easier. When pushed I like to use python combined with C for any heavy lifting (farm out any intensive routines to some C code that returns python objects).

      Jedidiah.

    13. Re:I'm going to have to go with "blowhard" by SpaceLifeForm · · Score: 1
      Sorry, but perl is not necessarily a poor tool for a job just because it gets large.

      In fact, I have written a command interpreter in perl that talked to another interpreter (sqlplus) in approximately 4000 lines of perl. My perl 'script' automated complete schema upgrades including constraints (amoungst other 'features') because I tire easily of the routine crap that hackers despise.

      --
      You are being MICROattacked, from various angles, in a SOFT manner.
    14. Re:I'm going to have to go with "blowhard" by TheLink · · Score: 4, Insightful

      I've written 6k line perl programs but that's probably proof that I'm not great. A great programmer/hacker would probably do the same thing 1K lines ;).

      With the wrong language you can't write little programs even if the job is a little job :). Even medium jobs look like huge jobs.

      The advantage of Java is you can outsource the bulk of the programming to 100 different people in Bangalore or something. The hopefully smart person doing the design and architecture at the HQ doesn't have to type many lines of Java - he programs in human languages.

      Whereas with Lisp or other Great Hacker languages while that smart person is 20x-100x more productive, you can't outsource the job, so when the job becomes boring it's hard to keep that smart person around to do maintenance, documentation and other low level stuff.

      And sometimes the boring stuff makes money. I mean how many great hackers want to do accounting programs, custom portals (with ever-changing requirements), ERP etc?

      With Perl the smart hackers have created the blocks of Duplo and Lego (CPAN), and made them available for the not so smart ones like me to use em. Prefab code :).

      --
    15. Re:I'm going to have to go with "blowhard" by magead7 · · Score: 1

      "And yeah, these great hackers, oddly enough, tend to have a lot of overlap with those sysadmin-y perl-y type people."

      Was there a source where you got that information, or just your personal observations? I'll agree that sourceforge isn't perfect for measuring what great hackers use, but it gives what I'd consider a better overall heuristic to predict what the great hackers might like.

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

      You can write large programs in assembly, too, but most people would agree that assembly language is not the best tool for the job.

    17. Re:I'm going to have to go with "blowhard" by Dwonis · · Score: 1

      s/write me/maintain/

    18. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 5, Interesting

      Please define what you mean by "large programs".

      I'm sitting in front of a system containing many modules and programs, and between them including over 60,000 lines of Perl. Is that a large system?

      It depends on your perspective. If you don't know how to manage a 500 line program, it is insanely large. If you've ever worked on a project in C or Java that runs to a few million lines, then it is pretty small. It becomes larger when you consider that the same functionality would take a lot more lines in Java, C or C++ than it is taking in Perl. More critically, you'd probably need more than 6 developers to maintain and expand it, plus your development cycle would slow down significantly.

      Certainly Perl is not the best language for writing a very large system. But for a certain size of project it is a very good language. And that size of project is larger than you'd think.

    19. Re:I'm going to have to go with "blowhard" by Garin · · Score: 4, Insightful

      Perl is a very powerful tool. I've said it before, and I'll say it again:

      Perl, more than any other programming language I've ever used, directly reveals the mind of the programmer.

      Most programmers have very messy minds and very poor discipline. Python neatly solves this problem by having the One True Solution approach. Perl embraces the risks of a TIMTOWTDI, and you often get line-noise (especially with too-cute neophyte "hackers" who figure that doing seventeen operations in one line is somehow a good thing), but in allowing this, Perl allows a few nuggets of utter glorious beauty to shine through.

      Very few people can properly wield Perl in more than a one-off capacity. But those that can will make magic.

      --
      In any field, find the strangest thing and then explore it. -John Archibald Wheeler
    20. Re:I'm going to have to go with "blowhard" by grcumb · · Score: 2, Insightful

      You've got your stats on backwards. 8^)

      He didn't say that Linux and Perl were the most popular choices of programmers, he said *really great hackers* tend to choose them. Popularity among the general programming populace has no direct bearing on this metric.

      So let's try and measure things differently. If we hang out in the perl and python communities, we *do* tend to find a surprising number of able hackers, many of whom display the qualities Graham describes.

      The Visual Basic communities, however, are not quite so rife with mental agility.

      BTW, when you read this, pretend I'm speaking *really* quickly. 8^)

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
    21. Re:I'm going to have to go with "blowhard" by SageMusings · · Score: 2, Insightful

      Thats a pretty poor statement you're running with.

      As one of the unwashed masses that has dared to write a great many apps and tools in Perl, to include complete 3-tier systems, I have to tell you that besides pattern matching, Databases are second nature to Perl.

      I can code any DB-driven app a Java coder can in less time with complete clarity and ease of maintenance. It can be done. I do it and enjoy it. Java is and always will be 75% marketing hype wrapped around a tool that has existed in various forms in different languages for some time. And please, don't pester me about JVMs and the promise of easy cross-platform. Perl uses a VM too (read up on the internals) and I can *actually* count on it to run everywhere.

      Is Java a bad tool? No, I don't believe that. However, I do not agree with those that write off "mere scripting languages" as inferior. There are different problem domains, hence different languages. Java just happens to be the one language I know of that still hasn't found it's niche. It's a me-too language that has been (for the meantime) been shoe horned into a few server-side DB integration apps.

      I would not use Perl for writing a UI (Tk is tedious) but I would consider it for core logic.

      --
      -- Posted from my parent's basement
    22. Re:I'm going to have to go with "blowhard" by transiit · · Score: 1

      Funny.

      The One True Solution sounds a lot like "As long as the only way to do it is the way I'd do it, nobody gets hurt" approach.

      There's always more than one way to do it, syntactic variations or not.

      If Python really had the market cornered on the Right way, we wouldn't be having this discussion.

      -transiit

    23. Re:I'm going to have to go with "blowhard" by smittyoneeach · · Score: 1

      concur.
      you might also have a look at boost::python

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    24. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Most people program in the language they are the most comfortable in and that is usually what they learned in school and what they use at work. You also make the assumption that if a person contributes to open source... they are a hacker... some are hobbyist, some are solving problems in their work and contributing it to open source, some are learning to improve skills resulting in obtaining a better job, and many are mimicing what people before them have done

      In terms of sysadmin types not knowing better, how many sheep jumped on the OO train and the write once - run everywhere market hype.

    25. Re:I'm going to have to go with "blowhard" by Garin · · Score: 1

      Heh. Yeah, that's why I don't write much Python. I feel very trapped when I write Python, because to me at least it really does have a strong "nobody gets hurt" bias to it. It's like I'm programming with training wheels.

      Don't get me wrong, I really admire Python. It just doesn't suit me and my style of thinking and programming.

      I guess it isn't all that clear in my first post, but I don't believe that Python has captured this One True Solution. I'm just saying that to me, it feels like this is what it *tries* to achieve. It's a noble goal, and python does accomplish a fair bit in that respect but it certainly isn't anywhere near complete.

      Python does have its place. I think python is better suited to the average programmer for the same problem space that most perl code lives in. I am a Perl guy through and through, but I guess that's why it hurts me so much when it is used so poorly. I think people can do less damage with Python.

      The right tool for the right job, as always.

      --
      In any field, find the strangest thing and then explore it. -John Archibald Wheeler
    26. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 2, Interesting

      I've been a Python evangelist since 1996, and I find Graham's thesis retarded. That's ok, a lot of what he says is retarded, and the reasons people might refer to it as "controversial" is that it's often retarded and spoken matter-of-factly when it's always unsubstantiated opinion.

      Shitty programmers use Perl and Python as much as anyone else. The worst programs I've ever seen have been written in Perl and in C. Python has its share of suck, too. The worst example of a complex Python program that I have seen is Gentoo's Portage. Take a look at that pile of ass sometime.

      Many brilliant programmers use C and C++ quite often. Claiming otherwise is prima facie absurd. Most of the best software that I've ever used or seen the code for has been written with these two languages. Some of the best scientific software I've seen has been written in Fortran. Not in Python or Common Lisp, or even other dialects of lisp. Just look around sometime, really.

    27. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      All of that experience writing "3-tier systems" and you think you need to use Tk with Perl for UIs? Impressive! If you weren't such a mediocre programmer that confuses DBI with a robust database interface I might spend the extra time to tease you for all of your other gaffes. C'est la vie.

    28. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Really? Any sources for any of your babble? No, didn't think so.

    29. Re:I'm going to have to go with "blowhard" by SageMusings · · Score: 1

      Ah, the AC voice of tempered reason....anger and arrogance without any cogent offering to the group. That's what keeps me coming back :)

      --
      -- Posted from my parent's basement
    30. Re:I'm going to have to go with "blowhard" by f0rt0r · · Score: 1

      I agree. In my current position, I create tools/automate process for other IT groups. I was told that I cannot use C++/C/Java, probably due to the fact that the IT group knowledge base is consists of scripting languages and /applications to get the job done. Since Perl is my strongest language ( C++ is my second strongest ), I use it for the bulk of the automation tasks, which usually mix several technologies together ( say, logging app as a data source for a perl script that outputs data for flash network status console ). I inherited quite a bit of code, but am slowly replacing shell scripts with perl, log files with database tables, etc ).

      I find that most languages have striking similarities, and speed of development plus existing knowledge base are factors that must be considered before choosing a specific one for the job. Do you really want to have the one guy who knows C write everying, so when he leaves all of the code he wrote is no longer maintainable? Or do you have him use a language his coworkers are familiar with so all the eggs are not in one basket?

      I'll let the reader decide for themselves.

      --
      I can't afford a sig!
    31. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Actually, the hacker uses ruby, because ruby is beautiful. One can do amazing things in ruby, in almost no time flat.

    32. Re:I'm going to have to go with "blowhard" by Milo77 · · Score: 2, Interesting

      I think when working on a large project that many different people (different abilities, different styles) may touch it is important to choose a language that provides some guidelines for usage syntactically. Java has all kinds of problems, but it forces you to do things a certain way and the community is widespread enough, that for the things it doesn't force you to do a certain way, the community has come up with de facto standards (or patterns of usage). Something like perl can be abused by the idiots on the team to a much greater extent (imho). Now, if the hacker realizes that everyone can't be as great as he is, then he may also understand why his company can't go out and standardize on perl. But like Paul suggests, most hackers are baffled by the idiots.

      I am also confused by what Paul says about the tools a hacker uses at home being better. Why does there have to be a set of tools thats perfect for all circumstances? Maybe those tools are better in an environment where everyone is a great hacker, but at work everyone is not, so if those same tools can be abused by the lesser hackers more than other tools, maybe those other tools are better for the work environment. Yes I use different tools at home than at work, but I wouldn't trust the idiots with the tools I use at home. Maybe I am just influenced by the fact that I've had to maintain code written by idiots...

    33. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      I like perl to some extent. When I am hacking out scripts, I use perl rather than any of the alternatives.

      However perl requires strong discipline. In terms of maintainability it has no safety rails and this is a very bad thing. Every has slips in discipline, perl punishes those excessively. Using perl is like walking around with a bomb strapped to you. If you are disciplined and don't do anything stupid you won't have any problems. But if you accidentally brush the self destruct button you have problems.

      How is it possible to defend a language that has so many string delimiters? How the hell are you going to maintain an app effectively if the person before you has used a different style quoting? It can serve no purpose but to confuse people. And this thinking permiates the entire freaking language!

      TMTOWTDI, even if some of them are crap. Even if it makes it more confusing.

      Perl is an apalling language that is rescued by its features, in particular the regexpr engine and the sheer number of modules that have been written for it

      And yes I do regularly write ~500 line perl scripts.

      --
      meh
    34. Re:I'm going to have to go with "blowhard" by arth1 · · Score: 1
      LOL, since when is the number of projects on Sourceforge a good indicator of anything? 90% of them never make it to a release - sooo many projects are "pre-alpha" with near-empty homepages with comments like "project X will be the greatest Y ever built. Right now we're deciding how to start designing it."

      Heck, for all I know, the high number of C, C++, and Java projects could just be an indicator that users of those languages tend to start things but never finish them.

      I'm more inclined to believe that writing a small project in perl is often so quick that you are finished with the project long before you think of putting up a sourceforge page and/or pulling in other people to help out.
      Plus, many people don't want to publish their perl code for the world to improve on, because there's so many different styles of perl programming that having someone else modify or add to the code can make it completely impossible for the original author to maintain. In perl, there's always another way to do things that's either faster or more elegant, but seldom both.

      Still, perl is a wonderful language to get jobs done quickly. It's a toolbox more than anything.
      But it has limitations, like speed and excessive memory use. A great programmer (if he exists) would not automatically reach for perl, but choose the right tool for the job, whether it be perl, C, assembly or sh (yes, really -- sometimes instant portability is of essence, and sh is the right choice).

      Regards,
      --
      *Art

      Regards,
      --
      *Art
    35. Re:I'm going to have to go with "blowhard" by Garin · · Score: 1

      Perl is not an appalling language.... Most programmers are appalling programmers. Languages in themselves have no quality of goodness or badness. They are just tools. Is a hammer an appalling tool?

      Perl allows the programmer the freedom to write code just as his/her mind works. Most programmers have very messy minds, and are more interested in looking "slick" and in getting the job done -fast- than in writing good code and in getting the job done -right-.

      Most people cannot handle the freedom and power that Perl allows, because, as we all know, "With great power comes great responsibility." Uncle Ben knew a thing or two.

      Most people should avoid Perl. If you are afraid of it, you should not go anywhere near it. I don't think Perl should be used for large "industrial" projects, simply because (as I said before) most programmers are bad programmers. Really good perl code is, for many things, some of the best code I've ever seen. Really bad perl code is easily the worst I've ever seen. There is more bad perl than good perl.

      --
      In any field, find the strangest thing and then explore it. -John Archibald Wheeler
    36. Re:I'm going to have to go with "blowhard" by KZigurs · · Score: 0, Flamebait

      you are using CS classes as an argument to show of your skill?

      Spectacular. We obey, o thy wise one!

    37. Re:I'm going to have to go with "blowhard" by crucini · · Score: 1
      How is it possible to defend a language that has so many string delimiters? How the hell are you going to maintain an app effectively if the person before you has used a different style quoting?

      Doesn't bother me, but then I've been writing Perl professionally for a few years. It's kind of nice when someone uses a balanced delimiter because you can bounce it with the % key. Obviously that only counts when things get hairy and complex.

      I often write something like:

      $thing->{ id } = qq[<a href="...">$thing->{ id }</a>];

      To me, that's nicer than escaping the internal "s.

      Today I had to modify some code another guy wrote which used an odd delimiter, but after the first second I really didn't care. It's perfectly clear what it's doing.
    38. Re:I'm going to have to go with "blowhard" by crucini · · Score: 4, Insightful
      I write a lot of Perl. I almost agree with you, but I think most of the code we write at work is just average. It's not great, but it's reasonably easy to understand and maintain. I have written great, beautiful code at times, but it takes more time.

      The key reasons for shaggy code are deadlines and ever-shifting requirements. When the requirement is clearly defined and you have ample time, you can plan the solution and produce something great.

      Really good perl code is, for many things, some of the best code I've ever seen. Really bad perl code is easily the worst I've ever seen. There is more bad perl than good perl.

      I agree with both - but as I said, I mostly see (and write) average code at work.
    39. Re:I'm going to have to go with "blowhard" by KjetilK · · Score: 1
      I can't agree.

      I used to dislike Perl, but found myself returning to it every time I needed to get something done. Perl is quite mature, there are tons of allready good stuff out there, and Perl hackers are generally very nice people. Still, I didn't really like the language.

      But really, if you just think carefully about design, modularize things, do ok OO design, then it is not bad at all. I really can't see the limits.

      --
      Employee of Inrupt, Project Release Manager and Community Manager for Solid
    40. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0
      ..many cases where a perl script evolved..

      As a long time architect of software, both commercial products and in-house solutions, that comment itself pretty much sums up why I dont like "scripting" languages. When you have to deliver a business process solution, the *last* thing you need is independent "evolution". I've been f**ked over once too often by independent "innovation" screwing up the delivery that pays the rent.

    41. Re:I'm going to have to go with "blowhard" by Ohreally_factor · · Score: 1

      Obviously, he was pulling numbers out of his ass to illustrate a point, but his point still stands. And I don't see how you can predict what tools a great hacker might prefer by looking at what tools the majority uses.

      --
      It's not offtopic, dumbass. It's orthogonal.
    42. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      I've written 6k line perl programs but that's probably proof that I'm not great. A great programmer/hacker would probably do the same thing 1K lines ;).

      A great hacker would do it in a single line of shell script ;)

      Then they'd write a 3 line Perl script capable of generating the same automatically, thus rendering you out of a job.

    43. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      The giveaway is the line "shell scripting is just annoying".

      Once you know how to do it, it's not annoying at all. Its simple, straightforward, portable (if you do it right) and the main benefit is that it doesn't require Perl to be installed.

      Not all systems come with Perl, not all want it.

    44. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      Languages in themselves have no quality of goodness or badness. They are just tools.Is a hammer an appalling tool?

      A hammer is an appalling tool if you rae trying to take out a screw. Languages can be inherently good or bad, it is not just the programmers. Don't believe me? Code up your next project using either brainfuck (excuse my language), Beatnik or whitespace.

      I agree that most programmers are apalling programmers. I hold to that pretty strongly, but a language can be pretty bad even without the help of programmers. To just blame the programmers is a cop-out.

      --
      meh
    45. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Ditto for Python. Frickin' tabs...

    46. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      $thing->{ id } = qq[$thing->{ id }];

      To me, that's nicer than escaping the internal "s.


      So there is a case for having two possible delimiters, a " and a non ". You could argue for a third ' as it is used in other languages and is pretty similar to ".

      But there is no reason for any more. What purpose can it possibly serve except to make the code harder to read? I've read studies that found in code that used negative conditions (eg if ! Foo() ), errors rose significantly. This was due to the fact that programmers could understand it less quickly. Anything that adds even a speedbump to a programmer's understanding of the code in front of them should be avoided. Anything that can aid recognition is an advantage, and patterns aid recognition, like myvar = "some string". The more patterns you introduce the more problems.

      Code is to be written for legibility above all else, because one day, some time someone is going to have to maintain it. Sure there are other factors to keep in mind, but they are more easily resolved if the code is clean.

      I spend a lot of time thinking over this issue, things like, should I use the following:

      if ([cond])
      [one line statement];

      The advantage is that it is consise, the disadvantage is that with that construct it is easy to do this:
      if ([cond])
      [one line statement];
      [another statement];

      In the end I have come to the conclusion after weighing the options that for clarity it is better to this:

      if ([cond]) [one line statement];

      or

      if ([cond])
      {
      [one line statement];
      }

      I'd use the second one if the line got too long.

      The fact is that perl encourages bad coding techniques. All languages let you write bad code. Perl makes it a heck of a lot easier.

      The fact that there are multiple ways to do everything means that you have to know about each of the different syntaxes. More complexity, decreased understanding. I remember when I read the camel, my constant question was, why on earth would you want to do things that way? I realised after a while that the only way to use perl was to pick a subset of the syntax and use only that. Otherwise your code would be a mess.

      --
      meh
    47. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      And the biggest one that blows the numbers for perl - CPAN. People don't post all their perl components/modules/reusable code blobs to SF or freashmeat because other people don't expect to look for them there.

      Second, this "count the stuff on SF" is a bogus argument in the first place since just because a person can choose their own tools on their own projects, doesn't mean they will post the most outrageously "good" stuff on SF.

      For instance, (what I consider to be an extremely creative force in breaking the boundaries of thinking about network protocols) a non-perl example Paketto Keiretsu is not on SourceForge, IIRC. And I bet many other packages that would rate at the top of any set of "best written" metrics are not on SF for various reasons.

    48. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      For UI stuff, check out WxWindows I am doing a project that I am coding the same functionality in various languages and it seems to work well. Ruby, Perl, Java (I think), C++ and the choice of the "there is exactly one right way to do things and we like it that way and you should too" crowd - Python.

      As far as perl/python/ruby for UI, I am sure the performance can't be that much worse than many Java apps, its just that perl hasn't had a good xplatform tool like WxWindows before. Ruby feels a little more natural for the UI stuff I am doing because of concurrency being built in to the language.

      I wonder if there are any forth GUI programs, I wonder how fast those run...

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

      you are using CS classes as an argument to show of your skill?

      Interesting that you would nitpick that one point, and do it with poor grammar to boot. Did I strike a nerve?

      No, I'm not using the fact that I had CS classes as a testament to my mad skillz. I was simply making the point that programming languages are just tools to be wielded by a programmer. If you've learned basic CS concepts (either in the context of a formal CS curriculum or by teaching yourself), it's fairly trivial to apply those concepts to any programming language. Some languages lend themselves to solving certain sets of problems more quickly and easily than others, though.

      That probably makes too much sense to get through to you though, huh? I know, I know... There I go throwing logic into the argument again.

      --
      A host is a host from coast to coast...
      Unless it's down, or slow, or fails to POST!
    50. Re:I'm going to have to go with "blowhard" by Geoff-with-a-G · · Score: 1

      If you have trouble understanding/believing this, then imagine explaining to an assembly programmer why you're so much more productive in C++ than assembly. Now, apply those same principles to something like Python, and you'll start to see the light.

      Then try explaining to Carmack how he would have been much more productive if he had written Doom 3 in Python.

      Different tools for different jobs. Maybe given a job suited for a scripting language, you can argue which scripting language is the best, but to claim that scripting languages are inherently more productive than C and C++ is like claiming that airplanes are inherently better than cars.

      Yes, much to my dismay, most demand for programming these days is for web applications, in which case you're probably much better off with Perl than with C. But for those who aren't programming front-ends to databases and HTML generators, scripting languages aren't necessarily "better" at everything.

    51. Re:I'm going to have to go with "blowhard" by Yer+Mom · · Score: 1

      I'd agree with you about negative conditions, when written as "if !foo()" - but I find "unless foo()" to be perfectly understandable. I wish more languages had that.

      --
      Never mind Spamassassin. When's Spammerassassin coming out?
    52. Re:I'm going to have to go with "blowhard" by Cro+Magnon · · Score: 1

      The problem with Perl is when more than one person is maintaining the program. I've been using Perl at home, and it seems better than any other language I've tried, but I'd hate working on someone else's Perl code!

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    53. Re:I'm going to have to go with "blowhard" by ftzdomino · · Score: 1

      My problem with perl is that the language is too complicated for any single human to remember, except for Larry Wall maybe. Understanding and remembering the entire language, all operators, and all caveats is necessary for working on a team with perl code. I programmed in perl for a full year, and still couldn't remember everything outlined in the 2,000 word document explaining everything about references in perl. There are around 100 of these documents, and you must know them all well in order to understand any code which you may come across. While it's possible to write good code in perl, I don't think it has ever been done. Even some of the base libraries are horribly written. Take a look at the cpan code for date parsing (strtotime?).

    54. Re:I'm going to have to go with "blowhard" by random_static · · Score: 1
      For example, in most languages you compile regular expressions and get back a handle, then you use the handle for searches. But in Perl the compiler takes care of this for you. You don't worry about it. You don't have to import an "re" library either.

      that's a bit of a two-edged sword though. the more i work with slicing syntax on strings and splitting/joining/exact-matching on substrings, the more i understand JWZ's old gripe about having a problem, using a regex on it, then finding yourself with two problems.

      and perl 6 will give us regexes powerful enough to parse HTML. i am very much of two minds on that one; it could go very horribly indeed, or it might - just might - turn out to be simply a convenient shorthand notation for programming general state machines. that might not be too bad if the syntax doesn't end up too grotty, but i'm not betting on either of those things quite yet...

    55. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0
      Nah, that's just the people you know.

      IOW, your experience is wrong...

      Perl, in my experience, tends to be used by people who ...

      ...but mine is right.

    56. Re:I'm going to have to go with "blowhard" by poot_rootbeer · · Score: 1

      Perl is a very powerful tool.

      In the same way that "Cocaine is a hell of a drug", yes.

    57. Re:I'm going to have to go with "blowhard" by Anonymous Coward · · Score: 0

      Actually, your Doom3 example reinforces my point - as technology moves forward the need to use lower level languages decreases more and more until, at most, it is used in only a few tiny niches. Years ago I programmed in nothing but assembly. Then there came a time when programming most stuff in C was feasible, with the occasional need to drop down into assembly. Then came a time when C++ wasn't too slow anymore, and the need for assembly shrank even more. Then there came a time when languages like Python, Ruby, and Lua were fast enough for a few things, but now they are fast enough for 95% or more of all the programs that I'll ever write (occasionally I drop down to C++ for additional speed, but it's getting more and more rare as time passes).

      In the specific case of Doom3, Carmack in fact _would_ have been more productive to write it in a higher-level language but of course the end result would have been to slow for his needs - this is merely a manifestation of the idea that there do exist some niches where lower-level languages are still necessary. However, if he coded his whole engine from scratch in C++ he could have been more productive by prototyping the whole thing in a high level language (where the cost of change is cheaper, meaning also that the cost of experimentation is lower), after which he could profile and optimize the hotspots, or even rewrite from scratch with a working prototype as a guide. Either way, it would have gotten done faster and probably with fewer bugs (need I remind you that the release date for Doom3 has been pushed back more than once? It's not exactly a good example for your point - being an awesome-looking game doesn't make it the paragon of software development processes).

      Now, as to your broken analogy that the comparison is similar to saying airplanes are inherently better than cars - that's such an odd analogy that I won't even try to debunk it. Instead, let's look directly at the claim itself: scripting languages are inherently more productive to use than C and C++. I'd rephrase that as higher-level languages are inherently more productive than lower-level ones, and languages like Python are higher-level than languages like C and C++.

      With few exceptions, this is generally true. Again, take two different languages, assembly and C, and make the comparison. If you've programmed in both for awhile, you know that in C you are vastly more productive than in assembly (where "productive" means "getting things done"). That's not to say that there aren't times when you need assembly, just that when you're using C you are going to be moving towards a working app at a much faster rate than if you're programming in assembly, plain and simple. The same is also true of e.g. Lua/Python/Ruby/etc vs C++.

      It's all about getting things done. I remember once, when I was relatively new to using Python, I needed to build a remote-controlled, multi-platform build manager for my company (we needed to build product X on platforms A, B, and C with source code from date M, etc.). That would be no small task in C++. Even though I was new to Python, I wrote it an afternoon! (and, BTW, it included full VSS integration, a GUI front-end, it delivered the source code to each build machine, did the build, ran the RTs, packaged the release, and transferred it back to my box, and then generated a report). These kinds of productivity gains are not atypical - this is the _norm_.

      If you have trouble believing this, then add to your todo list that you need to go spend some time using a higher-level language for awhile (just tell yourself it's to disprove wackos on Slashdot or something). In the meantime, consider a common task you do in C++, and then go do the same thing in assembly, and compare the time it takes either way. For example, how long do you think it would take you to write 'diff' in C++? And how many times longer would it take you to do the same in pure assembly? Vastly longer.

      Please note that this isn't about "Python is better than C++" - someday there will be higher-level languages that fit the bill even better so it too will evolve or be left behind. Rather, it's more about not using lower-level tools any more than you need.

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

      Maybe I'm one of those "sysadmin types" who doesn't know better, but if that's your view on perl, you're not using it correctly. Perl is very good at writing software that works with text data. I do projects such as extracting data from html files and tossing it into a database or making custom log file parsers in perl with little effort or time. I _could_ write the same thing in C, C++, or Pascal (still haven't learned Java), but why would I? It would take longer to write and longer to debug. It might execute faster, but that would have very little effect on the way that the tool is used (the last log file parser I wrote can go through 4TB of data transfer log files in about 4 seconds). Could you explain how this is not knowing better?

      It's not cool, sexy work, but it's stuff that has to get done. Most people don't get to make really cool applications, we write stuff that handles shifting the data that the world generates around.

      That said, I think Graham is wrong in dismissing his "non-geek" languages. Use the right tools for the right project.

    59. Re:I'm going to have to go with "blowhard" by Garin · · Score: 1

      No, the hammer is still not appalling. The person who chooses to use that hammer is wrong, not the hammer. I still maintain that languages cannot be inherently good or bad, just as any other "thing" cannot be good or bad. It's up to the person making decisions to choose wisely.

      Blaming the programmer is the ONLY thing that makes sense! Well, perhaps the programmer and those who make decisions on the programmer's behalf eg. a manager deciding that all programming will be done in brainfuck. Anyone who chooses this language for anything other than an academic exercise should/WILL be shot.

      Programmers must take full 100% responsibility for the quality of their own code. I suppose underneath it all, this is what I'm driving at. People who throw up their hands and say "What can I do? I'm programming in [whatever] language!" are weak. Either don't program in that language, or do it right. And if the language is forced upon you, then you'd better figure out how to do it right.

      Quite often, programmers don't really get the choice of a language. This is why I feel so strongly about it -- good programmers will be able to adapt to a new language and write good code in it no matter what. For any "real" language (ie not brainfuck) this is possible.

      --
      In any field, find the strangest thing and then explore it. -John Archibald Wheeler
    60. Re:I'm going to have to go with "blowhard" by crucini · · Score: 1

      Your comment on string delimiters made me smile. You advocate three delimiters, ", ', and one other. But this implies that we want to tie up a character (or balanced pair of characters) redundantly representing strings. Should we sacrifice (), [] or {}? Each would have repercussions.

      The solution used in perl makes far more sense. The q operator introduces a non-interpolated string and qq introduces an interpolated string. Anything sensible can be used as the delimiters.

      What happens if you have a string that heavily uses both " and your third delimiter? Or wouldn't we really need four delimiters in your scheme, two interpolating and two non-interpolating?

      I don't find strings full of backslashes very readable. In practice, Perl often generates HTML, SQL, javascript, postscript and other embedded languages, each of which emphasizes different punctuation characters. I like the q and qq operators because they help me do this smoothly.

    61. Re:I'm going to have to go with "blowhard" by SageMusings · · Score: 1

      Thank you. I am going to check it out.

      --
      -- Posted from my parent's basement
    62. Re:I'm going to have to go with "blowhard" by WolfWithoutAClause · · Score: 3, Insightful
      I'm sitting in front of a system containing many modules and programs, and between them including over 60,000 lines of Perl. Is that a large system?

      Um.... No. No way. That's midsized.

      Come back when you have atleast 600,000 lines; or 6 million.

      I've worked on projects with 500+ people hacking on the same code, or different streams of the same code. That's a big system. And there are bigger.

      --

      -WolfWithoutAClause

      "Gravity is only a theory, not a fact!"
    63. Re:I'm going to have to go with "blowhard" by Geoff-with-a-G · · Score: 1

      Rather, it's more about not using lower-level tools any more than you need.

      I agree with this general philosophy; I think the part where you and I (for that matter, you and most programmers) differ is that you seem to assume that the need for languages as low-level as C++ is very small. A niche, as you said it.

      I think you're making the common Slashdot mistake of assuming that the small corner of the world you live in is representative of all of it. I think games programming is large enough on its own not to be considered "a niche", since revenues for the video game industry now exceed Hollywood movie industry revenues. But in addition to that, there's operating systems (Longhorn, Linux kernel, etc...) and core apps that need to run fast - think Photoshop, Final Cut, SQL servers. I don't know for sure that these programs are written in C or C++, but I bet they aren't written in Python or Perl, and with good reason.

      In the specific case of Doom3, Carmack in fact _would_ have been more productive to write it in a higher-level language but of course the end result would have been to slow for his needs

      If your goal is to produce a good game, and you fail to do that, rapidly, that doesn't mean you were highly productive; it means you weren't productive at all. You're using a screwed up definition of the word "productive"

      When you talk about "getting things done", it sounds like you're talking about odd-jobs, not core applications. Given the task you described, I wouldn't have picked C or C++ for that job either. I agree with your choice of a high-level language. But I'm talking about huge undertakings, not odd-jobs. Writing the next Excel, or Google, or Cisco IOS, or Counter-Strike. These are big programming achievements, and some of those jobs should be done with scripting languages, while others should be done with lower-level languages like C and C++.

    64. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      I find it difficult to understand how it is that you are unable to see that one language can be intrinsically worse than another language. I am not just talking about it being worse overall than another language.

      I do a little woodwork. I can go shopping for a new hammer, examine the ones on sale and decide that one is better than another. Sure for each of the hammers on sale there is a situation or maybe multiple situations where it is better than another.

      I reiterate, are you trying to tell me that beatnik is on the same level as C?

      --
      meh
    65. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      Your comment on string delimiters made me smile. You advocate three delimiters, ", ', and one other. But this implies that we want to tie up a character (or balanced pair of characters) redundantly representing strings. Should we sacrifice (), [] or {}? Each would have repercussions.

      I think you misunderstood my comment. I was placing an upper limit on the number of delimiters that should be made available. This is a concession towards the perl's of the programming world. My point was that perl goes far beyond this.

      My personal view is that there should be one delimiter for strings and that delimiter should be either " or '. Actually I go so far as to say that it should be ", I only mention ' as an option because it is already used in a number of languages.

      There are also other approaches to backslashes, for example SQL escapes ' with '' (SQL uses ' as a delimiter), and VB (and variants) use "" to represent ".

      I think perl makes things somewhat more complicated with the use of interpolation which has the side effect of forcing you to use more \. If you only had to escape ", life would be somewhat simpler, even when generating HTML (which tends to use a lot of double quotes).

      --
      meh
    66. Re:I'm going to have to go with "blowhard" by dcam · · Score: 1

      Sorry, I posted the earlier comment in a hurry. After cleaning it up a little...

      I find it difficult to understand how it is that you are unable to see that one language can be intrinsically worse than another language. I am not just talking about it being worse one one situation when compared to another language, I am talking about an overall comparison to another language.

      I do a little woodwork. I can go shopping for a new hammer, examine the ones on sale and decide that one is better than another. Sure for each of the hammers on sale there is a situation or maybe multiple situations where it is better than another, but I can say with certainty that one hammer is better than another. Better made, a better weight balance to it, a better grip, a better steel head.

      I reiterate, are you trying to tell me that beatnik is on the same level as C? Why has PL/I fallen by the wayside?

      --
      meh
    67. Re:I'm going to have to go with "blowhard" by photon317 · · Score: 1

      At least I put my name on my babble. As noted above, the numbers are just to make a point and complete bullshit -- I thought that was obvious by my using clean neat little factors of ten. The rest is from personal experience.

      --
      11*43+456^2
    68. Re:I'm going to have to go with "blowhard" by photon317 · · Score: 1


      Yes, my comments are entirely based on my subjective personal observations, and obviously the numbers are just made up and likely very wrong, they're only there to make my general point. My subjective personal observations come both from the open source world (watching the interactions of various personalities and groups of thinkers on the mailiing lists and irc), as well as numerous other completely unrelated groups of hackers, which I probably couldn't even remember to list them all (some of the less obvious ones to the open source / unix hacker crowd so well-storied by Eric Raymond's works might be things like the early-mid 90's efnet #hack crowd and the hacker cons from that timeframe, or the x86 asm demo scene from the 386-486 days, those kinda things. Great hackers pop up in all kinds of wierd places). That and perhaps most importantly, that I know that I am a hacker, and that virtually everything he said in his article made clear and perfect sense to me. And again as he said in his article, I'll probably never know if I have the stuff to be a Great Hacker (statistics say fat chance), but I'll always know that I'm a hacker, and that I've known, recognized, and worked with Great Hackers in the past

      --
      11*43+456^2
    69. Re:I'm going to have to go with "blowhard" by eelke_klein · · Score: 1

      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.

      What have the sourceforge numbers got to do with it? Do you think each opensource programmer is a great hacker? I don't think so... Not that I want to say perl or python is better then C, C++. Its just that your argument is invalid.

  5. You forgot by Anonymous Coward · · Score: 0, Troll

    It is GNU/Great Hackers.

  6. Re:OT: Los Alamos's missing disks NEVER EXISTED! by Anonymous Coward · · Score: 0

    Yes, but everything that was done there (suspending employees, halting work) was a huge waste (of time AND taxpayer money). They're also making everyone (at LANL and here) take more training for all of this, even if we don't handle classified materials.

  7. 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 AbbyNormal · · Score: 1

      You're completely right. They are simply the tools to get the job done right. You don't need an assembly plant to make a key, nor would you use a weedwacker to mow a farm. I use Perl regularly for small automated/scripting tasks, and either (GASP) VB or C# for other larger scale projects that require to be well engineered.

      --
      Sig it.
    2. 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!

    3. Re:Java by ansible · · Score: 2, Interesting

      I have some severe problems with the design of Java. But I don't think that people who choose Java are automatically stupid or something.

      It's all about the tools. How many times have I needed to write a program which does X, but there isn't a library for X in Python? And there are libraries for C and Java. (The situation with Python is continually improving, but still...)

      I like Python much better than either of those, but unless I want to re-write the entire world, I've got to go where there is support. To where there are the building blocks I need.

      At any rate, it is possible to write good, bug-free, and reasonably elegant code in just about any language. It is just that some languages/environments make that more difficult.

      But that doesn't stop me from griping about Java or C. My current dream is to take a couple years off work, and write an entire operating system in a high-level language. Something where a Python VM is integrated into the kernel. And all the userland is written in that. All the daemons, libraries, everything. But with this whole work-for-a-living thing, this isn't going to happen anytime soon. :-(

    4. Re:Java by Jerf · · Score: 1, Flamebait

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

      Extreme arrogance is also a characteristic of great hackers.

      Or is it arrogance? Given the demonstrated and scientifically proven (repeatedly) wide variance between the top and the bottom programmers, well, think about what the claim "I'm ten times better than you" looks like to those on the bottom.

      It looks like arrogance.

      The claim is, nevertheless, true.

      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.

      (By "Java" I mean more-or-less straight Java. Load it up with Jython or AOP or Groovy and that's not really Java anymore.)

    5. Re:Java by be-fan · · Score: 4, Insightful

      I'm sorry, but Graham's dismissive attitude towards Java is evidence of extreme arrogance.
      Perhaps arrogance, but also perhaps frustration. To anybody familiar with a broad variety of languages, the ascendance of Java (and C#, which is Java + 1) is irritating at best. Here you have a language that finally managed to overcome the entrentched nature of C/C++, but is at best one step backwards for each step forwards. It's got shades of Smalltalk, but none of it's flexibility; shades of Self but none of it's innovation; shades of C++ but none of it's control. It's not particularly good at anything (but not particularly bad), nor is it a good all-rounder. Certainly, it's decades behind the state of the art compared to something like Lisp, or Smalltalk. The main reason Java got popular was hype, chance (the rise of network computing), and a giant class library that had pre-canned solutions for most things. Put simply, it was an example of worse technology winning out over better technology, for market reasons.

      --
      A deep unwavering belief is a sure sign you're missing something...
    6. Re:Java by pherthyl · · Score: 1

      Gotta love that kind of response. Now read the following very very closely.

      Advanced language features (Generics, closures, macros, etc etc), while nice to have sometimes, are almost irrelevant

      Some missing language features will cost you a couple extra lines of code, its not gonna prevent you from getting your work done. So while they're great from a nerd standpoint, they're not crucial in real life.
      Way way way WAY more important is what libraries are available for a certain language. Java (and VB and C# etc) has an expansive, nice client library that JUST WORKS. Just in the Java standard libraries I have so much more functionality than in the standard Perl or Python libraries and they are all coded in the same style.

    7. Re:Java by Anonymous Coward · · Score: 0

      A great hacker by definition can use any language as his tool. He must not be a great hacker, if he can't use Java.

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

      i agree. java is nice for hacking. it's an _entire virtual machine_ to play around in. how could that be a bad thing? i like writing ClassLoaders that do interesting things. i tried to write a ClassLoader that rewrote classes on the fly using javassist to effectively segment a single JVM into process spaces, but in the end it wasn't sufficiently powerful. oh well.

      but now there's the 'isolate' thing, and i'm excited to see how isolates compare to processes, as they work at a much deeper level than i was able to achieve with classloaders. i actually asked one of the guys doing the j2se implementation about this at javaone, but he claimed they weren't trying to write a java os--but then was immediately countered by a j2me guy, who said he thought they were. uh-oh.

      anyway, the whole bytecode manipulation area is very fertile ground for experimentation and, yes, hacking. in addition to what i stated above, bytecode hacking is the primary way in which most AOP implementations work. and it's also used by a number of experimental or niche programming languages implemented in Java, such as pnuts and groovy (check out groovy if java's verbose syntax turns you off). and i must mention javassist a second time, as it's just that cool.

    9. Re:Java by jjohnson · · Score: 2, Insightful

      "Put simply, it was an example of worse technology winning out over better technology, for market reasons."

      Why are market reasons invalid when determining the quality of technology? How is it that the use of technology in the real world, something market reasons influence very strongly, is less important than the theoretical virtues?

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    10. Re:Java by kaffiene · · Score: 2, Interesting
      Java has nothing about it that makes it any more maintainable than any other language.

      Untrue. Checked execeptions and strong typing are two features that Java has over Python, for example, which aid maintainability.

      Over languages like C and C++ you may add garbage collection, bounds checking, security constraints.

      And anyway, Herd mentality??? What the hell kind of comment is that if not a continuation of the kind of language bigotry that I was posting about in the first place.

      FYI LISP is one of my favourate languages (I've written several LISP interpretters for work in my time) and I agree that it's great. But that said, I still wouldn't go where you seem so keen to go and just disparage vast swathes of the developer landscape just because it's not *your* favourite language under discussion

    11. Re:Java by Cyno · · Score: 4, Insightful

      I agree. But the same can be said for Perl.

    12. Re:Java by KermodeBear · · Score: 1

      I agree 100%. Although a large majority of my coding is in one language, I have used many others; C, Perl, PHP, Python, Ruby, SML, Java, JavaScript (such as it is, ha ha). When asked which language I like the best, the answer is that it depends on the problem. Certain languages are better suited for certain problems. For example, if I'm doing a web-based application then I'm going to want to use PHP, not C++. If writing embedded software, then C over Perl. Something that has automatic cross-platform compatability, go for Java.

      Something else that I have noticed; I don't know if it is just the programmer, but for the most part Perl code that I have had to update seems messy, difficult to maintain and in general difficult to deal with. A language like Java - as much as I really don't like coding in it - is easier to read and easier to maintain -in general-.

      Overall I find it rude that one would instantly judge someone's programming skill and ability depending on what language they choose to use. There have been some decent applications written in Java, especially recently; Zend Studio, for example, is a pretty nice application and as some good features, PLUS unlike a lot of other Java applications I have seen it runs quite well.

      --
      Love sees no species.
    13. Re:Java by Anonymous Coward · · Score: 0

      with that attitude, i would guess (though i could be totally wrong) that you haven't written a sufficiently complex program to take advantage of java's promise of maintainability. it's frankly absurd to assert the equality of the maintainence cost of a million lines of well-written java with a million lines of well-written perl. i certainly know which program i'd rather debug.

      i'm not part of any herd; i'm speaking from experience.

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

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

      I generally find your attitude is common among people who think they write good OO code but actually are terrible at it. The number of people who write "good" OO code is an order of magnitude less than I used to think it was. And being about to code well in OO, functional/structural(C), and logic languages (Prolog rocks) is the sign of a great hacker because they have a deeper semantic understanding of all types of programming languages and so have a larger set of more powerful programming patterns embedded in their head. Java's strength is that it gets out of your want and let's you focus on the problem you want to solve, but if that problem is a device driver then you are screwed.

      Right tool for the job...but being able to write a video game in LISP shows ability too, as long as the coder understands that he is just showing off and not trying to build a better mousetrap.

    16. Re:Java by Coryoth · · Score: 4, Interesting

      Untrue. Checked execeptions and strong typing are two features that Java has over Python, for example, which aid maintainability.

      Checked exceptions are up for debate, though personally I think they are nice. Strong typing on the other hand - Python actually has strong typing, it just doesn't have static typing.

      A major maintainability point that python is hopefully getting soon is Design by Contract. I blieve there are some packages that let you add it in to Java of course, but it's not in the standard package.

      Jedidiah

    17. Re:Java by kaffiene · · Score: 3, Insightful

      I don't disagree with a lot of what you say. Just that Java is not popular *now* because of hype. It was hyped at one point, and I ignored it during the period (actually I looked at it, but it was too slow).

      Things have changed. The hype is in the past, Java is a popular language now for real tasks - hence all the jobs in Java - that's not hype, that's work being done. You can't say that the majority of jobs being done are by dot com newbies with Java - glint in their eyes.

      I suppose the reason I like Java is that I tend to program large systems for which maintainability and stability are important. C++ is the other major player in this area, but where C++ has more ability to get close to the metal, I don't need that , and C++ loses out on GC, bounds checking, security management etc...

      But again, like *every* language, whether it is the best fit or not depends on your problem domain. The popularity of Java shows that it fits a lot of problem domains well. The /. meme that Java sucks because it's not elite is somewhat infantile. Being cutting edge is not relevant to getting work done.

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

      While I generally agree with your comments, Python does, of course, have strong typing. Objects have types that cannot change. What Python does not have is static typing. That is, the reference to an object does not have a type, but the thing it refers to does. There's a very big difference there.

    19. Re:Java by tradervik · · Score: 1

      If I wanted to hack around, I might use Lisp, Ruby or Prolog(!) but if I want to develop a complex application with a large team, I think Java strikes a nice balance between expressiveness and "safety".

    20. Re:Java by Thing+1 · · Score: 2, Funny
      (and C#, which is Java + 1)

      I may be like the last guy to get on the boat, but I just realized through your parenthetical remark that "C#" is a lot like "C++" squished together: the "#", when separated, is two plus signs.

      I had some cool ASCII art showing what I meant but the fucking lameness filter wouldn't let it through, even with a ton of extra text around the art. So, just imagine that the top line and left line form the first "+", and the bottom line and right line form the second "+", and then pull them apart, the first to the top and left and the second to the bottom and right, and you'll have seen what I saw when I read your comment.

      Not that it helps me understand the language any, but I thought it was a neat "pun".

      --
      I feel fantastic, and I'm still alive.
    21. Re:Java by Dwonis · · Score: 1

      Why are market reasons invalid when determining the quality of technology? Perhaps because market reasons rarely take long-term consequences into account, or because those in charge of better technologies mismanaged them, or because of patents?

    22. Re:Java by Tony-A · · Score: 2, Interesting

      It's not particularly good at anything (but not particularly bad), nor is it a good all-rounder.

      I see Java and I see gaggles of mainframes.
      What you describe sounds perfectly suited. The overall effeciency is dominated more by how bad the worst is rather than how good the best is.
      It's always possible to do 90% much better provided you can afford to ignore the remaining 10%. I think the relevant comparison is to the great masses of COBOL.

    23. Re:Java by Anonymous Coward · · Score: 0

      When was the last time you could find a library for Java, but not Python? The reason? Python makes wrapping C libraries simple; Java makes it painful.

    24. Re:Java by danharan · · Score: 1, Interesting
      I agree. But the same can be said for Perl.
      Hmm... Last I checked, Perl was not an ideal language for writing "large bodies of maintainable code." In fact, it was quite the opposite.

      Once I saw a brilliant 300 liner that did exactly what it needed to do, and no one dared touch it.
      Most of the time, the people I know who wrote Perl couldn't understand what they did just 2 weeks later.
      --
      Information: "I want to be anthropomorphized"
    25. Re:Java by FuzzyBad-Mofo · · Score: 2, Funny

      the ascendance of Java (and C#, which is Java + 1)

      A great hacker would have said Java++ .. ;)

    26. Re:Java by Anonymous Coward · · Score: 0
      I happen to like Python and C and C++ as well as Java
      Maybe you missed the fact that Paul Graham was refering to great hackers.
    27. Re:Java by harmonica · · Score: 1

      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.

      Because you say so? That's ridiculous. Who the hell do you think that you are?

      What makes Java the language of choice under some circumstances (I think the 'use the right tool' mantra has been reiterated enough in this discussion) isn't merely the language, it's the class library that comes bundled with it. It's so much more elegant to write clean code that does powerful things on many platforms.

      An experienced hacker is very likely to appreciate this. The more experienced one gets, the more maintainability and readability is appreciated. Somehow getting stuff to run by fumbling around trial-and-error-wise may be nice for a beginner, but after a while, one starts to strive for more.

      Features from other languages are always missed. Some things are nice in Python than in Ada, in Ruby than in Java, and so on. There is no ultimate single language.

    28. Re:Java by wolverian · · Score: 0, Offtopic

      Perl lets you write code the way you want. It lets you write obfuscated code that is impossible to maintain two months down the road. It also lets you write code that is clean, modularized and extremely easy to maintain.

      Perl's strengths are not only in its dynamic nature, the CPAN module archive and its user base. It is also a very powerful language that is beautiful to those who have more coding experience than Teach yourself X in 21 days.

      --
      -- wolverian
    29. Re:Java by Tony-A · · Score: 1

      Overall I find it rude that one would instantly judge someone's programming skill and ability depending on what language they choose to use.

      Like English or French or Latin or German or Portugese or Chinese.

      Different languages can be and are used at different skill levels.
      Now it may be essential to posess a certain skill level before anything useful can be done in that language, but that doesn't really speak well of the design of the language.

      Rude? Stupid seems more accurate.

    30. Re:Java by Anonymous Coward · · Score: 0

      C# (C-sharp) is a language you dumb shit.

    31. Re:Java by Kristoffer+Lunden · · Score: 0, Offtopic

      Hmm... Last I checked, Perl was not an ideal language for writing "large bodies of maintainable code." In fact, it was quite the opposite.

      I don't know about ideal, but it is not hard to write and maintain large bodies of clean and readable code in Perl. On the other hand, you can *also* write totally obfuscated weirdo oneliners. Because it is flexible.

      Bad (or just plain evil) programmers can write bad and ugly code in any language, good programmers can write good gode in almost any language. Can't very well say any, because there are such beasts as BF out there. ;-)

      Most of the time, the people I know who wrote Perl couldn't understand what they did just 2 weeks later.

      Well, those aren't programmers. At least not yet. Perl has - built in, mind you! - more rules, checks and syntactic helpers than most languages - if you chose to turn them on. Most good programmers do, however they are off by default so quick oneliners on the commandline and lightning 5-line quick and dirties can be pulled off as well.

      TIMTOWTDI (There Is More Than One Way To Do It) sums up the whole philosophy. Spend some time at places like http://www.perlmonks.org/ and then come back and tell me that most Perl programmers create code that can't be maintained. ;-)

    32. Re:Java by Anonymous Coward · · Score: 0

      Python is dynamically typed and late bound. And unlike Lisp, you can't do anything about it. As a result, Python is LOCKED IN to being slow.

    33. Re:Java by JPyObjC+Dude · · Score: 1

      True. I program in Java but also program in TCL and Python. What makes me enjoy using Java is avoiding standard java programming paradigms like using objects for everything. Instead, if I can use Java's primitive data structures such as Arrays, I can make my code shorter and as such more readable.

      Although I do like the ideal of minimal lines of code. I try to enforce this in all my applications, however everytime I try to read somebody's perl, I feel like I'm reading martian. I love Python and feel that although it in some cases takes more keystrokes than perl, it is at least humanly readable.

      I've heard many a good programmers call perl a `write once, read never` language. I'll take Jython.

    34. Re:Java by SageMusings · · Score: 2, Funny

      Ahem, cough, CPAN........

      --
      -- Posted from my parent's basement
    35. Re:Java by be-fan · · Score: 2, Insightful

      You've never seen my code, so don't comment. Java is a halfway-decent language for OOP, but it does not get out of your way. It beats you over the head with it's limitations at every step, forcing you to deal with a primitive type system, constraining object model, limited control constructs, and limited ability to write any abstractions that don't fit a very narrow paradigm.

      And Lisp for a videogame is hardly showing off -- commercial games have been written quite well in Lisp. Remember --- most games today are hybrids, with a low-level core in C and the bulk of the game logic in a higher-level scripting language. Since you can get C-like performance out of Lisp, and it works just great as a scripting language, it makes a great deal of sense to write games in Lisp!

      --
      A deep unwavering belief is a sure sign you're missing something...
    36. Re:Java by OmniVector · · Score: 2, Informative
      how about something more important, like integrated OOP. nothing's worse than claiming to be heavily object oriented, that has a bolted on OOP model.

      for example.. python:
      class foo:
      def __init__(self):
      // do stuff


      ruby:
      class foo
      def initialize
      // do stuff
      end
      end


      python reminds me so much of windows. everyone uses it, because it's all they know exists. if you want to see a language with modern OOP, and clean syntax, give ruby a try some time.
      --
      - tristan
    37. Re:Java by be-fan · · Score: 2, Interesting

      The market advantages of a technology are orthogonal to the technical advantages of a technology. So market factors do (and should), play a role in the overall decision, but they don't have any bearing on whether a technology is "better" or "worse." Also, you can't try to mush market factors along with practical values. There are theoretical values, practical values, and market forces. They are all seperate things. There are lot's of technologies that have the first two, but not the third.

      More generally, market forces tend to be somewhat random and timing-dependent, a matter of chance. Say, for example, you can have a worse technology immediately, or a better technology in a year. If you're going to have to live with that technology for the next decade, it'd be logical to wait the year. However, for marketing reasons, the worse technology tends to get picked, and programmers have to live with worse technology for the next decade. A year down the line, when the better technology is fully developed, but programmers are stuck using the worse one, it is not surprising that they might be a bit frustrated, especially because the original marketing factors are no longer applicable to them.

      --
      A deep unwavering belief is a sure sign you're missing something...
    38. Re:Java by arkanes · · Score: 1
      The Java class library gets hyped a lot but it's not really any more functional than the standard Perl and Python libraries. If you're willing to extend "standard library" to mean "commonly used freely available libraries that happen to not ship with the offical package", then Java gets pretty much kicked to the curb.

      Personally, I can't imagine why anyone would write in Java. But I've never used J2EE, which is the other thing that gets brought up, and maybe it's really cool. Java may have it's strong points, and I'm sure there's really good Java programmers out there. But if you want to narrow it down to bullet points, Java doesn't offer anything unique. Naturally, at some level there's a personal preference, and maybe the specific combination of features (and lack thereof) in Java appeals to some people. In my case, C++ and Python are my languages of choice (I had a lot of trouble getting into python cause of the silly indentation issue, and I still thing it's a horrible design decision, but now that I've been using it I'm able to overcome that). Java doesn't offer me anything I'm missing.

    39. Re:Java by Anonymous Coward · · Score: 0

      There's nothing clean about Ruby's syntax. It's a crappy amalgam of a little Perlism and a little Pascalism. It's also slower than the already mediocre-performing Python. Include the much weaker library of existing useful software and you've got yourself a real super language!

      There's nothing modern about object-oriented programming, nor Ruby's object model. Its syntax is not clean. If you want to trumpet an obscure object-oriented language, you might as well just pick Smalltalk. It has a much better syntax than Ruby. Or Common Lisp, since its an order of magnitude more powerful and its implementations two or three orders of magnitude more efficient.

    40. Re:Java by Anonymous Coward · · Score: 0

      Oh yes, the wonders of Objective Caml. A world where there exists no dynamic linking of natively compiled Objective Caml libraries. Where there's no ad-hoc polymorphism, so you need to use new operators for every type, and you must use functors to construct anything resembling modular software. With its object model that looks exactly like it was crapped out of Java's colon. Truly an advancement.

      Perl with its broken threading, retardedly-complex and inconsistent system, and its stupid operator semantics.

      Ruby with its endless supply of libraries for actually getting fucking work done.

      And Python, the aging language that could once be called simple, but increasingly finds itself fitting in changes that increasingly feel dirty. While it's breaking software with every major update, it might as well fit in its phantom Python 3000 remake so that its C interface can be cleaned up and the language given some consistency (and one hopes optional type annotations and local type inference).

      Of course Java is a piece of suck, too, but people that willingly use it aren't any more or less "great" in my experience. Paul Graham certainly isn't a great anything from my perspective, although I did like ANSI Common Lisp.

      Extreme arrogance is often just that; extreme arrogance. It's more often a trait of common of idiots than genius in my experience. That it's so often found in members of the Slashdot community is likely no accident.

    41. Re:Java by f0rt0r · · Score: 2, Insightful

      And this cannot happen with Java? I reuse Perl code I wrote years ago. It is layed out logically, everything is well named and well commented, I generally just copy a subroutine or two from my old code and reuse in whatever I am writing at the moment that is applies to. What you are describing are bad programming habits, not a bad programming language.

      You have to keep in mind when you code something that reusable parts should be put in separate functions, the flow should be logical, variable/function names well documented, as well as explanations of what the included libraries do so people who come after you will have a clue how your code works and what libraries it needs to run. I could go one, but I think I have made the point clearly enough.

      --
      I can't afford a sig!
    42. Re:Java by lewp · · Score: 2, Funny

      Actually, a great hacker would have said ++Java ;).

      --
      Game... blouses.
    43. Re:Java by Cyno · · Score: 1

      I wrote over 3000 lines of reusable object oriented Perl, most of which is easy for me to maintain and well documented. Some methods I have run well over 100,000 times in the last few months, some execute several hundred times per pass of the application and have never needed to be examined because they were written properly the first time and documented.

      Sometimes its a lot easier to maintain 30 well-written 10-line methods than to build a complex 300-line structured program.

      And I'm a pothead. I can't remember what I did yesterday. ;)

    44. Re:Java by Anonymous Coward · · Score: 0

      it's flexibility
      it's innovation
      it's control

      "its". (Your other "it's"es/"It's"es were correct.)

    45. Re:Java by Anonymous Coward · · Score: 0

      it gets out of your want and let's you focus on the problem

      "want" --> "way", "lets".

    46. Re:Java by Anonymous Coward · · Score: 0

      arrogance and hacker-ness may be correlated, but by no means are they equivalent. i have no idea whether you're a good hacker or not, but your outright dismissal of an entire language/virtual machine/security model based on your singular opinion sure sounds like plain arrogance. one thing i've realized over time is that arrogance can only hurt; in no circumstances is it the best course of action. the best hackers i know understand this, and i strive for that goal as well. you have a much better chance of getting your way if you can control your arrogance. and for a hacker, that modicum of freedom obtained thereby is what it's all about.

    47. Re:Java by harmonica · · Score: 1

      The Java class library gets hyped a lot but it's not really any more functional than the standard Perl and Python libraries. If you're willing to extend "standard library" to mean "commonly used freely available libraries that happen to not ship with the offical package", then Java gets pretty much kicked to the curb.

      I, for one, am not willing to extend the meaning of standard library in that way. Freely available libraries often do not work properly on all the platforms because they weren't tested extensively on all those platforms. Then there's the issue of making end users install 3rd-party libraries. As a developer, you are not allowed to provide libraries in some cases so that the task is burdened on the user. Depending on the programming language you'll have to provide all kinds of compiled library versions for different platforms. That is all non-trivial as I can tell from personal experience.

      Personally, I can't imagine why anyone would write in Java. But I've never used J2EE, which is the other thing that gets brought up, and maybe it's really cool. Java may have it's strong points, and I'm sure there's really good Java programmers out there. But if you want to narrow it down to bullet points, Java doesn't offer anything unique.

      True, but uniqueness isn't really the killer feature. Java has used a lot of mostly old concepts and never claimed otherwise. I've heard it all too often, but why does the fact that, as an example, garbage collection is an old idea make it a bad or at least inferior idea? I can't tell.

      Naturally, at some level there's a personal preference, and maybe the specific combination of features (and lack thereof) in Java appeals to some people. In my case, C++ and Python are my languages of choice (I had a lot of trouble getting into python cause of the silly indentation issue, and I still thing it's a horrible design decision, but now that I've been using it I'm able to overcome that). Java doesn't offer me anything I'm missing.

      And I certainly don't mind that you don't use it. I just opposed to the notion that one can tell that a person is not a great hacker because he's using Java. By the way, I'm quite sure that every 'great hacker' uses more than one language.

    48. Re:Java by TwistedSquare · · Score: 1

      I always actually envisioned C# as C followed by four plusses joined together, in a sort of "you've got C++? Well we have (C++)++!" kind of way, I presumed it was deliberately done too.

    49. Re:Java by Anonymous Coward · · Score: 0

      Moreover, Python does not have private fields. There is an ugly hack that you can prepend underscores to field name and it is then obfuscated by interpreter, but that field is still accessible; that feature is design by breaking contract indeed

    50. Re:Java by Annnoying+Coward · · Score: 1
      And this cannot happen with Java?

      It can and does happen with java, but a mess is easier to achieve with perl. Java doesn't have "use strict", because it is the only way. (And yes, any sensible (perl) programmer has that in his/her mind as the only way).
      --
      sigh
    51. Re:Java by Wastl · · Score: 1
      Strong typing on the other hand - Python actually has strong typing, it just doesn't have static typing.

      Neither does Java. Also, strong typing is not very useful if you don't have any kind of type checking (like Python) during compilation. The big strength of statically typed languages (like e.g. Haskell) is that the compiler can detect many errors that go unnoticed in dynamically typed languages (like Java or Python). A nice side effect is that the compiler can actually throw away any type information after compilation, because the static type inference ensures that all types are correct anyway.

      Sebastian

    52. Re:Java by master_p · · Score: 1

      but it works though, for most kinds of apps.

    53. Re:Java by Annnoying+Coward · · Score: 1
      Sometimes its a lot easier to maintain 30 well-written 10-line methods than to build a complex 300-line structured program.

      What? I thought it always is. There is one caveat: 300 lines of structured program easily transfer to 400 to 500 lines of methods (C), or 500 to 1000 lines of classes and methods (Java).

      The result probably is a more undestandable and dense main program.
      --
      sigh
    54. Re:Java by Rattencremesuppe · · Score: 1
      My current dream is to take a couple years off work, and write an entire operating system in a high-level language. Something where a Python VM is integrated into the kernel.


      You don't want to write a whole OS in a high-level language. IMO, you can't write low level stuff such as task scheduling, device drivers and the like in a language that is based on some virtual machine, or even a scripting language.
    55. Re:Java by jrumney · · Score: 2, Insightful
      Insisting that one and only one language is the true language is just silly.

      And the sign of someone who is definitely not a great hacker. Great hackers can sit down and program in any language. Arrogant arseholes refuse to work on projects because of the language or OS being used.

    56. Re:Java by jschrod · · Score: 1
      Oh, you're using vi and Emacs, and like both?

      Strange people exist... ;-)

      --

      Joachim

      People don't write Manifestos any more -- what's going on in this world? [Frank Zappa]

    57. Re:Java by dolmen.fr · · Score: 1

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

      I disagree:
      - it has a quite consistent API that make use of OO concepts such as 'interfaces'. This pushes the programmer to reuse the same concepts in the design of its code.
      - "one source, one class", no header files mess: this simplifies editing compared to C/C++
      - JavaDoc: of course most language have now an equivalent tool. But JavaDoc is THE standard for Java so everybody uses it.
      - IDE for Java are now far more advanced than IDE for other languages. Do you know about refactoring? This single point is making the difference for code maintenance.

    58. Re:Java by Haeleth · · Score: 1

      Actually, a great hacker would have said ++Java ;).

      No, a great hacker would have run a quick test to see whether Java++ generates the same code as ++Java in cases where the return value is not being used, to determine whether the sacrifice of the more elegant postfix operator would provide any increase in efficiency.

    59. Re:Java by Anonymous Coward · · Score: 0

      Please divert ur complaints to God. Precanned solutions are good for most of us. For the nerdy and "custom solution to each sorting scenario" (do u fall in this category?) stay in the Phd prgm or better market ur fucking products like Sun/M$

      Yes baby i m an AC

    60. Re:Java by Cro+Magnon · · Score: 1

      I've never had any problem figuring out my old Perl code. I'll admit that I wouldn't want to tackle someone else's stuff.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    61. Re:Java by Anonymous Coward · · Score: 0

      To anybody familiar with a broad variety of languages, the ascendance of Java (and C#, which is Java + 1)

      if you think C# is just java++, you probably either don't know java, dont know C#, or just have been blinded by the hype. C#, IMHO, is a great language. i think it comes pretty damn close to bridging the gap between C/C++ and java developers for anyone who is willing to give it a chance. I would say its closer to java than it is to C/C++, but many of the usual C/C++ suspects (enums, structs, pointers) are present in C#. if nothing else, i think C# is a big step forward in taking the burden of control away from the developer (yet, wisely, giving it back if so requested).

    62. Re:Java by theghost · · Score: 1

      Extreme arrogance is also a characteristic of great hackers.

      Great hackers may tend to be arrogant pricks, but not all arrogant pricks are great hackers. To rephrase: acting like an asshole isn't going to fool us into thinking you're a great hacker. If you are a great hacker, there's nothing that says you have to act like an asshole.

      Either way, the conclusion remains the same: quit acting like an asshole, you arrogant prick! (And by you, i mean all the arrogant pricks out there, including Graham.)

      The world needs more great humanitarians more than it needs more great hackers.

      --
      The only thing necessary for the triumph of evil is that good men do nothing.
    63. Re:Java by MarsDefenseMinister · · Score: 1

      So they made a reference to c++?

      As in &c++

      --
      No weapon in the arsenals of the world is so formidable as the will and moral courage of free men.-Ronald Reagan
    64. Re:Java by be-fan · · Score: 1

      It's not a matter of precanned solutions being good enough. Precanned solutions are a great idea. I *wish* Lisp had a library as huge as Java's. However, the real question is whether a language can still shine, without pre-canned solutions, in cases where pre-canned solutions aren't available. Java's library is a big help when you're doing network programming, but it's much less so when you're doing (say) scientific programming. At that point, Java's library is no better than any other language's, and you have to deal with the limitations of the language itself.

      --
      A deep unwavering belief is a sure sign you're missing something...
    65. Re:Java by Felonious+Ham · · Score: 1
      I'll agree with your primitive type issue, but the rest is rubbish. Java can be occasionally confining, but for 98% of the code I write (not super sexy video games, admittedly), it does a much better than average job of aiding good OO design (addressing OO-hating I save for some other post). I might be suffering from Stockholm Syndrome, but my Java captor makes it very easy to build programs that are easily understood from their class constructs. Strong typing constraints allows you to hand off your crap code to some maintainer 4 generations down the line and know they won't be passing an int id (instead of ObjectType) that will unexpectedly blow up the system 20 hours into a run. Or better yet, simplify the inevitable refactoring that occurs while the code is in my care.

      limited ability to write any abstractions that don't fit a very narrow paradigm

      This one has always puzzled me. I'm sure I'm just simple, but while Java may not have the most smallest (I'm thinking of Perl and the programming contest) or most elegant solution to the problem, its "bloated" class libraries and prodigious and powerful tools (think Eclipse) make things as easy and more maintainable (thinking Perl again).

      On Slashdot, Java suffers more from being "most popular" than for any real world deficiencies. Eat my shorts.

    66. Re:Java by WillWare · · Score: 1
      You appear to be claiming that the OOP component of Python is a kludge and Ruby got it right. That may be true (insofar as Python has primitive types that aren't objects) but I'm having to guess that you intend this, because the example you give does nothing to support or clarify your point. If you can't think hard enough to explain yourself, and then slam Python with a Windows comparison, why would I ever want to follow your advice on language selection? Every once in a great while I take a look at Ruby and try to find something that justifies my time to learn another language. I have yet to find anything I want or need in Ruby that isn't already present in Python.

      I've used Python a lot. Is the language maintainable and expressive? Yup. Do people solve useful, important problems with it? Yeah, they do. A more practical complaint against Python might involve performance issues. But gee, it's easy to write C libraries, and lots of great libraries have already been written.

      I can think of one complaint I do have with Python. It's evolving more quickly than I like. I could have been happy with 1.5.2 for another five years. Then they instituted this PEP process for rapidly introducing new features, and while I was busy with other things, they went through another dozen version numbers.

      --
      WWJD for a Klondike Bar?
    67. Re: Java by Nevyn · · Score: 1
      The main reason Java got popular was [...] and a giant class library that had pre-canned solutions for most things.

      Oh, my god stop the press. Not having to re-invent the wheel is seen as a benifit. Why is it that all these so called "great lisp hackers" can't understand this one simple fact. The reason I learnt perl was that I could just do...

      my %foo = /^(.+):\s+(.+)$/g;

      ...and have it work (without having to write a Regexp library), in a similar vein I wouldn't have learnt python if I couldn't do multiple https GET/POST calls in a couple of lines of code keeping cookies over the session.

      I've never written in Java, and have no intention of doing ... but I can see that having a massive std. library is a major benifit over lisp/scheme etc.

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    68. Re:Java by SigmaEpsilonChi · · Score: 1

      This is not true. The type of an object can change quite easily.

      class A:
      def __init__(self, x):
      self.x = x
      def foo(self):
      return self.x

      class B:
      def __init__(self, y):
      self.y = y
      def foo(self):
      return self.y

      a = A('d00d')
      a.foo() -> 'd00d'
      a.__class__ = B
      a.foo() -> AttributeError

    69. Re:Java by Harik · · Score: 1
      It was hyped at one point, and I ignored it during the period (actually I looked at it, but it was too slow).
      "was" too slow? I groan whenever I end up at a site with .jsp pages because their server is always bogged down. Every single time. One of my credit card companies went to a java-based portal (server side) and it's been impossible to get to ever since.

      Cross platform? HAH! Seperate codebases for windows and linux. Won't work on much else...

      And look at freenet. Well, don't bother unless you have a quad xeon with 2-4 gig of ram. Anything lower then that will eat your system for lunch. And it still only runs windows/linux.

      I don't think any language is "great" but java lives up to none of it's promises.

    70. Re:Java by SigmaEpsilonChi · · Score: 1

      Lots of languages offer sizeable and internally consistent frameworks. Eiffel, for example, has a robust standard library. So do Smalltalk implementations.

      Interfaces provide statically-typed polymorphism over orthogonal type hierarchies. These are useful, but I'm not certain how their presence "pushes" anyone to define component boundaries in terms of interfaces. This doesn't seem to happen in practice.

      Many languages don't have separate interface and implementation files, however their presence isn't even necessarily a bad thing anyway.

      Many languages had equivalents or supersets of Javadoc even before Java existed. Regardless, that's a tool matter. Some environments provide means of attaching documentation to actual code, which would at least make that a language feature for them, but Javadoc does not work this way so it's not really a language feature.

      Smalltalk environments have had refactoring for a long time now. They've also been more sophisticated than IDEA or Eclipse for many years.

    71. Re:Java by random_static · · Score: 1
      if you don't want anybody to use a field, you tell everybody that you don't want it fiddled with. that's what underscores do.

      if somebody is dead set on fiddling with it any damn way, there's nothing you or the compiler can do to stop them, because humans can be smarter than compilers and stubborner than language designers. it might be the dumbest thing they'll ever do, and it might be shooting themselves in the foot with an anti-aircraft gun, but if they really want to do it - they'll do it. no matter what you do to prevent them.

      annotations like the underscore are simultaneously the weakest and the strongest method you can use to keep fields private. weakest, because the computer doesn't even really try to enforce it and a determined user can easily override it; and strongest, because it puts the onus on the humans who use your classes not to be bloody stupid. it brings in the weight of social conditioning and peer pressure within the group of people who use, know, and teach the language, all saying that "touching that field is stupid and bad". if such pressure and such a lesson aren't enough to stop somebody, nothing ever would be.

      python's underscores is telling other programmers that they're humans, not machines, so you'll talk to them as people, not computers. it takes protection out of the domain of mechanics and puts it into the domain of sociology. that's a profound move, and the same philosophy underlies python's use of "magic" naming like __dict__ and __cmp__.

      sure it can be abused. so can any other damn thing. if somebody does that, they can't really blame you for what happens to them - they were warned, weren't they? do you really think a slightly more severe warning would have stopped them, or even stopped them from blaming you anyway...?

    72. Re:Java by kaffiene · · Score: 1

      As it happens, I *do* use vi and emacs, and like them both (and Eclipse too)

    73. Re:Java by kaffiene · · Score: 1
      "was" too slow? I groan whenever I end up at a site with .jsp pages because their server is always bogged down. Every single time. One of my credit card companies went to a java-based portal (server side) and it's been impossible to get to ever since.

      I'm doing video analysis and openGL graphics in Java - both operate as fast as I could expect them to (and the openGL is a C++ port which ran at the same speed so I know it compares)

      I'm sorry you've found some jsp web sites that run slowly but in no way does that show that Java is running slowly (maybe it's bandwith, maybe its a slow server)

      For my jobs - both heavy duty media jobs - Java works fine. If you want to see a good modern Java aplication, look at Eclipse and see just how much it smokes Visual Studio.

    74. Re:Java by r.jimenezz · · Score: 1
      The main reason Java got popular was hype [...] a giant class library that had pre-canned solutions for most things.

      And this is bad because... ?

      It was this in fact what brought me to Java from C++ six years ago. It is true that there are some issues with Java, but I think it's managed to bring some concepts into the 'mainstream' quite well (not every hot new technology is ready to be adopted by the "real world"), and it definitely has the upper hand when it comes to libraries and such. Other posters seem to confirm this when comparing Java with Python et al.

      --
      The revolution will not be televised.
    75. Re:Java by sjames · · Score: 1

      Why are market reasons invalid when determining the quality of technology? How is it that the use of technology in the real world, something market reasons influence very strongly, is less important than the theoretical virtues?

      Perhaps marketing reasons would be a better term. What you are thinking of is what I would call real world reasons.

      Marketing reasons comes down to managers who, if they ever programmed at all, left programming behind when COBOL was all the rage selecting a language based on the hype rather than real-world experiances.

      Let's face it, Java was a very strongly hyped language! It came complete with an inappropriate munging together of multiple concepts as if they were inseperable (that is, the JVM sandbox and the language that just happened to compile into that VM's bytecode). Consider how many apps ended up being coded in Java explicitly for the platform independance of the binary rather than for any feature of the language.

      The other part of the hype was convieniantly ignoring the fact that any scripting language is just as much run-anywhere as Java. The Java hype machine also did it's best to ignore the fact that Pascal compiled into p-code decades before.

      It would help if the typical JVM didn't make a PIV perform like a 386. I find that the performance of most Java apps is just slightly better than running an X app over a dialup. A solution for jvm performance has been just around the corner for the entire life of Java.

      It could be that if the VM and the language could get a divorce, the language MIGHT turn out to be decent. The best way to shake that out in the real world would be to make a language front end and a JVM target for gcc. See how C compiled to the VM compares to Java compiled to native object code.

    76. Re:Java by sjames · · Score: 1

      He must not be a great hacker, if he can't use Java.

      You fail to distinguish can, should, and would.

      I CAN drive a nail with a cast iron skillet. So, I can frame a house using a cast iron skillet. However, doing so in the normal course of building homes wouldn't make me a great framer, it would make me an idiot.

      So I CAN use a skillet to build na home. I SHOULD and WOULD choose a hammer or a nail gun.

    77. Re:Java by Anonymous Coward · · Score: 0

      When you say "smokes Visual Studio," I assume that you mean it uses considerably much more memory while also not providing any better execution speed (and with GTK much worse). Not even the much more bloated Whidbey beta (in comparison to VS 2003) can (yet) compete with Eclipse in raw heap usage.

      I have to say that I much prefer using IDEA to Eclipse.
    78. Re:Java by be-fan · · Score: 1

      I'm not going to say that Java is bad, it's just that it's rather limited. It get's the job done for a certain type of thing, but it's way more work in many cases than doing something another way. With regards to abstraction --- Java only let's you do abstractions that fit the classical OOP model. If you need a functional abstraction, then you're stuck.

      Let me give you a couple of examples:

      1) Mandatory strong typing (without type inference) is a PITA. When I'm doing incremental development, and lot's of refactoring, etc, I don't want to deal with making the type-checker happy. In particular, when I'm working on "hard" problems (100 lines of code that take a week to write because it solves a complicated problem), I want to concentrate more on the problem than on the language. When I'm done with that, I can go ahead and add type declarations to my interfaces if I think that somebody might make a mistake down the road. Even then, there is no point in adding type declarations to local variables in a code body, because the compiler can usually figure that out itself, and since I never write functions over a page long, you know what all the types will be anyway.

      2) Java lacks some key features that make it a pain to use. It has no lambdas, which means that instead of using clean abstractions like "apply this function to each element in the list," you have to use more verbose abstractions like "get the bounds of the list; iterate from the beginning of the list to the end of the list; for each list position, lookup the item at that position and apply this function to it." It also lacks multimethods (polymorphic dispatch on more than one argument), which necessitates complicated techniques like the visitor pattern.

      --
      A deep unwavering belief is a sure sign you're missing something...
    79. Re:Java by be-fan · · Score: 1

      This is bad because Java can get away with being a crappier language, because it's class library eases most of the pain. However, the minute you need to do something that doesn't have a pre-canned solution (eg: anything I do at work, which is totally out of Java's network-programming niche), then you have to deal with the limitations of the language itself.

      --
      A deep unwavering belief is a sure sign you're missing something...
    80. Re: Java by be-fan · · Score: 1

      I'm not saying that having a massive standard library is a bad thing. Indeed, Lisp was one of the first languages to have a larger-than-usual standard library (most of it's 1000-page standard covers it's library, rather than the language). However, the problem is that a large standard library masks the deficiencies of the language. If you're doing something that has no pre-canned solution, you've got to deal with Java the language, not Java the platform. Java, as a language, is not very impressive at all.

      --
      A deep unwavering belief is a sure sign you're missing something...
    81. Re: Java by Anonymous Coward · · Score: 0
      "Not having to re-invent the wheel is seen as a benifit."
      This coming from a man who has the following in his signature:
      "Need an efficent and powerful string library for C? http://www.and.org/vstr/"
    82. Re:Java by Anonymous Coward · · Score: 0

      No, a great hacker would have run a quick test to see whether Java++ generates the same code as ++Java in cases where the return value is not being used, to determine whether the sacrifice of the more elegant postfix operator would provide any increase in efficiency.

      No, a great hacker would realize that the postfix operator is not more elegant than the prefix operator and would always use the prefix operator because it can be more efficient in certain cases and it's easier to understand.

    83. Re:Java by TheLink · · Score: 1

      See cpan.org for large bodies of code that appears to be maintained. And even better - it's actually reused by many thousands of people.

      The geniuses/great hackers do the hard work and write tons of modules to deal with almost any situation the stupid coders like me would need. And the great hackers actually write the modules for _usage_, not to fulfill some PHB's or Market Droid's requirement.

      As long as the stupid ones are lazy and use the modules done by the great hackers, they write less code, and thus there is a smaller mess to deal with.

      Code reuse? Check.
      Maintainable code? Check.

      With Java the stupid and lazy typically HAVE to write more code. Have to write their own code to do common stuff like get the number of rows returned by the last SQL query, etc etc. WTF.

      --
  8. Its slashdotted.. by Anonymous Coward · · Score: 0
    1. Re:Its slashdotted.. by yppiz · · Score: 2, Informative
      Much of the Internet Archive crawl and processing code, at one point, was perl scripts, GNU text utils, and custom C to deal with sockets and IO. This may still be true, but I haven't seen the Archive crawler in a few years.

      --Pat / zippy@cs.brandeis.edu

  9. creativity plays its part by highwaytohell · · Score: 3, Insightful

    Did he mention that these Great Hackers have quote possibly some of the greatest creative minds in the world. Sure you have to know what your doing, but the ability to think outside yourself, see the bigger picture, is what makes these guys great. When you come across a problem that may seem impossible to get a work around for, these guys think and think, and they get their solution because they are able to see a myriad of different perspecvtives as a possible solution to a really tough problem. these guys are paid the big bucks because they do have that extra quality as well as being good hackers. i think thats what separates the good, from the great.

    1. 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
    2. Re:creativity plays its part by Bull999999 · · Score: 0, Redundant

      Just make a post that says "Bill Gates blows goats" and you too will get a +5 insightful my friend.

      --
      1f u c4n r34d th1s u r34lly n33d t0 g37 l41d
    3. Re:creativity plays its part by Anonymous Coward · · Score: 3, Insightful

      Bill Gates blows goats

  10. Re:Why are Paul Graham's web pages width-constrain by Anonymous Coward · · Score: 0

    >> it feels like reading text on an 80-column screen written by someone on an Atari 800.

    It's for all the faggots using netscape 2 and lynx, which apparently is the cool thing to do on linux.

  11. Re:Why are Paul Graham's web pages width-constrain by Burdell · · Score: 1

    Unless you had an add-on (or the hack from Antic IIRC that used a 4 column wide font), the Atari 800 only had 40 column output.

  12. Re:OT: Los Alamos's missing disks NEVER EXISTED! by Creepy+Crawler · · Score: 1

    I can attest to the strictness of classified or top secret information.

    My dad, and my friends dad were both in the navy as medium-high ranking officials. They both worked in comm, so much what they did was all classified or such. However the worst thing was reading manuals that were classified, as they had to count the pages before, write down what they read, and then re-count the pages with another officer to attest the fact.

    It was better to remember what you neded to know than to do the mound of paperwork for using classified or TS materials.

    Still, from what my dad told me (non-classified), I was seriously considering joining the navy/air force as communications.

    --
  13. Great hackers use Perl and Python? by putaro · · Score: 3, Interesting

    He knows an interesting set of people, considering that C didn't come up once. Is Linus Torvalds a great hacker? Apparently not because if he was he would have coded the kernel in Perl!!

    1. Re:Great hackers use Perl and Python? by Anonymous Coward · · Score: 0
      Is Linus Torvalds a great hacker?

      RTFA.

    2. Re:Great hackers use Perl and Python? by Jerf · · Score: 2, Interesting

      Is Linus Torvalds a great hacker? Apparently not because if he was he would have coded the kernel in Perl!!

      Linus is constrained by application domain.

      As C goes, the kernel is much, much cooler than any piece of software that size has any right to be. Sounds like greatness to me, at least the sign of a great leader.

    3. Re:Great hackers use Perl and Python? by Amiga+Lover · · Score: 3, Funny

      Apparently not because if he was he would have coded the kernel in Perl!!

      I put forward to you... vmlinux.NET

    4. Re:Great hackers use Perl and Python? by RedWizzard · · Score: 3, Insightful
      Is Linus Torvalds a great hacker? Apparently not because if he was he would have coded the kernel in Perl!!
      Don't be so obtuse. Perl is clearly not the best choice for a kernel, and nowhere in the article did it suggest using tools that are not fit for the job (in fact it specifically mentioned the importance of tools). Besides Linus has written a number of tools in Perl.
    5. Re:Great hackers use Perl and Python? by Colven · · Score: 1

      But, is Mr. Graham a coder? I know nothing about him (hence the question,) but that article gave me the impression that he doesn't spend a whole lot of time actually programming -- whether he's involved with it in general or not.

      If he's anything more than a programming enthusiast, overseer, or labor drone; shame on him for not knowing more about Linus and for not mentioning C.... otherwise, what's the big deal?

      --
      expletives welcomed
    6. Re:Great hackers use Perl and Python? by Anonymous Coward · · Score: 1, Funny

      "coded the kernel in Perl"

      Scariest... idea... EVER...

      Aaaaaannnnd now, introducing for the first time ever - the One Line Kernel!!!*

      *Line contains 6 billion characters, none of which are spaces, and is coded in logic sufficiently dense that gzip is unable to compress it. Any human being able to understand it should be removed to a padded room immediately.

    7. Re:Great hackers use Perl and Python? by Anonymous Coward · · Score: 0

      "is Mr. Graham a coder?"

      HAHAHAHAHAHAHAHA!

  14. Re:Why are Paul Graham's web pages width-constrain by pben · · Score: 2, Interesting

    You ever notice that magazines, printed on paper, have several narrow columns instead of one wide one? The eye can read a narrow column quicker and with less strain than a wide column. Web pages don't often do several columns, due to the scrolling problem but a narrow column still reads quicker. Your way is slower and harder on the eyes.

    Good design is good design because it helps the user get his task done quickly. One of the points he brought out in the article.

  15. Canadian Mullets by Anonymous Coward · · Score: 2, Funny


    I remember standing behind him [Trevor Blackwell] making frantic gestures at Robert to shoo this nut out of his office so we could go to lunch. Robert says he misjudged Trevor at first too. Apparently when Robert first met him, Trevor had just begun a new scheme that involved writing down everything about every aspect of his life on a stack of index cards, which he carried with him everywhere. He'd also just arrived from Canada, and had a strong Canadian accent and a mullet.

    Thereby *really* standing out as an nutjob oddball.

    1. Re:Canadian Mullets by chriskenrick · · Score: 1

      Trevor had just begun a new scheme that involved writing down everything about every aspect of his life on a stack of index cards, which he carried with him everywhere.

      Sounds like someone's been reading Getting Things Done

  16. 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.
    1. Re:Eric Raymond by Anonymous Coward · · Score: 1, Informative

      ESR has written less software than I had by the time I was an early teen.

    2. Re:Eric Raymond by Anonymous Coward · · Score: 1, Informative

      Eric Raymond is a mediocre programmer at best, a drunkard, and likes guns. Can't you come up with a better example?

      Mike Bouma

    3. Re:Eric Raymond by paskie · · Score: 1

      Eric Raymond isn't an exceptional hacker, but his work is certainly interesting. He's rather a documenter of the hacker culture and he does get some things right. I at least tend to agree with him on many things (certainly not on everything, of course). But he is just much further from the center of the hacker comunity now than he paints himself.

      --
      It's not the fall that kills you. It's the sudden stop at the end. -Douglas Adams
    4. Re:Eric Raymond by sql*kitten · · Score: 1

      ESR will tell you that you must be like him.

      Is this the same ESR who has no code in the kernel, whose configuration system is considered a laughing stock on LKML, who maintains termcap because no-one else can be bothered, and whose one major project, fetchmail is full of security holes?

      Just checking.

      Now I'm no code god myself, but I don't claim to be the authority on what passes for "hacker" and what doesn't. If, however, I did, I'd have a hell of a better claim to it than ESR.

    5. Re:Eric Raymond by JamesOfTheDesert · · Score: 1
      Eric Raymond is a mediocre programmer at best, a drunkard, and likes guns. Can't you come up with a better example?

      I wonder, then, if coding skills per se should not be the measure, but rather the broader intent behind the code?

      I've met many people who have great daftng skills; they can draw and paint like anyting, but their work was boring. Then there are those with limited technical ability, but with a much more invigorating vision that somehow managed to come through.

      While this is a big matter of taste, I think the Velvet Underground, for example, were far more interesting and influencial than, say, Yes, though Yes had arguably better musicians. The VU were better hackers.

      Probay better drunkards, too.

      --

      Java is the blue pill
      Choose the red pill
    6. Re:Eric Raymond by SigmaEpsilonChi · · Score: 1

      Let's just agree to a few ground rules: merely because one of us agrees with the assertions of another person, in the absence of details, evidence, and probably logic, neither of us will assert that individual gets unspecified things correct. We will instead say that we agree with some subset of their positions, and if we're feeling especially interested in being cogent, we'll specify which and why.

    7. Re:Eric Raymond by SigmaEpsilonChi · · Score: 1

      The measure of what, precisely? We need to decide what we're measuring before we can hope to postulate precisely how we can measure it. From your tangent about the Velvet Underground, for some reason, I don't imagine what you have in mind has anything to do with people that have insights on or develop useful software.

      If you want to define "hacker" to include ostracized net.kooks, then we could probably define a way to measure that such that Eric Raymond certainly is a "great hacker." That would be a nebulous departure from people that produce the majority of the work in a software development team. I suppose given the content of Paul Graham's article, though, that that would not be out of place, though.

    8. Re:Eric Raymond by paskie · · Score: 1

      Whatever. What I think he got mostly right? (From what I've read, I'm not that avid ESR reader... ;-)

      That's a fair portion of his major works.

      I disliked i.e. http://www.catb.org/~esr/writings/taoup/. He gets most things right there too but disturbingly many things he doesn't, while trying to sound too authoratitive. He describes the objectively widely accepted practices (one program one thing), mixing his controversial opinions in (on say Perl or vim). That's an ethical crime.

      I wanted to complain to him but since I wrote him few times regarding technical problems with his software and got no reply, I don't think he will care about this, unless I get my reply published somewhere ;-).

      --
      It's not the fall that kills you. It's the sudden stop at the end. -Douglas Adams
    9. Re:Eric Raymond by theParsley · · Score: 1

      > I wanted to complain to him but since I wrote
      > him few times regarding technical problems
      > with his software and got no reply, I don't
      > think he will care about this, unless I get
      > my reply published somewhere ;-).

      I'd give the complaint a try anyway, were I you -- I suspect that responses or not from ESR are mostly luck of the draw, due to necessary filters on large volumes of incoming email.

      For what it's worth, I had some rather trivial obsessive-compulsive-grammatical comments on a few of his posted documents, some months back. Being an eternal optimist, I sent along my crackpot opinions, and got two polite and thoughtful emails in response. A couple of the problems were fixed in the posted documents within a day or two.

      [Another one or two things he "reviewed" but didn't change -- those were some of the sharper "cracker" putdowns he indulges in here and there, which I thought came across too strong for any public-relations document from a "hacker historian", even a volunteer/self-appointed one (delete whichever is inapplicable)...

      Now that I've read more of his writing I'm not surprised he kept 'em, since they're pretty consistent with his style elsewhere.]

  17. I was thinking the article was good until... by Luveno · · Score: 1
    ... he got partisan on particular technologies (Java vs Python, NT vs OSS, etc).

    Sure-fire way to blow your cred. Right tool for the job and all that.

    1. Re:I was thinking the article was good until... by Anonymous Coward · · Score: 0

      When was NT ever the right tool for the job?

    2. Re:I was thinking the article was good until... by Tlosk · · Score: 2, Insightful

      He's not talking about the superiority of any language or implying that some languages have no use.

      Think of it in these terms, if you're a salesman selling yachts, looking at the type of watch a potential buyer is wearing can quickly help you identify persons of extreme interest who you should take every possible care to treat right. This doesn't say anything at all about the ability of a cheap Casio to tell the time or perform reliably. It's just saying that people who wear Rolexes are the type of people you're looking for if you are selling yachts.

      Similarly, Graham's suggesting that in his experience, great hackers he knows almost invariably enjoy using Python.

      I know it's easy to get defensive when someone looks dismissively at the Casio on your wrist, but to say that they shouldn't do so because you can tell time just as well as someone with a Rolex is missing the point.

  18. "why Microsoft developers get offices..." by Anonymous Coward · · Score: 0

    So the geeks working in the broom closet can have nightmares about having an office with a window facing a brick wall (no pun intended).

  19. When he starts comparing languages... by SnapShot · · Score: 5, Funny

    When he starts comparing languages or, to be more specific, makes the blanket statement that better hackers like Python over Perl I am reminded of the fact that the best hackers actually use OCAML and Objective-C.

    "No they don't", you cry, "the best hackers user Assembly and Visual Basic".

    "No, you're a fucking moron", someone else pipes up, "the best hackers use Pascal and COBOL."

    "No, you are a fuckwit," a voice from the back of the croud screams, "Fortran and Algol are the languages of the best hackers".

    "Quiet you fools," an elderly guru from the wings yells out, "I happen to know that the best hackers use Perl when they aren't dictating their programs to their secretaries to be outsourced to Taiwan to be compiled into Haskell"

    "Shows what you know old man", a kid in the front row sneers, "the l33t hax0rs use Lisp and C++".

    Well anyway, it looks like this might go on for a while, please enjoy the other comments while we try and work this out...

    --
    Waltz, nymph, for quick jigs vex Bud.
    1. Re:When he starts comparing languages... by Bull999999 · · Score: 2, Funny

      You left out binary on punch cards. Now that's "L33T HaX0rz sHiZ" yo!

      --
      1f u c4n r34d th1s u r34lly n33d t0 g37 l41d
    2. Re:When he starts comparing languages... by emacs_abuser · · Score: 1
      You left out binary on punch cards. Now that's "L33T".

      To be L33T, you'd need to know that the code used for punched cards is Hollerith.

    3. Re:When he starts comparing languages... by fyngyrz · · Score: 2, Interesting
      L33T, not.

      If you're really L33T, you program by swapping jumpers from one diode to the next. You dream about a front panel with switches, auto-increment dump into ram (imagine that, ram!) and in a decade or two, you actually get it.

      Now you bastards know how old I am. I program in Python and C these days, though.

      --
      I've fallen off your lawn, and I can't get up.
    4. Re:When he starts comparing languages... by Anonymous Coward · · Score: 0

      "the best hackers use Pascal and COBOL."

      I think, by any definition I am familiar with, we can safely rule out that particular claim.

    5. Re:When he starts comparing languages... by zsau · · Score: 1

      A kid using Lisp and C++ considers someone old for using Haskell? I think you broken your chronology.

      --
      Look out!
    6. Re:When he starts comparing languages... by robnauta · · Score: 2, Insightful
      "the best hackers use Pascal and COBOL."

      I think, by any definition I am familiar with, we can safely rule out that particular claim. Besides, maybe the best hackers in the world never shower, shave once a week, wear 10 year old T-shirts with stains, and (as a consequence maybe) haven't had sex in 5 years, or never at all.

      Should we still follow their livestyle blindly ? I don't think so. So it doesn't matter which language the Uberhackers use, who cares if they use Perl, Python or Ruby. I use what I am most familiar and productive in myself.

    7. Re:When he starts comparing languages... by Bull999999 · · Score: 1

      I'm not worthy! I bow to you oh super programming ninja L33T master!

      --
      1f u c4n r34d th1s u r34lly n33d t0 g37 l41d
  20. Then you don't know the right programmers by Anonymous Coward · · Score: 2, Insightful

    Spend some time somewhere like Perl Monks and you'll find out that there are a lot of competent Perl programmers who aren't sysadmin types. Or go and look at CPAN to see the variety of different kinds of software that are available in the Perl world.

    Furthermore I'd like to point out that Graham made a claim about the behaviour of hackers, not open source programmers. Most of the people who contribute to Sourceforge would not, in Graham's opinion, deserve the compliment of being called hackers. Therefore their aggregate choices are irrelevant.

    Disclaimer: I'm a fairly well-known Perl programmer.

  21. Re:Why are Paul Graham's web pages width-constrain by bruthasj · · Score: 1

    So, is Claudio Destro from Milan, Italy just an AstroTurf(TM) or a devout follower?

  22. Best quote from TFA: by zandermander · · Score: 1



    no startup can be the next Microsoft unless some other company is prepared to bend over at just the right moment and be the next IBM.

  23. interesting and biased by Anonymous Coward · · Score: 0

    the article makes some good points about hacker personality, but python has nothing to do with being a great hacker. it all depends on the problem you're trying to solve. I know plenty of great hackers, who are regularly produce excellent code. Some of the best hackers I know get there through persistence and independent thinking. Creativity plays a great part, but deep knowledge of a given subject is a better indication of a great hacker.

  24. Re:Why are Paul Graham's web pages width-constrain by Anonymous Coward · · Score: 0

    You ever notice that books, printed on paper, have one wide column?

    It's self-evident that "the eye can read a narrow column quicker" -- because there's less information there. That does not mean, however, that you can process large amounts of information more quickly if it is formatted in several narrow columns.

    The reason magazines and newspapers use narrow columns is so that they have more flexibility to route around the ads and pictures. Novels generally don't have this problem, so they don't bother.

  25. Re:Why are Paul Graham's web pages width-constrain by sridharinfinity · · Score: 1

    Probably he had dual monitors configured perfectly and broken his second monitor at some point of time, then after wondering how to re-configure it to use the single monitor.

    --
    unused account
  26. What staggering arrogance! by Anonymous+Brave+Guy · · Score: 0, Flamebait

    I've heard the name Paul Graham before, but never really read anything by him until this. I don't think I'll bother again.

    A few of his key opinions may have merit. There really is a certain personality type who matches the characteristics he describes, IME, and given certain other character traits (people skills, for example), they really can be the most productive guys to work with. However, a lot of that article is simply stating his own highly prejudiced opinions as if facts. This was the giveaway:

    But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT.

    Right, because no original and very well designed software ever gets written by Windows hackers. In fact, no self-respecting hacker would even go near Windows, especially if he wanted to get paid so he could afford somewhere to live, or he was offered a job on an interesting, bleeding-edge development project. Go open source, Linux R0x0rz, yada yada, blah blah. After all, cloning a clone of a clone business or network app while accusing Microsoft of never innovating is much more L337. The guy's like a 13-year-old Slashbot wannabe, and you could summarise the content rather more concisely as "Y'know, INTPs often make good hackers."

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:What staggering arrogance! by joeldg · · Score: 1

      have you read the authors bio?

      one, this is in effect his blog...
      two, the guy is "listened" to because of where he comes from and what he has done.

      Your specific gripe about NT.. He is not talking about windows hackers, he is talking about guys who demand "control" (RTA.. again..) and you will not get that control in windows.. I am sorry to burst your bubble, but it is just not there.

    2. Re:What staggering arrogance! by Anonymous Coward · · Score: 0

      If google had started with NT, they would have had to hire at least a dozen people extra. 10 to rotate reboots on their thousands of machines, and two to administer the licenses. Any bugs couldn't be sorted out, etc.

      NT was good for what it was marketed for, but an internet startup?

      I know exactly what he means. I had a small job where I had to program a system using a product with a control language. Most of my time was spent working around the bugs in the language. It was very difficult to get the equipment working as necessary. The job was boring, unsatisfying, and I haven't taken on a similar job since. I'm not interested in being in an industry that demands that sort of stupidity.

      Derek

    3. Re:What staggering arrogance! by Animats · · Score: 1, Insightful
      Agreed.

      NT was way ahead of anything else at the time, say, circa 1997. UNIX and graphics were not yet playing well together at that point. The Mac was still stuck with an unprotected single-thread OS underneath. Sure, you could run Apache on a Linux server, but realistically, that's all you wanted to run on Linux at the time.

    4. Re:What staggering arrogance! by Bert690 · · Score: 1
      have you read the authors bio?

      Yes, and it is remarkably underwhelming. I love how he takes credit for Bayesian spam filtering from his rather naive 2002 proposal when far more sophisticated proposals (e.g. Sahami et al.'s 1998 paper on junk mail filtering) preceed it by a number of years. His proposal would never pass peer review at any reasonable venue since there's absolutely nothing new about it (and it is in fact flawed, though to be fair, many of the flaws were fixed in his followup article).

      Another joke is how he claims to have written the "first web-based application". Click the link, and then you get the caveat: he defines "web based application" very precisely to fit rather arbitrary aspects of his app. Bzzt.

    5. Re:What staggering arrogance! by Alien+Being · · Score: 1

      "NT was way ahead of anything else at the time, say, circa 1997. UNIX and graphics were not yet playing well together at that point."

      Holy crap. I've entered the bizarro world.

    6. Re:What staggering arrogance! by Anonymous Coward · · Score: 1, Insightful

      In 1997? I had been using X11 on *solid* DEC workstations since 1992 or so, and Unix was more than capable of playing well with graphics. Hell, I was using X11 on relatively solid Linux workstations in 1993, and getting decent performance out of it!

      NT 3.51 was a decent operating system, designed as it was by one of the experts on VMS. NT 4 (which was released somewhere around 1997) was an enormous step backwards, putting the graphics code into the kernel -- a step that it took until Windows 2000 to recover from.

    7. Re:What staggering arrogance! by Anonymous Coward · · Score: 0

      Are you stupid, or just trolling? What about SGI? IRIX? And I mean come on, NT in 1997? What? Granted, I did use NT 3.5 and NT 4 at work around that time, but NT was extremely uncommon in those days. It didn't really begin to gain widespread use until Win2k came out. And graphics? I mean, what? Really, what on earth are you smoking?

      In those days, let me tell you, anyone doing serious graphics work (whether it was CAD, rendering, design, or whatever) was using IRIX on Silicon Graphics machines. Why? Because they were light years ahead of anyone else on Graphics.

      Yeah, ok, no one used Linux much in businesses in those days. But Linux is not UNIX. And Linux was begun in 1991! That would have made it a whopping 6 years old in 97. I was running Debian in those days but the community was nothing like it is now. Much less mindshare. Solaris dominated the server market in 1997, Linux wasn't even a contender.

      But seriously, NT? Graphics? Please. Of all the strengths to attribute to NT, graphics, it's laughable.

    8. Re:What staggering arrogance! by Animats · · Score: 1
      One of the big features of NT 3.51 is that OpenGL would play together with the windowing system. Microsoft bought Softimage and moved that product over to NT. That was the beginning of the end for SGI workstations. 1998 was the year of the big switch. In 1997, if you went to a major animation shop, everything was SGI. By 1998, the newer machines were NT, and by 2000, the SGI machines were gathering dust.

      The X client/server approach has never meshed well with hardware 3D graphics. Retrofitting 3D into Linux has been something of a hack, and it's still not well integrated.

  27. java duuuudes by joeldg · · Score: 2, Interesting

    I was reading through that article and when I got the point he makes on Java (which I will admit to sharing his point) all I thought was..
    "Oh great, now the article will only have posts from the Java duuuudes who resent anything not done in java"
    Truth be told and after thinking back through my ten years working as a programmer in many companies, I agree, I have *never* met a true hacker who programmed in java, and I don't think that is a bad thing. In fact, java is what they teach in college, so, it goes to show that it is what the "average" person is going to be using. There are a lot of java jobs (not jobs I would want, and in fact would prefer to sling coffee at a starbucks than work with it again) and they are there for the people who know java.
    However, I am curious about python as the language of choice, as I would think that C would trump python, but either way, python does rock hard and seriously. (though python specific jobs are just not out there as much).
    Anyway, back to my point.
    As a side to that article, hackers having that ability to concentrate, yes.... They do..
    Most all of them have some form of ADD or OCD however to counterbalance that ability to focus on things they are intense on.. Wandering around a toy store with a hacker will teach anyone patience.
    Paul Graham I feel has very good line on the pulse of this industry.

    1. Re:java duuuudes by kaffiene · · Score: 2, Interesting

      All I can say about that is that I am a long term hacker. I LOVE C, C++, Python, LISP AND I love Java too.

      I really enjoy C for low level hacking - in fact, I've done a bit of asm as well, but I prefer C.
      I really enjoy Python for scripting goodness (small, fast to write). And likewise, LISP rocks for its organic approach to code production.

      But Java is very cool for what Java does (large, stable, maintable).

      I find myself time and time suprised that it just doesn't seem obvious to experienced developers who I assume populate /. that this is simply a case of the right tool for the job. But no, yet again we get the same old "anyone using Java must be defective" meme. Tools are just tools

    2. Re:java duuuudes by Tlosk · · Score: 1

      When you say there aren't that many Python jobs out there, I suspect that's part of the reason why he found it a useful metric. Even if Java were great (ignoring the observations about Java avoidance), if most people use it it wouldn't be a possible tool to discriminate the top 1%.

      Python users are those who have enough interest/curiosity of their own or for personal project to devote the time and energy to become proficient in Python. Which ties into some of the defining characteristics Graham gives for "great hackers."

    3. Re:java duuuudes by Trinition · · Score: 2, Insightful

      I have *never* met a true hacker who programmed in java

      Pleased to meet you.

      A true hacker would know that there is no "one language". I've "hacked" together scripts in shell script, batch, EMCAScript, VBScript, and yes.. Perl! I've also written applications in BASIC, C, C++, Java. Many of these applications started life as quick 'n' dirty scripts. As I needed better maintainability, I've rebuilt them in the latter languages because they become easier to extend and maintain.

      I recall the day when Perl was the "Practical Extraction and Report Language". Now you can build entire geek community websites out of it. What happened? Perl grew up. It gained namespaces, OO-capabilities, became more consistent, etc. Not all scripting languages have this (i.e. batch files, yuck!). Some develop them overtime (look at the great strides that PHP has made since itself was a bunch of scripts written in another language). So even the best hacker tools mature. Does that make them less of a hacker tool, or more of a hacker and non-hacker tool?

      Oh, and as for why anyone would program in Java? Well, personally, I have a wife and kids to feed. It just so happens that my bosses pay me to write applications that deploy to WebSphere servers. While I could use Jython, or probably some strange Java-Perl bindings that no doubt exist, I would be quickly fired leaving my family in an unreliable state of upkeep.

      So, I "hack" in the evenings and on weekends. I "hack" at work to help get my job done. And you know what, sometimes I even do it in Java.

      BTW, Paul Graham just went down several notches on my respectibility meter. What an idiot.

    4. Re:java duuuudes by rreyelts · · Score: 1

      What does it take to be a hacker?

      I've been spending some of my recent spare time writing the dynamic recompilation core of a Z80 emulator. I'll probably shoot for the 68000 next. http://cottage.consolemul.com/

      The project before that, I wrote a bytecode weaving tool that transforms Java 1.5 bytecode to Java 1.4 bytecode http://retroweaver.sf.net/

      Java has an overwhelming share of mediocre developers, but that doesn't mean Java developers can't be "hackers".

    5. Re:java duuuudes by Anonymous Coward · · Score: 0

      I'm not going to comment on the merits of Perl/Python/Java and their relevance in answering the "is he a great hacker" question, but I will say this: anyone who claims to be a hacker, isn't. Prefixed with great even more so. While we geeks are certainly an arrogant bunch, we aren't that arrogant. Because great hackers (like great mathematicians, physicists, jugglers, musicians, etc) strive to be the best they can be and enjoy working with the cream of the crop. And because of this, they constantly surround themselves with their peers.

      Note I said peers, not underlings or students.

      Because they do this, because they respect intelligence and skill, they are always around people who are smarter and more capable than they are. And unless they are so good that they have never met anyone remotely at their level (there can be only one of these, really, if you think about it, so odds are, you are not it) they will be extremely reticent when it comes to describing themselves as great -- because the people they respect and seek to emulate are all invariably so much better than they are.

      A hacker, a great hacker, these are titles of respect confered upon you by your peers. If you need to call yourself one, well, I hate to hurt your feelings, but you simply aren't.

      As for the Java thing, well, I'm sure there are great hackers that enjoy programming Java; after all, there are assembly, Cobol and INTERCAL hackers out there too -- no accounting for taste. But anyone who claims to be a hacker or elite isn't.

      Which puts you out of the running, friend.

    6. Re:java duuuudes by Anonymous Coward · · Score: 0

      "As a side to that article, hackers having that ability to concentrate, yes.... They do.."

      What? I'm sorry, I wasn't listening did you ... what was that? ... Man, the girl has big ... Huh? ... Ooo, pie!

    7. Re:java duuuudes by sql*kitten · · Score: 1

      I am a long term hacker. I LOVE C, C++, Python, LISP AND I love Java too.

      If you have strong feelings about ANY technology, you have abandoned objectivity and are no longer an engineer. An engineer has no emotional attachment to his tools, they are means to an end, nothing more. While an engineer will appreciate fine tools, he will NEVER choose the tool before understanding the job at hand. If another tool is better suited, he will lay down the one in his hand without hesitation or regret. That's how it is.

      The same is true for artists, BTW. Show me a painter who loves his brushes or his easel. What engineers and artists love is their SUBJECT. Tools are, well, just tools.

    8. Re:java duuuudes by joeldg · · Score: 1

      hahahahahahahaha.. ... oh.. where was I now....

    9. Re:java duuuudes by kaffiene · · Score: 2, Insightful

      I'm a painter as well and I love oil paints. I think your idealised Engineer is just that - an ideal. In practice, I don't think people who make software are like engineers, or like scientists, I think many software creators are like painters. And like painters, I think software creators have affection for their tools.

      Show me someone who has just created their first language with flex and bison and doesn't get a bit of a buzz out of it. Show me someone that has architected something beautiful but cannot see the beauty in it.

      No, I think you have an unrealistic view about software. And if I'm no longer an 'engineer' I'm not sure that's something I really care about, never having claimed to be building bridges in the first place.

  28. True languages of hackers? by Anonymous Coward · · Score: 1, Funny
    1. Re:True languages of hackers? by DMUTPeregrine · · Score: 1

      And the sad thing is, I've used BrainFuck for non trivial tasks. When combined with perl (so it can use things other than stdin/out) it's actually a rather interesting language.

      --
      Not a sentence!
  29. Offices Rock! by billstewart · · Score: 3, Insightful
    Peopleware by DeMarco & Lister, was a fairly good book on software and development organization productivity (and I assume the second edition is still good...) One of their points is that offices are really important, because programming involves a lot of deep focus, and in a cubicle environment, it's much harder to tune out interruptions and stay focussed. Sometimes you need to talk to other people, but when you need to concentrate, you need to concentrate. Two-person offices are usually an ok compromise - you get some social contact, and you get a bit more interaction with other people and projects, but you can still ignore your officemate except if he's having a speakerphone conversation. And of course, if you're into Extreme Programming, two people is probably the perfect number...

    Not all jobs are that way - sometimes overhearing what the other people around you are talking about is more useful to overall productivity. And some people can concentrate even with lots of background noise. But for a lot of people, offices would have been more productive than cubicles.

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  30. right on! by siculars · · Score: 1

    this guy knows what he is talking about. dont bore me with the minutia. dont bore me with the idiotic user interface garbage. i need quiet. i need equipment and tools. and above all else... i need to love what i am doing. and i do love computers and programming them. the language doesnt really mean much though.

  31. AS/400 by Bob+Cat+-+NYMPHS · · Score: 2, Interesting

    He wrote At a startup I once worked for, one of the things pinned up on our bulletin board was an ad from IBM. It was a picture of an AS400, and the headline read, I think, "hackers despise it.'' [1]


    You bonehead, what a MARKETEER thinks is a 'hacker' (that is, a criminal) hates the AS/400.

    *This* hacker thinks the AS/400 is the most secure, uncrashable system extant. Go ahead, try to gain superuser (QSECOFR)on an AS/400. You can't. AT ALL. Even QSECOFR cannot change a system program to do something it's not supposed to. Go ahead and try to crash one, I've never seen it done short of a lightning bolt.

    BTW, that footnote in his article said nice things about IBM Thinkpads. Sure they are lovely, but PCs are TOYS compared to the REAL computers.

    1. Re:AS/400 by DaveJay · · Score: 4, Insightful

      I believe that he mentioned this because the guys at the startup viewed 'hacker' to refer to themselves, not to the crackers that they knew the marketers intended, and that they probably did in fact hate working on the AS/400 -- thus making the truth of the headline (for them) ironic.

      I thought it was pretty funny, actually. :) Since, as you point out, the AS/400 is a secure box, the humor comes from the headline being true in both a literal AND an ironic sense simultaneously.

    2. Re:AS/400 by Bob+Cat+-+NYMPHS · · Score: 1

      Well, perhaps his co-'hackers' (like rtm) would prefer to screw around getting their ecommerce software written in LISP to scale across a bunch of flaky PC hardware, but I can write AS/400 software on the smallest one (7 users) and it will run *unchanged* on the largest one (millions of users). How can you hate that? You can even use C if you need the headaches.

      Hackers don't screw around reinventing the wheel, or using a blunt tool when there's a sharp one available.

    3. Re:AS/400 by bubkus_jones · · Score: 1

      Yeah, the AS/400 is a nice system, though I was having a hell of a time trying to understand/program for it (which caused me to despise it at the time).

      Tis too bad that they're not commonly available to the public, I'll probably never have access to one again.

    4. Re:AS/400 by Bob+Cat+-+NYMPHS · · Score: 1

      Five years ago, someone was selling a trailer-load of B20s at the Trenton Computer Festival for $50 each. You can find a newer one for less, I'm certain of it (thus spake the guy who owns a System/36 :). The software is transferable now, too, so you don't need to ghet it from BIM anymore. Just find one with whatever ILE stuff you want to play with.

    5. Re:AS/400 by 19thNervousBreakdown · · Score: 1

      On at least 50% of the AS/400s I've ever seen, the password for QSECOFR is... QSECOFR. I mean, hospital insurance submissios systems, filled with patient records and billing information... QSECOFR. wtf.

      --
      <xml><I><am><so><damn>Web 2.0</damn></so></am></I></xml>
    6. Re:AS/400 by Bob+Cat+-+NYMPHS · · Score: 1

      Shh... that was supposed to be our little secret!

      No matter how secure a system CAN be, it only takes one idiot to open it up wide.

  32. Esoteric Languages by Anonymous Coward · · Score: 5, Interesting

    I consider myself to be somewhat of a seasoned hacker. I do hours of pretty intense C programming (Linux kernel code) on a daily basis. I feel that I have mastered the C programming language. Sit me down with any project written in C, and I will be able to (at least syntactically) figure out exactly what's going on with just a glance. I feel absolutely confident in my ability to easily slam through any task in C, without having to resort to any reference guides or manuals.

    Now that I've established myself as a cocky elitist bastard to the Slashdot crowd (or do I just fit in now?), I would like to make one thing clear: I hate C.

    I hate memory corruption (a.k.a. segmentation faults for the rest of the world). I hate explicit types and declarations. I hate casts. I hate memory management (kalloc, kfree - a.k.a. malloc, free for those alien folks off in userspace). I hate iterators. I hate list structures assembled with pointers. I hate pointers for that matter. All that C really does for me is provide me with activation records during function calls (okay, and cross-platform compatibility). The only thing I like about C is the fact that you can compile it and it's fast.

    I hate Java. I hate class cast exceptions. I hate null pointer references. I hate virtual machines. And I still hate iterators.

    I hate Perl. I hate interpreters. I hate pathetic attempts at object oriented behavior.

    I hate Python. I hate C++. I hate PHP. They all suck, all for (more or less) the same reason: run-time errors.

    Enter Objective Caml. More likely than not, when you've got your O'caml program compiling, it just works. No run-time errors, like memory corruption, nonsense casts, class cast exceptions, or null pointer references. You can compile it down to native code, and it runs just as fast as C in many (if not most) cases. There is a complete standard library with pretty much everything you would ever want. There are hooks into GTK and Mysql, among other C libraries. You have real objects, done in a halfway decent manner. Persistent data, by default, exists in a structure (like a list or a type), as it should. Functions are first-class citizens. Iterative structures are possible, but usually not required. Tail-end recursion introduces no stack overhead. Algorithms implemented in O'caml just look elegant, like lambda calculus expressions.

    The problem, of course, is that it will take me several more years before I get to be as efficient in O'Caml as I am currently in C. And anyone who comes in after me to maintain the code will probably know C much better than O'Caml. This means that for any userspace projects that I do at work, it's gotta be in C. I can get by in C, because I am a very disciplined coder, and I know all the quirks and tricks to developing and maintaining good C code. Occasionally, I will get a nightmare mystery segfault in a very large project, and I will curse C and yern for O'Caml, but I must persist.

    At the end of the day, my own Open Source projects that I do on nights and on weekends are in Ruby (if they are web apps) and O'Caml (otherwise). This doesn't necessarily mean that O'Caml is the best language for any given project (mainly do the competency of the employees, current and future, with regards to O'Caml). Maybe in about a year or so, after writing a few Open Source projects in O'Caml on my own time, I will feel confident enough to suggest I use it for a project at work. Even then, it will be a hard sell, despite the fact that it is superior to C in almost every way.

    So my point, if I have one, would probably be that true hackers like to experiment with esoteric languages that the rest of the world knows little about. The shear number of programmers out there who know C and Java present a significant barrier to entry for elegant languages like O'Caml. I suppose that getting the academic types to emphasize languages that solve many of the problems that have plagued computer languages for the last 30 years might begin to help with the situation. Until then, I'll be firing up gdb...

    1. Re:Esoteric Languages by nawlej · · Score: 1

      I'm sure we are all refreshed and challenged by your unique point of view. So, basically, what you are saying is, just because there are standard languages out there that everyone has come to know and use, we should completely bow and use your language of choice because you hate all others? That's bullshit. I'm not a hacker unless I write something using a "non standard" language that 80 percent of us dont even know? (ad nauseum) Honestly, no offense, but who gives two shits whether you prefer one language over another? IMHO, when you adhere to thinking like that, you SERIOUSLY limit what you are truly capable of doing. It's not about trying to make your language of choice look like the glory boy of its day, but, as posted previously (many times), getting the job done with the best tool possible. Why am I going to write something in O'Caml if PHP will help me get the job done quickly because of the readily available tools to me? Oh, I forgot, because I might need to use ELEGANT Lambda Calculus Expressions. Nope, sorry, I'm still not convinced. I'm going to stick with PHP or Perl for that (which also work well with MySQL, you didnt point that out). When I need something that is a little beefier (maybe a MODULE for PERL, oh, I forgot, we're hating that too), I will look at writing it in C or something comparable for the task. Im sorry you hate a language merely because of run time errors. Woah! What a concept, a runtime error! All coders, great or small, have run time errors at some point. Its a fact of life. Run time errors are one of the few inevitables in your life. You will pay taxes, you will die, YOU WILL HAVE RUN TIME ERRORS. Great hackers identify the need to work through those errors to become better at what they do. Just because it's easier on you doesn't make it better. I agree, we all have our languages of choice, but please don't cram it down my throat why the rest of the world should adhere to using it and promoting it. I mean, its already pretty full of the Deja Moo (if you dont know what that is, google it.) we all hear on a daily basis as it is! :-)

    2. Re:Esoteric Languages by Anonymous Coward · · Score: 0

      "I consider myself to be somewhat of a seasoned hacker."

      What was that guy in that article thing saying about how the greats don't talk themselves up?

      also, would you like some cheese with your whine?

    3. Re:Esoteric Languages by Anonymous Coward · · Score: 0

      Thanks for the info on O'caml. I've been vaguely aware of it for a while, but you've just motivated me to get serious about learning it. If someone knows Ruby but prefers O'caml it must be worth spending some time on..

    4. Re:Esoteric Languages by Anonymous Coward · · Score: 0

      Hey! We may be twin brothers! :) But, I also like C/C++ as much Ruby/OCalm/Prolog. Each one owns a piece of my brain. But it's algo good to know the other ones (Java alike), at least, when I talk about the horrors of Java, I'm sure about what I'm talking.

    5. Re:Esoteric Languages by joeykiller · · Score: 2, Interesting
      At the end of the day, my own Open Source projects that I do on nights and on weekends are in Ruby (if they are web apps) and O'Caml (otherwise).
      Aren't you contradicting yourself here? You say one of the reasons you hate perl because you hate interpreters. That makes me curious as to why you choose Ruby for your personal projects? As far as I know Ruby is as interpreted as Perl.
    6. Re:Esoteric Languages by master_p · · Score: 1

      Iterators in C? you must have been modded as 5, funny!

    7. Re:Esoteric Languages by Anonymous Coward · · Score: 1, Interesting

      I can see your point very well. Actually I fully agree, except that my language would be lisp.

      I have written large projects in C++, I am fairly well versed in C++ meta programming and all kinds of fancy methods. I like C++, but I see how much money the company I'm working for would have saved if it could just find a group of good lisp hackers. It would have been possible to do the whole system with 1/10th of the number of people that we use today.

    8. Re:Esoteric Languages by BerntB · · Score: 1
      So, basically, what you are saying is, just because there are standard languages out there that everyone has come to know and use, we should completely bow and use your language of choice because you hate all others?
      No. What he said, basically, was that in his reasoned opinion, based on experience with lots of languages, this language was better. He (-: obviously not a she :-) also acknowledged the point that support from e.g. other people would be a problem, so he'd have problems using it at work.

      Your flame was not relevant and probably reflects more on you than on the AC.

      (I don't know anything about Caml, OO or not, so I can't have an opinion on his statement that when you express ideas in it, it becomes so clear that it results in fewer runtime errors.)

      My favorites are Perl and Lisp. I've mostly done C and C++ in my too long life.

      --
      Karma: Excellent (My Karma? I wish...:-( )
    9. Re:Esoteric Languages by Anonymous Coward · · Score: 0

      your un errogent moeran. o'camul wil never be papulir becuz it haz an apastrofee in its name, wich meens that it hass to be escaipt wen uzing it on the comand lien. thet sux reele reele bad.

    10. Re:Esoteric Languages by elronxenu · · Score: 2, Insightful

      I hate Perl. I hate interpreters. I hate pathetic attempts at object oriented behavior.

      Perl OO is actually very elegant. Let's check the three primary characteristics of OO, against Perl:

      • Inheritance - tick
      • Encapsulation - tick
      • Polymorphism - tick

      Inheritance - How much "overhead" is there in creating a new class in perl? Almost nothing; simply set your package name and then start writing methods. Perl takes care of inheritance, even multiple inheritance on every method call. Since objects are usually created as hashrefs, there's no ambiguity about the contents of an object which inherits from multiple parent classes.

      There's no need for separating declarations and definitions - just "use" the package names which you need - typically only when instantiating new members of those classes.

      Encapsulation - probably perl's biggest advantage is that the hashref (associative array) is a first-class datatype in the language. There is no need for container classes, because you can store anything you like in a hashref. Hashrefs handle easily many real-world problem domains: categorisation of source data (e.g. sum by month), easy creation of data structures of arbitrary complexity, dynamic modification of said data structures. Programmers spend less time thinking up elegant designs for linked lists or btree structures to hold data. A hashref neatly encapsulates an object's instance data and it permits inspection. Sure it's possible to change a value inside a hashref without going through a class's setting method - but then, it's not perl's job to set the rules of object access. You set the rules yourself and you're solely responsible to follow them. Getting back to the hashrefs though, most importantly the use of hashrefs means that there is no need to to declare every single item of instance data which a class has - each class can add to and take from its instance data at will.

      Polymorphism - a perl object is a reference to something, blessed into a class. Any perl code can call an object's methods without having to know anything about the class of the object. In C++ for comparison, a reference needs to be declared as some class, and only the methods defined for that class can be used on it. What if you want to pass in references to any of several classes? Well, all those classes have to have a common parent class, and only the parent class methods can be used by the code which is using the reference. What if they don't have a common parent class? Well that's tough, but there are a lot of kludges which C++ coders can use to get around the language restrictions, like casting references and templates. Perl OO has none of these design flaws - you have a reference, doesn't matter what it is, you can call its methods.

      Memory management - unlike C for example, perl has automatic memory management. Storage is returned to the heap when it goes out of scope or when the last reference to it is deleted. Sure C++ has "new", but you have to know when to call "delete".

      First class string support - most programs use strings a lot, and it's very convenient to have first-class string support within the language (and automatic memory management so strings can be extended without overflowing a buffer).

      First class regex support - again, very convenient, very flexible, very quick to write

      Certainly perl can be used to write hideously ugly and unmaintainable code - but then it can also be used to write neat and well-structured code.

      I came from a C / C++ background. I found coding OO perl to result in much more natural OO design than was possible in C++. I could focus on designing a system of independent classes which provided functionality, and a set of interoperable classes which solved the application problem, rather than trying to fit my needs into what C++ could do, or even worse spending time trying to get around the limitations of C++. There's a reason that C++ is so devoid of public class

    11. Re:Esoteric Languages by Anonymous Coward · · Score: 0

      I'm like you, a old fortran hand, driven through C++ and Java, murdered by Perl who thought he had found true love in Ruby.

      Then I met Erlang - a distributed functional language where the language is designed to work with hardware failure. Robustness and error handling is entirely seperate from the program logic, so you do no defensive programming (pass a negative number into a routine that expects a positive parameter the process will and should explode and your programme will continue to function - magic!) Erlang is Open Source, it has a fantastic toolkit with real-time stepwise n-physical-tier debugger where you step from a line of code on one machine to another line on a different machine... You can trace all your machine-to-machine comms in real time. It is trivial to programme a state diagram, and guess what most dynamic web sites contain only processes that are state machines... Erlang is simply the muts nuts...

    12. Re:Esoteric Languages by crucini · · Score: 2, Insightful
      Sorry to tell you this, but you are a little out of your depth. The poster to whom you are replying clearly explained that he knows and uses a variety of languages and isn't speaking from zealotry.

      Im sorry you hate a language merely because of run time errors. Woah! What a concept, a runtime error! All coders, great or small, have run time errors at some point.

      Different languages apply different degrees of rigidity at compile time. One drawback to scripting languages is that mistakes that could have resulted in compile-time errors become run-time errors instead. Grandparent was making a very specific point, and anyone experienced in C and Perl should have understood that point.

      He isn't advocating that you switch to O'Caml - he's not even ready to switch himself, in professional life. He is describing the mindset that comes to someone who has used the conventional languages heavily for many years. You may arrive at that mindset yourself one day.
    13. Re:Esoteric Languages by gokeln · · Score: 1

      Yah, I'd love to pick up and use O'Caml, but the biggest barrier is interfacing with other libraries. I'm an embedded programmer, and often, I have to get control of a device with a canned software library. Correct me if I'm wrong, but the current state of O'Caml is that interfacing to these kinds of 3rd party libraries (using standard DLL or shared library interfaces) is almost unworkable. The thing that makes Python and Perl (and Java, too) shine as languages is their rich access to huge libraries. Without that, they'd never be the successes they are.

      The researchers at INRIA have their noses in the air and refuse to understand that without good native interface support, their wonderful invention is destined to languish in obscurity, while other "lesser" languages experience greater success.

      I'll keep looking at the community of O'Caml to see if they wake up and build this in. Until then, I'll be destined to stick with those that have the complete package.

      --

      There's no time to stop for gas, we're already late.
    14. Re:Esoteric Languages by Wastl · · Score: 1
      I'm not a hacker unless I write something using a "non standard" language that 80 percent of us dont even know?

      You didn't get the point of the original poster (who was very convincing in his argumentation). Great hackers are curious (that was also one of the points in Paul Graham's article). They like using new, interesting things. They like to experiment with languages and find pleasure in finding their limits (ever tried to program "hello world" in brainfuck?).

      Sebastian

    15. Re:Esoteric Languages by Wastl · · Score: 1
      Yah, I'd love to pick up and use O'Caml, but the biggest barrier is interfacing with other libraries.

      You might want to give Haskell a try then. It has excellent support for interfacing to foreign languages (at least the GHC compiler), and I prefer it over OCaml for its clean design.

      Sebastian

    16. Re:Esoteric Languages by SigmaEpsilonChi · · Score: 2, Insightful

      I'm uncertain what you mean when you suggest that "the current state of O'Caml is that interfacing to these kinds of 3rd party libraries (using standard DLL or share library interfaces) is almost unworkable."

      Are you referring to the ability to construct bindings for shared libraries written in C? Are you referring to being able to generate bindings to shared libraries written in C? Are you referring to being able to write short annotations for introducing symbols from shared libraries written in C in OCaml code?

      I suppose one of the problems with being vague is that people have no idea what you're asking.

      You can write bindings to C libraries by hand using the FFI, like you can with Python, Perl, or Java.

      There are ways of generating wrapper code for interfacing to shared libraries, like CamlIDL and SWIG. You could also generate interfaces for use with the Dl module.

      The Caml Humps site is a good place to start looking for some of the presently available libraries.

      I think a far more annoying aspect of Objective Caml is that it is not currently possible to have natively-compiled dynamic shared libraries written in Objective Caml; all programs will be statically linked to Objective Caml libraries. You can load dynamic bytecode, but that's really just not the same.
      There once was a program for wrapping Objective Caml code into a DLL but I don't think it has been kept up to date, it's a dirty approach, and as far as I recall it only worked on Windows.
      There's the SCaml effort, but it seems to be falling behind, is incomplete, and only works on a few platforms.

    17. Re:Esoteric Languages by SigmaEpsilonChi · · Score: 1

      Oh, and lest I forget there's also the matter of F# which provides a subset of the Objective Caml language with interoperability with .NET. There's also OCamlIL which aims at being a more faithful implementation of Objective Caml for the CLR.

    18. Re:Esoteric Languages by nawlej · · Score: 1

      (ever tried to program "hello world" in brainfuck?).
      I had heard of it....Read a little on it...Simple to the point of going crazy. Worth taking a look into on a rainy day or two. Wouldn't dream of using it on a practical level though :-)

    19. Re:Esoteric Languages by gokeln · · Score: 1

      Thanks for the thoughtful reply. Sorry I was vague.

      --

      There's no time to stop for gas, we're already late.
    20. Re:Esoteric Languages by yermoungder · · Score: 1

      "All coders, great or small, have run time errors at some point. Its a fact of life."

      Sorry, no - that simply isn't the full story anymore. There is no need for your code to ever be delivered with a run-time error (and by that I assume we're talking about /exceptions/ here, not something that doesn't meet a requirement) anymore.

      There are tools from companies like SofCheck for Java, SPARK for Ada or PolySpace for C/C++/Ada that can identify these before they are ever run.

      To me the glass is half full... :-)

  33. read more closely by Anonymous Coward · · Score: 0

    You said:

    ...he's very wrong that open source programmers working on their own time are better judges of language power than others.

    He said:

    ...is what hackers choose when they can choose freely-- that is, in projects of their own.

    There's a difference. (Emphasis added.)

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

    1. Re:Java Vs. perl by joeldg · · Score: 1

      sorry..
      gotta go with (c)
      at least, given those three options... Janitors have a lot of time to think, and most sysadmins spend all their time configuring stuff and not developing things..
      The janitor, yea.. he probably goes home and cranks out code. ;)

    2. Re:Java Vs. perl by Michael+Crutcher · · Score: 4, Insightful

      I think our major disagreement stems from our preferred definition of hacker. You seem to think that hacker means sumpreme uber UNIX geek. I have no doubt that you're a good sysadmin but I think that you really have no idea what the "Real World" is when it comes to programming.

      My definition (and I believe it's fairly close to what the article author meant) was that a hacker was someone who used a programming langauge to solve hard problems. Under my definition you're clearly not a hacker. Sure you use perl to help automate your every day tasks, but these are certainly not "hard" problems. The mere fact that you can get the job done with a few hundred lines of code is adequate proof that these problems aren't hard. Hard problems take a lot of smart people working together to solve.

      I dare you to write an application that is scalable, secure, accesses data of a variety of types, sends instructions across the network, maintains transactional integrity, and more in perl. I'm sure you could do it, but I certainly wouldn't want to maintain it. Besides that you'd have to start from scratch and create a bunch of library code before you could even think of starting.

      This is why a lot of people use java to solve hard problems. Its large user base ensures a gigantic amount of reusable code in the form of extremely robust libraries and frameworks that have already been created. The language itself is not really anything special, but the ability to solve hard problems with the language is pretty impressive.

      In that sense (b) java programmers are far and away the most likely people to be hackers in your list. Just because you don't understand what they're doing doesn't mean they aren't hacking.

    3. Re:Java Vs. perl by Trinition · · Score: 1

      He's right.

      Or, you're both wrong.

      Your definition of hacker is just that -- "your definition". My definiton of a hacker is someone who tinkers with things outside of the mainstream way, figuring out how they work, why they broke, or ways to get things to do things they don't want to do.

      I know sysadmins who fall into both categories. Some just plug along doing the usual tasks. Others are thinking of ways to imrpove the systems and the lives of those who live in them. I also know Java programmers who code exactly what the requirements say. But there are also Java hackers. Compared to the former, I am one. I decompile code, I disassemble class files, I integrate Java with the world outside of Java, I debug the VM dumps in the rare event the VM itself crashes -- all to make the lives of myself, and the others who live in the Java world with me, better.

      I seriously doubt you know much about Java, just as my sysadmin experience is feeble. But, I am ready to admit that. And, in true hacker form, my lack of knowledge is not a road block but a challenge for me to dig deeper, experiment, understand and learn more, not to spout off myopic opinions as some sort of deep insight.

    4. Re:Java Vs. perl by Keel · · Score: 1

      No offense, my friend, but I think he was describing software developers, not sysadmins. Writing small helper programs in perl can be considered "programming", but it's not software application development. Great developers build large enterprise applications in object-oriented toolsets, distributed components published as web services, integrated to legacy mainframe systems with message queue servers, and tied to a relational database backend (and this may even be behind a data broker layer). I'm talking about the kind of system that takes 15 people 2 years to build. They don't do it in perl. Ever.

      --

      ----

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

    5. Re:Java Vs. perl by David+Kennedy · · Score: 2, Insightful

      So I'm out of the question because I'm a Java developer? Never mind that I've been paid to work in C, C++, Perl, and a few other propietary languages. Never mind that I write small Perl and Unix scripts most days. Never mind that the reality of being a working senior Java server-side developer is a knowledge of a vast, and ever growing, set of associated platforms, comms and database technologies required for large scale projects for, in my case, telecomms and financial customers. On multiple platforms. Multiple operating systems.

      Apparently my decade or more performing scientific computing or writing code on Unix somehow means I don't know that environent. Somehow choosing to use that environment to write Java invalidates everything else I know.

      You are a technology bigot and deserve the same sort of criticism I'd get if, say, I presented the view that sysadmins are just computer janitors for developers, most of whom could do the same job. See? That'd be a grossly unfair thing for me to say wouldn't it? (Even if I sometimes thought that when working with bad admins.)

      You seem to be forgetting the golden rule: pick the right tool for the job.

    6. Re:Java Vs. perl by jjohnson · · Score: 1

      D00d! When you fight the power, can I hold your jacket?

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    7. Re:Java Vs. perl by Danny+Rathjens · · Score: 1
      perl. I'm sure you could do it, but I certainly wouldn't want to maintain it. Besides that you'd have to start from scratch and create a bunch of library code before you could even think of starting.

      You've obviously never seriously used perl since you don't know about CPAN and its nearly 7k modules.

      I can understand endorsing your favorite language. But to try to do it by spreading ignorant FUD about other languages is not a wise method.

    8. Re:Java Vs. perl by prockcore · · Score: 1

      My definition (and I believe it's fairly close to what the article author meant) was that a hacker was someone who used a programming langauge to solve hard problems.

      My definition is close to yours, but is a little more abstract. A hacker is someone who uses whatever is available to solve problems.

      MacGuyver is a hacker.

    9. Re:Java Vs. perl by haystor · · Score: 5, Interesting

      It has been my experience that Java developers have no problem criticizing Perl without ever having tried it. When shown, they will be amazed by what is already done and in CPAN. They say Perl is slow because it is interpreted and needs to spawn a new process for every page requested on a web server.

      On a more personal note, I find that most Java developers are rather boring, unimaginative people. This is one of the reasons this is my last week of work in IT as I strike out on my own.

      Java makes the mediocre programmer feel like he's done a lot. When I hear "maintainable" code, what I'm really hearing is that just anybody can do the job. Surely there is some work out there difficult enough that it requires expertise.

      Some people believe that they are left brained or right brained. The intelligent people I've met are genius across the board. The tier below them are people that merely applied themselves in one area and happen to be good at something. Programming seems to have both categories of people. One in a thousand is genius, the rest are just people that did a little hard work and can handle a computer.

      Don't confuse *implementation* with *creation*. When Graham uses the term hacker, he's talking about people that create where there was nothing. People that bring to life the truly original, not merely the prolific coders that write a lot.

      Some people are talking about the right tool for the right job. By the time you get to that point, you are implementing the known. Hacking--as I understand Graham to be talking about it--is about exploring the unkown. Building a site that can build merchant sites as he did, chasing down fraud in your customer service records, inventing the blink tag (sarcasm). Those are the kinds of things he's talking about, not making yet another session bean to pull employee data from the database (and calling it "architecting" doesn't make it any more impressive).

      The whole Java mentality (as I've seen it) is that all requirements can be gathered up front. Then it is a simple matter of implementing those requirements. There is no hacking or exploration about it. It should all be scientific. Of course, I've never actually seen a business that ran this way. Businesses have rules that nobody knows about. They won't be captured until they are shaken out by existing code. That is the reality I've seen and I won't believe otherwise until I've seen it (which I won't, see above).

      After the failure of a Java project, it is pointed out that the implementation was going fine and it was the fault of the requirements that made it fail. Well, for a language that is robust, maintainable and modular, Java sure is a pain in the ass when requirements are moving around. This is not so with Perl, Python and LISP. This is why many hackers prefer those languages. They are responsive to the person exploring and creating.

      PS. I should not be allowed to post after midnight. I'm sure I'm unclear/troll/flamebait/overrated but I'm sympathetic to Graham's views after my dismal experiences.

      --
      t
    10. Re:Java Vs. perl by KZigurs · · Score: 1

      I would agree. However - you just fell in your trap by yourself. How do you know what exactly this guy have done?

      But yes, the fact that anyone that claims to be a hacker automatically can be marked as an idiot, is probably one of cornerstones in "catching and fishing them all"

    11. Re:Java Vs. perl by asackett · · Score: 1

      Hmmmm... "scalable, secure, accesses data of a variety of types, sends instructions across the network, maintains transactional integrity, and more in perl." No worries. Specify the app and pay my fees, and I'll deliver that sucker to ya -- it's what I do every day anyway.

      And it would be better if you didn't try to maintain it, because you obviously do not know much at all about perl.

      "Besides that you'd have to start from scratch and create a bunch of library code before you could even think of starting." Bzzzt. Wrong answer. CPAN provides modules (libraries) for just about anything you might imagine, for free. Just fire up your favorite CPAN interface and tell it which modules you'd like to install, and then start writing code. Nuthin' to it but to do it.

      Next!

      --

      Warning: This signature may offend some viewers.

    12. Re:Java Vs. perl by arethuza · · Score: 1

      Just curious, are there Perl libraries for handling disributed transactions? Do these support things other than relational databases (at the very least, message oriented middleware such as MQ)? Note that I'm actually interested in your opinion as to whether such things exist and whether they are any good!

    13. Re:Java Vs. perl by Anonymous Coward · · Score: 1, Funny

      who's the most likely hacker?

      a. sysadmin
      b. java developer
      c. janitor

      Personally, I'm voting for (a).

      [...]

      I'm a sysadmin


      Well, surprise, surprise!

    14. Re:Java Vs. perl by Anonymous Coward · · Score: 0

      I have no doubt that you're a good sysadmin

      Why, do you know him? I would have phrased it "I have no doubt that you think that you're a good sysadmin".

    15. Re:Java Vs. perl by arudloff · · Score: 2, Insightful

      The question really is, is it possible to be a hacker, and have a business mindset? What he proposes in this article would make it seem impossible, and the sysadmin crowd tends to not even fathom the possibility.

      The industry doesn't give a rats ass for the perl/php/python/flavor-of-the-week mentality. Time is a resource and as a resource it's way more valuable than the hardware. They don't care about spending more money on bigger and badder equipment. Therefore, really, coding in the name of effeciency is truly a dying concept. It's coding in the name of delivery and maintainability (thus the need for fast, widespread standards, not difficult to understand syntax in the name of cool)

      I spend my "hobby code" time hacking on whatever side project me and my buddies can come up with. But during the day hours, I sold my soul to the java world (and will undoubtedly do so again to another language in the future) to make that paper. More money = the sooner I have more freetime to play.

    16. Re:Java Vs. perl by poot_rootbeer · · Score: 1


      You wonder why some here seem to be getting "personally offended", and then you go on to characterize all "Java guys" as whimpering infants with an inability to comprehend the "Real World(TM)"?

      You're not a Hacker. You're an Ass.

    17. Re:Java Vs. perl by Anonymous Coward · · Score: 0

      Translating requirements into an implementation is not hacking. Ever. Even if you use big words and relational databases.

    18. Re:Java Vs. perl by ExMember · · Score: 1

      When I hear "maintainable" code, what I'm really hearing is that just anybody can do the job. Surely there is some work out there difficult enough that it requires expertise.

      Maintainable code is easy to understand, and easy to modify. That does not imply that it only solves easy problems, or that it was easy to write. Quite the opposite in fact, the it takes genius to make things simple.

    19. Re:Java Vs. perl by tchernobog · · Score: 1

      Well, I always thought of an hacker as someone who loves to do something, and searches for better/unusual ways to obtain its target.
      No matter the difficulties, he'll give all himself to the aim to resolve a problem.

      Not only programmers, sysadmins or whatever: also a mechanic or a biologist can be true hackers. Why not?

      --
      42.
    20. Re:Java Vs. perl by Anonymous Coward · · Score: 0

      MQSeries support --
      http://search.cpan.org/~hbiersma/MQSeries-1.23 /

    21. Re:Java Vs. perl by haystor · · Score: 1

      I agree completely. This is one of the reasons I love LISP macros so much. The are a lot harder to write, but once written it makes the actual application code easy to write and modify.

      But it is not genius making things simple where I hear the word "maintainable" invoked. It is consultants selling "robust, scalable" systems to people with the promise that their employees will be able to maintain it.

      I've been working with Perl and Java for years now. When all is said and done, Perl get more done with less effort and is just as maintainable. I've witnessed multiple places replacing a successful Perl product with a Java product and I've never seen anything good come of it. One of the reasons I believe is that they lost the hackers using Perl and instead got the Java consultants who are good at producing documents.

      Graham paints with a broad brush, but some of his generalizations ring true in my experience. If you lumped people into two groups: LISP/Perl/Python vs. Java/VB/C#
      I think you'd have a lot higher frequency of hackers in the first group than the second. I think you'd also have a lot more mediocrity producing work artifacts justifying their existence (consultants) in the Java/VB/C# group. Sure some hackers use Java but they are the exception that proves the rule.

      --
      t
    22. Re:Java Vs. perl by ameoba · · Score: 1

      Why do you differentiate between sysadmin and janitor?

      The two jobs have a lot in common. I keep pushing for having my job title changed to "IT Janitor".

      --
      my sig's at the bottom of the page.
  35. Python/Perl better than Java?! by Anonymous Coward · · Score: 0

    The "Python and Perl are real languages, for real hac0rz! PHeAR mY SKiLLZ!" rant was a bit comical. Does this guy actually *work* in a real, corporate environment?

    To give you an example. At my job (Fortune 100 company), in my department, we design and develop internal web applications to support the business. Applications are load tested to support up to 100 concurrent users per server. They also average around 15-20 lines of code per hour. This is all using a structured "dictated" Java "framework" that was developed in-house to keep things "standardized". I chose to write an application totally separated from this process. Mine has had more than 1100 concurrent users (and will likely scale to over 3000), and was written at the rate of around 110 lins of code per hour.

    So in response to the article, Great Hackers (TM) choose the right tool for the right job, and don't need to express their Perl fetish in environments where a year after they leave, some poor guy in India needs to go through and implement a new feature in your mad-skillz perl script.

  36. Astrology for Geeks by jjohnson · · Score: 4, Insightful

    Graham essentially spouts a lot of geek cred virtues that suit the stereotype of hackers that we all, in some way, want to be. So we all read the article, see a little bit of ourselves in it ("yeah, I'm pretty politically incorrect, too."), and feel good about how special we are. Just like astrology profiles based on your sign contain a lot of qualified compliments ("you speak your mind, sometimes offending other people without meaning to."), Graham's articles have a constant thread of "geeks are special, and you're a geek, too."

    Taken literally, the people Graham is talking about are perhaps 2-3% of the coding population. In other words, they're the equivalent of supermodels, rock stars, and brilliant twentysomething CEOs, and just as accessible to you or me. In practical terms, you'll almost never, ever work with, hire, or be the kind of person he's discussing, so put down the geek wank material.

    Every time I read a Graham article, I feel dirty at the amount of false modesty and self-congratulation involved. He's like a digital Stuart Smalley.

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    1. Re:Astrology for Geeks by Animats · · Score: 4, Insightful
      I've known quite a number of very good programmers, and worked with some of them. By this I mean people who wrote entire operating systems, major CAD packages, game physics engines, key parts of TCP/IP, and such. I mean people from the original Xerox PARC crowd, Stanford, MIT and CMU. I don't mean people who think they're l33t because they've memorized most of the UNIX command line options.

      Few of the really good ones are like the stereotype of the "geek" mentioned here. First, top programmers write well, and have demonstrated this by writing for publication. Second, they have strong theoretical backgrounds. Some are self taught, but are comfortable filling a white board with math. Third, they're not overly attached to a single programming language or operating system. Fourth, they tend to have a sense of aesthetics, and can articulate why something is ugly in an engineering sense, rather than merely grumbling about it.

    2. Re:Astrology for Geeks by jjohnson · · Score: 1

      This is much more believable than "great hackers use Python."

      --
      Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    3. Re:Astrology for Geeks by Anonymous Coward · · Score: 0

      Thanks

    4. Re:Astrology for Geeks by Anonymous Coward · · Score: 0

      I love his work. But I don't think it reflects me. I know my concentration sucks and that I'm not a great hacker as a result.

    5. Re:Astrology for Geeks by tesmako · · Score: 1
      This is much more believable than "great hackers use Python." Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.

      I hate to 'me-too' but this is exactly the post I wanted to write. I have never met any really great programmer who was not very flexible in language, platform, libraries and operating systems. A religious attachment to any piece of technology is always bad for the end results.

    6. Re:Astrology for Geeks by Chris+Z.+Wintrowski · · Score: 0, Troll
      ...Every time I read a Graham article, I feel dirty at the amount of false modesty and self-congratulation involved. He's like a digital Stuart Smalley.


      Don't you think it's absurd how Paul Graham spends all his time writing about hackers, programming languages, and how to write code, without actually writing any code himself?


      Since the two lisp books and Viaweb, the man has written absolutely nothing in the way of code (aside from some very simple Bayesian spam filter snippets, and this vapour-ware programming language 'Arc' he's apparently designing). Instead, he's devoted himself to writing geek fluff articles, and cultivating this stupid geek superhero stereotype mythos wherein rogue computer nerds use their super coding powers to save the world by thinking "forbidden thoughts". It's just so lame, like a bad episode of Star Trek Voyager where the crew pull their way out of a few scrapes, and then give themselves the old self-congratulatory Federation reach-around for a job well done (which is usually either violating the Prime Directive by interfering with another civilisation and imposing "human morality" upon them, or finding some inter-dimensional time-travelling phenomenon that allows them to circumvent certain doom, a.k.a. the infamous Rick Berman and Brannon Braga reset button).


      Here's a message for Paul Graham: real hackers write code - they don't sit on their arses writing about writing code. They also don't spend their time entertaining stupidities such as the promotion of heretical thinking just because they want to justify their own arrogant, selfish, and ill-considered bastardisation of the one true faith. You are a myth. The Paul Graham uber-hacker of internet fame no longer exists. What happened to him, I really can't say - maybe Viaweb burnt him out, and he's now wandering the streets of Cambridge in a daze, muttering to himself some confused fantasy that it was all Robert Morris's fault, and Trevor Blackwell was really a Communist infiltrator from the north who had been mailing code to the Russians. Who knows! But the reality is clear: the Paul Graham that runs paulgraham.com is no more of a hacker than Barney the dinosaur.

      --
      - Chris Z. Wintrowski -
      [ Site ]
    7. Re:Astrology for Geeks by ezy · · Score: 0


      I just wanted to say that I wish I could've written this. I've been thinking this for years... :-)

    8. Re:Astrology for Geeks by ameoba · · Score: 2, Funny

      I'd take Graham over John Katz any day...

      --
      my sig's at the bottom of the page.
  37. Graham = Bozo the Clown on this one by Arbogast_II · · Score: 1

    Obviously lots of great hackers write on Linux in things like Python and Perl. That's a no brainer. It is also obvious alot of great hackers work in Java. Slam dunk if you live in the real world. He also gets Bozo the Clown status for suggesting Windows is a sub par environment. Only a blind person could use Windows and see the hand of many awesome hackers.

    --


    HenryJamesFeltus.com
    1. Re:Graham = Bozo the Clown on this one by Anonymous Coward · · Score: 0

      You gotta be kidding! After doing devlopment on Linux working on windows sucks so bad it's not funny.

      See his other comments about curiosity, about great hackers living in the real world and guess where you might be in the scheme of things....

  38. Best for databases by lamber45 · · Score: 1
    As for java, it's one of the primary languages for easy interface with databases

    perl is great for databases, too; look into the DBI:: classes some time. The thing that makes Java useful is the commercial toolkits that easily build GUI forms, JavaBeans, etc.; however, the main interface that big companies need to their database is either their website or a simple locked-down interface to a transactional backend. PHP and ASP easily compete with JSP for the first, and a perl program running in an SSH instance might be the best environment for new development of the other. (However, I don't have a production system to back that claim up.)

    1. Re:Best for databases by danharan · · Score: 1

      I'm going to have to disagree with that. Having worked with PHP and J2EE apps, there's no contest in my mind: Java kicks PHP's puny ass.

      Take a look at java.sql.* and compare it to the PHP db functions. Look at frameworks like Hibernate... why would anyone want to use PHP for this?

      --
      Information: "I want to be anthropomorphized"
  39. Microsoft paradox by _randy_64 · · Score: 4, Interesting

    I find it interesting that on one hand, he says no real hackers want to use Microsoft software, but it's Microsoft that has the number one hacker perk of private offices. So does that mean that no good hackers work at MS or that they rate offices higher than the tools they use?

    --
    I mod down all the "free iPod"-sig losers.
    1. Re:Microsoft paradox by IRLQBall · · Score: 2, Interesting

      Well, I for one would rate a 2x2 broom cupboard higher than many Microsoft development tools. But that's just me...

      It was fun going to a talk on security by a guy from Microsoft (don't laugh, he actually knew what he was talking about) and watched him demonstrate various attacks coded in Perl using vi on Windows. :-)

    2. Re:Microsoft paradox by Anonymous Coward · · Score: 0

      That's conscious, by the way. A bunch of Microsoft's evangelist types are using open source tools like that to give themselves street cred. It's not a publicity stunt, but an honest-to-God attempt to help people get the message, rather than focusing on the tools.

    3. Re:Microsoft paradox by YU+Nicks+NE+Way · · Score: 1
      No, there are a slough of top-flight hackers at Microsoft. Graham just doesn't know what he's talking about. Graham wants the "very model" of a master hacker to be...Paul Graham. (Go read his article on Hacker and Painters if you don't think so.) He seems to suffer from Raymond-itis, in my opinion -- he wants so much to be a "part of the community" that he simply makes the best of "the community" a bunch of people like himself.

      shrug

      Maybe he's right, but I doubt it.

    4. Re:Microsoft paradox by Anonymous Coward · · Score: 0

      I don't know what the Office guys use, but NT kernel hackers code in Visual SlickEdit -- not VC.

  40. Gonna party like it's 1999! by Cryofan · · Score: 0, Offtopic

    Wow, now that bit of flotsam was straight outta 1999!

    --
    eat shiat and bark at the moon
  41. 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.
    1. Re:Tool for the job. by Steve+G+Swine · · Score: 2, Funny
      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.
      Please tell me you destroyed the source immediately afterward, or at least that no maintainer knows your name.

      I fear for your life the first time someone wants one little change.
      --
      "Consider yourself a member of a virtual corporation with Mr. Torvalds as your Chief Executive Officer." - Linux Advocac
    2. Re:Tool for the job. by dvdeug · · Score: 2, Insightful

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

      Maybe, but most of a Linux distribution is written in C, C++, Perl and Shell because that's what the programmers are used to. Even stuff that should use Prolog don't, because it's not taught in schools and most hackers aren't familar with it.

    3. Re:Tool for the job. by Anonymous Coward · · Score: 0

      Tonight at Powell's, Graham quoted SICP. "Programs are primarily meant to be ready by human beings, and only incidentally meant to be run on computers"

    4. Re:Tool for the job. by Anonymous Coward · · Score: 0

      "Try writing an OS kernel in Perl."

      I'm thinking that would, almost by default, win an award for "All Time Least Maintainable Project."

    5. Re:Tool for the job. by nikster · · Score: 1

      ahh... so refreshing. you have just said everything i wanted to say about the language bias in the (otherwise good) article.

      i couldn't agree more. one of our jobs as wanna-be hackers is to learn new languages so that we know more tools and know what to apply in certain situations.

      is Python superior to Java? mu.

    6. Re:Tool for the job. by pileated · · Score: 1

      To expand a bit, if you look at what any great craftsman (well most anyway) you'll see that they use the right tool for the job whether it's a bow saw, a dovetail saw, a power saw, a Cuisinart, a forged steel knife, Perl, Java, VB, ksh or whatever.
      I think the great craftsmen both know their tools and their power. They know when to use them and, probably most importantly, they know when NOT TO USE THEM. It's so easy to be swayed by popularity and trendiness, e.g. should I drop all my Java work and jump on ASP.NET because everyone else in my department is yipping and yapping about it? I think really good craftmen, and I'm not saying I'm one because I'm not, have the ability to quickly choose the right tool for the job, pick it and use it.
      I'm happy to say that I use both Perl and Java most of the time and I really find that they complement one another. My time constraints often force me to use Perl because I can do something quickly with it. But I often wish I had the time to do it in Java because I think it would be more robust. And sometimes I do. On the other hand sometimes I make a project perhaps needlessly complicated because I choose Java over Perl. Sometimes I'm right, sometimes I'm wrong. Hopefully I'll learn better over time which I should choose, or whether I should explore something new.
      We're all lucky if we find a tool that feels right to us, whether it's Perl, an old Addis chisel or one of my 1800-vintage Sabatier knives. They're fun to work with and make the job easier. But I think that once you really learn to use one tool well you also are better able to see the possibilities that other tools offer. So next time you try Java, or a power saw, etc.
      In any case I think the skilled programmer marvels at the wealth of good tools rather than spends too much time debating the supremacy of one over the other. And that's the one very odd thing about this essay that I can't quite agree with, the bias for Perl and Python over other languages. I see their appeal, and I personally love Perl, but I'd be surprised if only the best hackers use them.

    7. Re:Tool for the job. by DarkMan · · Score: 1

      I fully agree with everything you wrote.

      But your talking about 'most' hackers. Graham was talking about 'great' hackers. That's different things.

    8. Re:Tool for the job. by DarkMan · · Score: 2, Informative

      Heh, it's not as bad as it might sound.

      The Fortran code solved a particular eigenvalue problem in a few manners, to get different bits of information. Main workhog, used parrallel algorithms.

      The C code generated the set of input matrices for a spefic problem geometry. These were output into a text stream, passed to the Fortran routine. This means that the C code took input of number of atoms, orientation, interaction coefficents, and output some giant matrices.

      The Fortran output was several sets of output from the various methods. Perl chunk, for the most part, selected the output chunk desired, and pretified it. For one particular type, it output Postscript.

      So, the gist is that each indivdual part was seperate conceptually, and performed distinct roles. It would be feasable to run a specific job by piping the output of one stage to the input of the next. In practice, the runtimes of the Fortran stage was such that it was saved to disk, so the same output could be parsed in multiple ways.

      I wrote the code, ran some stuff, forgot about it, and had to go back to it 2 years later. Despite a serious lack of comments, it took around 5 minutes to get familar with it enough to extend it for a totally different crystal system.

  42. Erm... by Anonymous Coward · · Score: 5, Interesting

    Perl is a language only its mother could love. And some people who've never coded in Lisp. Python is a much nicer language of course.

    But it's a scripting language.

    By which I mean: on most modern benchmarks I've run, it's well over fifteen times slower than Java. Than Java!

    Java's got lots of faults. But it has one very good feature: it's rapidly getting faster (as is its evil stepsister, C#) This is largely due to design decisions in the languages which traded off some late binding and dynamic typing for efficiency. Python doesn't make those promises, and as a result it's stuck in the must-check-almost-everything-at-runtime-land of old (pre-Common)Lisps.

    Hackers coding only in Python. Gimme a break. What we're largely seeing is *script* hackers coding in Python. cgi-bin. shell crap. webbots. It's where Python shines. But there's an awfully big collection of code projects that need to straddle the speed of C++ and the dynamicism (to some degree) of higher-level languages. And there's a lot of hacking opportunity there. Java does that region very well, thank you.

    1. Re:Erm... by Anonymous Coward · · Score: 0
      Perl is a language only its mother could love. And some people who've never coded in Lisp. Python is a much nicer language of course.
      Bologna. I've coded in Lisp/Scheme, Python, Ruby, Objective-C, and C (and looked at plenty of Java), but I still long for Perl. Sure, it's easy to write crap in Perl (as I see from the others at work), but done right it reads like poetry.
      But there's an awfully big collection of code projects that need to straddle the speed of C++ and the dynamicism (to some degree) of higher-level languages. And there's a lot of hacking opportunity there. Java does that region very well, thank you.
      I believe Python is the higher-level language, not C++ or Java. So if you want dynamicism, look to Python or Perl. If you want dynamicism and speed, look to Objective-C.
    2. Re:Erm... by egarland · · Score: 1

      Java programs suck. Server side web-based apps are OK but anything client side has always sucked. Java wants to be an OS, not just a language and it makes it suck as a language. It should compile to natively executable self contained redistributable programs that don't need 12 megs of crap just to run. Also, Java's speed sucks. It's probably because it uses memory so horribly inneficiently.

      Perl is out of favor now. I think it's mostly bad luck and age. Mod_Perl turned out to be a horribly difficult environment to program
      in and PHP pulled most of it's market away. It has no good gui toolkit (Perl/TK is horribly ugly) and nobody but sysadmin's use command line programs anymore. Perl 5 is also very old and it's language looks strange and dated to most programmers (-> instead of . What's that all about!)

      That said, the language is designed with a lot of good principles that are missing from both Java and Python. I think Perl has a lot of ground to make up, we'll see if they do it once the Perl 6 beast is unleashed.

      --
      set softtabstop=4 shiftwidth=4 expandtab nocp worlddomination
    3. Re:Erm... by computer_chacham · · Score: 1

      >>well over fifteen times slower than Java

      Than I guess you've never tried Psyco

      http://www.pypackage.org/packages/python-psyco

      *huge* increases in speed for some code.

    4. Re:Erm... by pnatural · · Score: 1

      What we're largely seeing is *script* hackers coding in Python. cgi-bin. shell crap. webbots. It's where Python shines.

      And it shines at NASA, Google, ILM, NATO... the list goes on.

      But you are a fuck-wit and little more, so I'll stop wasting, and I'll go back to coding.

    5. Re:Erm... by Arkaein · · Score: 2, Insightful

      First off, I'd like to see those benchmarks. I'm not sure I believe them. Oh I'm sure such results could be achieved, but likely they were programmed in ways that do not take advantage of the best features of Python. Probably things like Fibonacci tests and the like. Pfff.

      Second, I've got a secret to share with you about writing software. The secret is that in most applications not more than 5% to 20% of the code actually requires the speed that an optimized C/C++/Java implementation would give it. GUIs, text processing, database queries, networking (and just about any I/O bound) will be very close in speed in Python or similar languages to natively compiled code. In the cases of GUIs especially most of the time the CPU is simply waiting on the user anyways.

      Now what about that remaining 5% to 20% you may ask? If you need the speed then implement that in optimized C or C++. Python is designed to interface such code easily. But do us all a favor and leave the baggage of you high performance languages out of the main application logic.

  43. Incendiarially by smittyoneeach · · Score: 4, Funny
    (Incidentally, I think this is what people mean when they talk about the "meaning of life." On the face of it, this seems an odd idea. Life isn't an expression; how could it have meaning? But it can have a quality that feels a lot like meaning. In a project like a compiler, you have to solve a lot of problems, but the problems all fall into a pattern, as in a signal. Whereas when the problems you have to solve are random, they seem like noise. ) I think this is what you call a theological question. Besides than the Adams approach (Douglas or Scott), I think the other reasonable approach to the question is to humbly admit that it's like describing the ratio of a circle's circumference to its diameter; the actual answer overflows the finite brain.
    Walk humbly during all the days of your vanity, and look forward to an eternity when all will be revealed.
    Oh, and use emacs.
    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:Incendiarially by Anonymous Coward · · Score: 0

      what is the quote from? walk humbly etc... it sounds either biblical or from the quran?

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

      Sort of a blend, really:
      Ecclesiastes 11:9 Rejoice, O young man, in thy youth; and let thy heart cheer thee in the days of thy youth, and walk in the ways of thine heart, and in the sight of thine eyes: but know thou, that for all these things God will bring thee into judgment.
      James 4:10 Humble yourselves in the sight of the Lord, and he shall lift you up.
      The latter is the one you hear sung in rounds, but I always like the heavy bass in the former. :)

  44. Re:Why are Paul Graham's web pages width-constrain by GizmoRevenj · · Score: 1

    I'll tell you why, no wait. I wont. Maybe Paul can tell you why. The following is from his General FAQ
    "Why is the text on your site so narrow? It wastes screen space.
    The aim of web design is not to use all available screen space. It is legibility. Text is most legible with at most 60-70 characters per line. On computer screens, you don't want to go much over 60."

  45. Arrogant Obnoxious Jerk by megamegamegamega · · Score: 3, Interesting
    Don't bother to RTFA. This guy has had a beef with Java for years, and a large chunk of the article is devoted to gratuitously dumping on Java. That's when he's not trying to justify why its a "good thing" that he has more money than most other people.

    At one time or another I have been fluent in around 6 or 7 programming languages. Personally, I think nothing comes close to Java if building large, maintainable and networked systems is your goal. As many people have pointed out, Perl and Python are good for small jobs but you'd be insane to architect a really large system on them.

    1. Re:Arrogant Obnoxious Jerk by Anonymous Coward · · Score: 0
      What is the feature of Java that makes it suitable for large projects, that Python doesn't have ? Don't confuse your ability to write something in a given language with the capabilities of that language.

      These two languages are very close, look up jython when you have a chance.

    2. Re:Arrogant Obnoxious Jerk by Anonymous Coward · · Score: 0

      I don't think the point is too dis one person's language over another. The point is that a hacker is generally looking for the most efficient and expressive medium in which to work. Java rarely fills that niche. Neither does C nor C++. These languages are the right tools for many jobs, but that is not his point. I think his mention of those languages relates more to the ability to express thinking in a language. Look at good python, or lisp, (or even Perl) code. Its much closer to the brain -- a more distilled expression of the hack.

    3. Re:Arrogant Obnoxious Jerk by Anonymous Coward · · Score: 0

      If you used Java in 1995 to do what you said, your results would be poor

      Same goes for 1996

      and 1997

      and 1998

      and 1999

      and 2000

      and 2001

      and 2002

      and by now the bloat and infrastructure is so large, ramp is ... huGGGGe

      I'd take a couple script experts and one systems programmer, C, thankyou and run circles around a team of a team of 15 Java programmers

    4. Re:Arrogant Obnoxious Jerk by wotevah · · Score: 1

      Well Python is a Rapid Application Development (RAD) language. It allows describing the concepts and implementation in a language that's easy to follow and check (kind of like Pascal was being used to describe algorithms which would later be implemented in C).

      But nowadays with the shortening of software production cycles, "slower" development languages don't cut it most of the time and Python and the other languages in its class are taking over as not only prototyping but also final design tools.

    5. Re:Arrogant Obnoxious Jerk by cerberusti · · Score: 1

      I believe he is quite correct about Java, but I think you missed his point. It forces everybody towards mediocrity. If you are a terrible programmer, Java helps. If you are great, Java hurts. This is sometimes desirable for a large team, as there are more bad programmers than good ones.

      Of course, that is just my opinion, I think most people would disagree with me.

      --
      I'm a signature virus. Please copy me to your signature so I can replicate.
  46. MOD PARENT UP! by whatthef*ck · · Score: 1

    Where are the mod points when you need'em?

  47. Flamebait my ass by Jerf · · Score: 4, Interesting
    Flamebait my ass. Seems the truth hurts:
    The original study that showed huge variations in individual programming productivity was conducted in the late 1960s by Sackman, Erikson, and Grant (1968). They studied professional programers with an average of 7 years' experience and found that the ratio of initial coding time between the best and worst programmers was about 20 to 1; the ratio of debugging times over 25 to 1; of program size 5 to 1; and of program execution speed about 10 to 1. They found no relationship between a programmer's amount of experience and code quality or productivity.

    Although specific ratios such as 25 to 1 aren't particularly meaningful, more general statements such as "There are order-of-magnitude differences among programmers" are meaningful and have been confirmed by many other studies of professional programmers (Curtis 1981, Mills 1983, DeMarco and Lister 1985, Curtis et al. 1986, Card 1987, Boehm and Papaccio 1988, Valett and McGarry 1989). - Steve McConnell, in his book Code Complete
    Enough references for you? I reiterate, it looks like arrogance from the bottom, but denying this is its own form of arrogance. It's as etablished as anything can be.
    1. Re:Flamebait my ass by killjoe · · Score: 2, Insightful

      The problem is that the line between arrogant and asshole is pretty fine. If you have a great hacker who is arrogant and hard to get along with then replace him with a mediocre programmer who can work inside a team without dusrupting it.

      Sometimes the arrogant assholes spend all their time telling everybody else how much they suck with brings the productivity of the whole team down.

      --
      evil is as evil does
    2. Re:Flamebait my ass by Mant · · Score: 1

      I don't think anyone was saying there isn't huge difference between the best and worse programmers.

      The point of contention was trying to use "do you like Java?" as a means to seperate one from the other.

  48. Short version by Salamander · · Score: 3, Informative

    "What great hackers have in common is they're a lot like me (or at least like I imagine myself to be)"

    What an amazing ego.

    --
    Slashdot - News for Herds. Stuff that Splatters.
    1. Re:Short version by BroncoInCalifornia · · Score: 1

      And Great Hackers do not do mundane things such as meeting the needs of the customers!

      --

      Religion is the main cause of atheism.

    2. Re:Short version by panaceaa · · Score: 1
      I agree. Maybe he should be writing articles on crackers instead. With a name like Paul Graham, maybe he has some insight into the Graham Cracker? For example:
      The Graham Cracker is truly a great cracker. I should know, since my name is Paul Graham and I like eating them. I like to make smores with them, or cut them into ginger bread men. Or just eat them plain! What other cracker gives you so many options? Cheez-its? No way!
      See? There's plenty of room for comparisons and egotism in cracker critiquing circles.
  49. Re:Article text (in case of slashdotting) by Anonymous Coward · · Score: 3, Funny

    Who is to say you didn't post as the AC, claiming Karma Whoring, and then reply to yourself, non-anonymously pointing out the grandfather post was AC, all simply to get yourself modded up as Insightful?

    THAT'S META KARMA-WHORING; OMG!

  50. An office? by kiwi_damo · · Score: 1
    After software, the most important tool to a hacker is probably his office.
    If you give a geek an office, he'll stop communicating, eventually stop shaving, soon stop showering and then you'll wonder why you have to fumigate.
  51. Anyone can do it. by yipper · · Score: 1

    I disagree with the idea that a true hacker
    has to be a genious. I think that I've been in
    some cool programming grooves in the past. They didn't last very long, and they were intensely focused on an interesting problem.

    I don't claim to be a great programmer. But if I can find a problem that grabs my interest then the
    hours fly by and the end product is something I am proud of.

    Maybe I have a small mind, that just means I have to break problems down into small interesting bites.

  52. I wish my manager would read this... by aralin · · Score: 1
    I was reading the article, the parts on noisy spaces, presenting a challenge, good taste and especially the nasty little problems chapter and thought: "I wish my manager would read that..." and then I went and sent him that link :) Seriously, this is one of the best articles on software developers I've read in a long time. Definitely very insightful.

    I just hope the discussion won't bog down to language war over such a good article like this.

    --
    If programs would be read like poetry, most programmers would be Vogons.
    1. Re:I wish my manager would read this... by QuantumG · · Score: 1

      Don't worry, every manager has this idea of "hackers". Which is why they treat Programmers like children.

      --
      How we know is more important than what we know.
    2. Re:I wish my manager would read this... by Vlion · · Score: 1

      The part regarding where hackers like to work is good.
      Most of it I thought was iffy, though.

      --
      /b
      |f(x)dx = F(b) - F(a)
      /a
    3. Re:I wish my manager would read this... by Plugh · · Score: 1

      I just did.
      Now, I sure wish our VP would read this...

  53. What's all this about offices and cubicles ? by mikaere · · Score: 1

    In all my time as a professional programmer (10 yrs), I have [i]never[/i] had my own office or my own cubicle. The closest I ever got was my team of 3 sharing the same office. Which meant we could have our own stereo which got played LOUDLY. We also had clients barging in whenever they wanted.

    Did that stop me grinding out efficient, elegant code ? Nope. It's all about what works for a person or team i.e. culture.

    I agree with Graham when he says that it's difficult to tell a great hacker until you have worked with them - likewise it's difficult to prescribe the best working conditions. I remember reading an article about Quake I wherein id had to bring everyone into a war room so they could deliver their game.

    --
    It's good luck to be superstitious
  54. Yes, but... by mellon · · Score: 1

    ...that's only usefully true if (1) you can guarantee that the columns end at the bottom of the visible screen, so that you don't have to scroll around to move from column to column, and (2) there is more than one column.

  55. I'm confused... by Artega+VH · · Score: 1

    If the best hackers program in python.. but not in java can someone explain jython? (python IN java)

    /me gives stupid idiot look

    So thats an interpreter written by non hackers for hackers? Go figure..

    --
    groklaw, wired and slashdot. The holy trinity of work based time wasting.
  56. 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...
    1. Re:Python, PERL and Hackers... by Vlion · · Score: 1

      Good, good.
      I've been doing my first real development job this summer(REU deal, academic enviroment), and I have to say: communication and documentation is key to a good job.
      If you have a quit guy in an office working away at a problem using only his source code, the whole system is kaput when he leaves.
      You gotta spread the knowledge of the system around.
      10 mediocre guys can do better than 1 flash-in-the-pan, because they wil work as a group and be able to pass knowledge and abilities to the new people.
      Course, if you have a good mix of hot-shots, and mediocre guys, life is even better.

      --
      /b
      |f(x)dx = F(b) - F(a)
      /a
  57. Unnoticed... by Colven · · Score: 4, Interesting

    I , for one, hope to hear echoes of the major points of that article regarding improper programming atmospheres and mismanagement (ill-understanding) of programmers needs. I'm of the opinion that this issue is still a much avoided or unrecognized problem in the work place (please do correct me if I'm wrong about that.) That was probably the best manner in which I've ever heard that topic addressed... although the "langauges of choice" and so on seems to have gotten the most attention.

    --
    expletives welcomed
  58. Super Hackers by Anonymous Coward · · Score: 0

    Super hackers are great, because they know what they are doing. Unfortunately I meet a lot of people who have the qualities of a super hacker minus the talent. These people are just assholes. Anyone else know what I'm sayin?

  59. you can't "become" a "great hacker" by sinnfeiner1916 · · Score: 4, Insightful

    i read in the jargon file once that you cannot "become" a hacker -- rather, others must bestow it upon you. you have to earn it. you can't buy it. you can't decide you are. Yeah, you have to do stuff, but you should be doing it just because. Then others will decide you are a "hacker"

    --
    The More Laws, the less Justice --Marcus Tullius Cicero
    1. Re:you can't "become" a "great hacker" by Tony-A · · Score: 1

      i read in the jargon file once that you cannot "become" a hacker

      If you decide to become a hacker, you won't make it.
      If you are compulsively driven to make the damned computer work, you probably will make it.
      Skill doesn't hurt, but it's not the primary requisite.

    2. Re:you can't "become" a "great hacker" by tesmako · · Score: 4, Interesting
      On the other hand I also read in the jargon file that hackers;
      • Hackers don't like television.
      • Hackers don't like character based menu interfaces (?!)
      • Don't use tobacco
      • Only use alcohol in moderation if at all
      • Are only weakly motivated by money and social approval.
      • Are monumentally disorganized and sloppy about dealing with the physical world (don't pay bills on time, don't clean and so on)
      • Are more likely to have cats than dogs.
      • Have horrible handwriting.

      And so on and so forth with insane stereotyping throughout the whole thing. Anyone who actually takes anything said in that thing (or by ESR in general) seriously... are taking the wrong things seriously :)

    3. Re:you can't "become" a "great hacker" by sinnfeiner1916 · · Score: 1

      where as I -
      1) sort of like TV
      2) don't really know what a 'character based menu interface' is
      3) enjoy pipes and cigars
      4) money depends on the situation. nothing wrong with money.
      5) even more fucked than this
      6) i like dogs
      7) this is true, but also for doctors.

      i guess i'm not a hacker... at least i'm not ESR. I do like guns though...

      --
      The More Laws, the less Justice --Marcus Tullius Cicero
    4. Re:you can't "become" a "great hacker" by ChaosDiscord · · Score: 1
      And so on and so forth with insane stereotyping throughout the whole thing.

      It's a generalization. And label applied to people based on beliefs or behavior can only ever be, at best, a generalization. The titles of the section "A Portrait of J. Random Hacker" should make that clear. It's about as accurate as describing conservatives as Christian, pro-business, anti-abortion, anti-gay or describing liberals as atheist, anti-businesses, pro-abortion, pro-gay. It's a reasonable summary, but not a perfect one.

    5. Re:you can't "become" a "great hacker" by llefler · · Score: 1

      One additional point that apparently isn't in the jargon file. If you call yourself a hacker (or as in the article, a great hacker) you probably are NOT one. The article states that great hackers rarely recognize it in themselves.

      Personally, I don't believe in varying qualities of hackers. IE. there is no such thing as a 'great' hacker. You either have the ability or you don't. I also don't believe there is the ability to become one. You either have the talent or you don't.

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
    6. Re:you can't "become" a "great hacker" by sinnfeiner1916 · · Score: 1

      this is true.

      --
      The More Laws, the less Justice --Marcus Tullius Cicero
    7. Re:you can't "become" a "great hacker" by SigmaEpsilonChi · · Score: 1

      Since when does humility have anything to do with capability? Whether or not you are exceptionally productive is orthogonal to whether or not you are exceptionally annoying.

      Nothing stated in that article, the jargon file, or in anything written by Eric Raymond or Paul Graham is going to make any sort of causal link between the two extant.

      Your position is at least equally as absurd as my suggesting that you are incapable of engaging in cognizant intercourse, because your pretentious proclamation of the unsubstantiated is annoying.

    8. Re:you can't "become" a "great hacker" by Anonymous Coward · · Score: 0

      I don't believe he called himself a 'great hacker.' Tons of other people, many great hackers included, may have, but that's another matter.

    9. Re:you can't "become" a "great hacker" by eelke_klein · · Score: 1

      Its more like that it is not done to call yourself a hacker unless other hackers do so. Thus if you try to become a hacker you try to achieve qualities which will make other hackers call you a hacker.

      Where did the first hackers come from?

  60. What a load of crap by furball · · Score: 1

    Hackers make shit work. It doesn't matter what they use or how they approach it. At the end of the day, Stuff Just Works(tm).

    Most of great programming boils down to a thorough understanding of algorithms and data structures. As long as you have a good data structure to support whatever you're getting to work, hammering out code in whatever language you have at hand shouldn't be a significant challenge.

    Bugger me if I know. My mark of a great hacker is Knuth. The rest of the pack are just a bunch of pretenders.

  61. Re:Why are Paul Graham's web pages width-constrain by Anonymous Coward · · Score: 0

    Another point to be made here is that each time your eye performs a newline,. and thus has to go
    through the gamble of carriage return,. the act of scanning along the pattern of stringed up letters,. following two lines towards the left margin,. using long lines,. it becomes a gamble,. and another analytical processing step has to be done by the information gathering unit of your brains,. you have to try to remember which word was at the beginning of the line,.. if you fail,. you might even reread the previous line,. the dejavu might startle you, and throw you out of the loop,. analysing the problem, retracking which sentence to start on, and continue reading,. if you reread the same line three times,. your hacker was probably not good enough,.. /pippin

  62. Put Your Name On It by theguywhosaid · · Score: 1

    If you arent willing to put your name on it, why should someone else read it?

    1. Re:Put Your Name On It by Anonymous Coward · · Score: 0

      Who the fuck comes up with this shit? Anonymous posters are all cowards? Come on, it's the fucking internet. You can have multiple accounts for saying things you're embarrased about, or to burn karma with. Do you really think these people are cowards for posting with only "Anonymous Coward" as opposed to including their easily-created username? Besides, you don't have to read anything here. You can choose not to read ACs, and I can choose not to read you. (Posting AC to prove my point)

    2. Re:Put Your Name On It by Anonymous Coward · · Score: 0

      What is your name? Don't give me some bullshit alias. Otherwise you are a hypocrite.

    3. Re:Put Your Name On It by theguywhosaid · · Score: 1

      1. On this site, using your name makes replies show up so people can respond without looking after their posts (because other stuff rocks).

      2. I suppose I was vague. When posting critism you should use your name. When telling about your experience with child molestation, by all means post AC if you want, its your call.

      3. You did not choose not to read me. I guess you might in the future.

      4. Burning karma is not in the spirit of the concept of karma. Maybe it's poorly named.

      5. Going back to my first point, you probably wont read this. There goes all the debate we could have had.

  63. Wheeeeee by Anonymous Coward · · Score: 1, Interesting

    To hell with all this hacker nonsense. How can you have a cult of personality when there is no personality to be culted up to?

  64. Java is (still) sucking by smcdow · · Score: 1, Interesting

    This is getting dated now, but take it from someone who would know: Java Sucks. But Jamie at least points out good reaons why.

    --
    In the course of every project, it will become necessary to shoot the scientists and begin production.
    1. Re:Java is (still) sucking by Pentagram · · Score: 1

      Like you say, it's dated; many of his objections have been remedied (such as asserts) and others are being fixed in Java 1.5 (e.g. autoboxing).

      As for the rest of his complaints, they seem to be a mixture of good points (e.g. not being able to override static methods properly), opinions (I like interfaces, but they're hard to get to grips with at first, and a common complaint to new users of the language), and things that are just wrong (like the typing comment).

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

    1. Re:summary of slashdot response to this article by Anonymous+Brave+Guy · · Score: 1

      On the contrary. According to his description, I fit pretty much all the requirements for being a hacker admirably.

      Except that I use Windows.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  66. Paul Graham is unbiased by PetoskeyGuy · · Score: 2, Insightful

    Just like /. is unbiased.

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

    1. Re:Great Engineers by Anonymous Coward · · Score: 0

      Don't look now, but I think your hair is turning pointy.

    2. Re:Great Engineers by Anonymous Coward · · Score: 0

      There's one big problem with what you posted: despite all the latest generation tools and languages, design patterns, best practises, web services and so forth - the majority of software still sucks. Hard. Hackers don't write software that sucks. Software Engineers do.

    3. Re:Great Engineers by Keel · · Score: 1

      That's probably because you're still giving the "hacker" label to the best developers. I still think that the best developers are engineers. They design applications, they don't hack them together. If you were in the market for a new stereo, would want something that was soldered together in some guy's garage? That's a craftsman/hacker. While it's true he may have alot of raw talent, his stereo is not going to be better than one designed and built by engineers at Bose.

      This could turn into a whole other discussion, but alot of software sucks because of the way projects are mismanaged. Software project management is one of the biggest challenges in the industry.

      --

      ----

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

    4. Re:Great Engineers by Keel · · Score: 1

      and your head is shaped like a pin :)

      --

      ----

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

    5. Re:Great Engineers by Anonymous Coward · · Score: 0

      You're wrong there. Emacs is software for sissies. Real hackers use VIM.

      Vim rules !!!!

    6. Re:Great Engineers by cerberusti · · Score: 1

      That was hilarious... I was thinking that I had never seen so many buzzwords in a slashdot post before when I read your reply.

      --
      I'm a signature virus. Please copy me to your signature so I can replicate.
    7. Re:Great Engineers by nikster · · Score: 1

      you make an interesting point - i felt throughout the article that Graham couldn't decide between "great engineers" and old-fashioned "hackers". in some way they are the same - the great engineers from today are the old-fashioned tinkerers from yesteryear, only with great tools at their disposal.

      really great engineers know about great practices but also know when to not use them. really great engineers don't go all-out over practices, procedures, testing patterns, etc - those things are, in a way, for the weak. as in: if you have a weak programming team, you need those things in order to produce something at all. if you have a strong team, the team will instinctively follow those practices anyway, whether or not the know the proper terms for it.

      of course, in practice, what i most often see are weak teams who on top of that don't use best practices either and then fail disastrously.

      IMHO the best criteria by which do distinguish the great from the masses of others is productivity. the great programmers will still be 100 times more productive than average ones.

      ps: by programming i mean software engineering, not hacking together a perl script so that 100 lines fit in 1. i mean all the good things like maintainable, extensible, clean architecture etc.

    8. Re:Great Engineers by Pastis · · Score: 1

      There are many hacks to do to improve a software development. Integrate stuff together, get new ideas that can improve your productivity.

      These are hacks not in their realization quality but in the form they are introduced. Someone has an idea, hacks something and here you go. Suddendly your bug tracker is integrated with your pager and each blocker bug state change is sent to the project leader's communication device.

      And I believe craftmen are capable of doing this kind of specialized, high quality input, loving work.

    9. Re:Great Engineers by jrumney · · Score: 2, Insightful
      If you were in the market for a new stereo, would want something that was soldered together in some guy's garage? That's a craftsman/hacker. While it's true he may have alot of raw talent, his stereo is not going to be better than one designed and built by engineers at Bose.

      If you are talking about sound quality, I doubt a craftsman working in his garage could come up with something worse than Bose. If you're talking aesthetics, it depends how skilled the craftsman is.

    10. Re:Great Engineers by Salamander · · Score: 2, Interesting
      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.

      Your attempt to put a very particular type of programmer with very particular set of habits and preferences and skills (ask a kernel/embedded programmer about "web services" or "remoting") above Graham's mere hackers is an exact mirror of Graham's own "great hackers are just like me" arrogance. If I may presume to make one comment about what makes a great hacker/engineer/programmer, I'd say that it's someone who recognizes that other people can be great without being exactly the same. In fact, they recognize that people they find intensely annoying might also be great. The people who are truly great welcome the chance to compare and contrast their ideas with those who have different design aesthetics, who use different tools, etc. Where do you think all of those design patterns came from? They came from people who were capable of understanding tradeoffs at that level, presented in cookbook form for those who can do little more than follow instructions.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    11. Re:Great Engineers by Keel · · Score: 1

      I can understand why you thought I meant it that way, but you misunderstood me. I was not saying great programmers only do that type of development work, I was using that type of work as an example of the true complexity and sophistication of a modern software project. Those in the slashdot crowd that think they're L33T because they wrote a Perl script to insert text into a web page are mostly unaware of what the modern software project looks like. How many people on slashdot even know what a design pattern is? Or a message queue? Or remoting?

      I agree with you that the Great's are open to different tools, and I would add that they are open to different operating systems too. This stands in contrast to Graham's postulate that real hackers will refuse to use anything but opens source. Bull puckey.

      --

      ----

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

    12. Re:Great Engineers by jswalter9 · · Score: 1

      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.

      My guess is that you have an MBA. In my experience only people with MBAs truly believe in the value of an IDE. (or "tool", as you very generously call those things that inhibit sensibility of source code structure)

      --
      Retired from software... maybe. Sort of.
    13. Re:Great Engineers by Keel · · Score: 1

      I'm a Software Engineer. What about you?

      I know many other Software Engineers, and I'm familiar with many development organizations. I don't know any of them that don't use an IDE. The thought of not using one never even occurs to them. It's not 1975 anymore.

      What do you mean by "inhibit sensibility of source code structure"? It doesn't mean anything to me...

      --

      ----

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

    14. Re:Great Engineers by jswalter9 · · Score: 1

      I'm software engineer as well.
      I use Java daily, as well as Perl, C++, pl/sql, VB (when it absolutelyt cannot be avoided). And I use emacs.
      Yes, emacs.
      Every time I look at somebody's code after they've used IntelliJ IDEA, there's a plethora of directories and subdirectories, mostly just EMPTY, and making everything very difficult to find. UNLESS of course you happen to also be using IntelliJ IDEA. The first time I thought it was the developer in question. But the next two times I saw the same damned thing.
      What code should I expect to find in a directory like:
      src/software/src/com/presentation/src/presentation /?
      Or how about:
      com/WEB-INF/build/src/com/presentaion/company_name /util/action/forward/company_name/?
      Everything I've ever seen produced without an IDE looks more like:
      com/company_name/common/ and com/company_name/net/ etc.
      Because it's actually created maintained by a human being, it's done SENSIBLY. But maybe you've never seen the awful wake your IDE leaves...?

      --
      Retired from software... maybe. Sort of.
    15. Re:Great Engineers by russotto · · Score: 1

      Software Architect: Arrogant person who designs your system but never gets his or her hands dirty with actual code.

      Software Engineer: Someone who spends their time talking to the client and writing specs and (possibly) designs, but still doesn't get their hands dirty with implementation.

      If you're lucky, the architect is brilliant and was probably once a hacker. The engineers you need, but they probably aren't hackers.

      Both these positions, unlike the position of a hacker, are client-facing (that's why they still have jobs). The architect you bring out with you on sales calls and have him wow the client with his brilliance; he can sketch out the system for the client in no time at all (though whether the system he sketches out is implementable is another question). The engineer takes over at the level of translating business requirements to software requirements.

      Anyone who claims to be a productive Software Engineer "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" is probably a phony, and couldn't define half those terms. If they're an architect and claiming that's how you'll build your system, they're either a phony or they're stalling while they figure out what you want.

      There's been a movement for decades among managers to attempt to reduce programming to a set of "best practices" so anyone could be trained to do it, mechanically, as with a bricklayer or assembly line worker. It's gone under names like TQM, MDQ and ISO 9000, and its hallmark is the three-ring binder.

      Proponents of this concept have always claimed that programming as an art or craft is dead. And they've always been wrong. Some subset of programming can be done by trained "code monkeys". A larger subset can not. And confusing the two leads to projects that fail big-time. Want to produce yet another set of reports? Go ahead, hire a "code monkey". Want to solve a new and difficult problem? Better go for someone who, even if not a hacker, knows a little about his subject beyond the three-ring binder.

    16. Re:Great Engineers by Keel · · Score: 1

      You're using many of the same languages as I am.

      I would say that if your team is using IntelliJ, and you're using emacs, you should not blame everyone else for the confusing directory structure. Teams should use the same tools. One of my descriptions for a software engineer is that they work very closely with their team. Some methodologies even call for pair programming. Hard to do when you can't even agree on an editor.

      My second point is, I've never used an IDE that forced, or even recommended, a particular directory structure. I use VS6, VS.NET, and Eclipse primarily, and I have complete control over the directory structure. There are probably reasons why your project had that particular directory structure. If it wasn't actually chosen by someone on the team, perhaps it came about because they used some kind of wizard to generate an application skeleton.

      --

      ----

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

  68. It's too bad... by PsiPsiStar · · Score: 3, Funny

    ... that he didn't talk about people who like to break into and control systems. I would love to see an article entitled "Paul Grahm on great crackers"

    Ba dum bum!

    --

    ___
    It's the end of my comment as I know it and I feel fine.
  69. Real hackers . . . by Anonymous Coward · · Score: 0

    . . . write to the hardware.

    Geezus, coding DBs and GUIs is just software.

    Real hackers push electrons, not bits. They make hardware stacks and registers fill and empty. Babbage's girlfriend Ada was writing to the hardware (controlling a loom) 150 years ago. One out of a thousand coders do that today.

    Moving DB fields back and forth is for wusses (like me.)

  70. Devs with Offices? by Anonymous Coward · · Score: 0

    As a summer intern software test engineer at microsoft, I had my own office. What, offices for technical people at software companies isn't the norm?

  71. Re:Why are Paul Graham's web pages width-constrain by GizmoRevenj · · Score: 1

    Maybe Paul can tell you why. The following is from his General FAQ
    "Why is the text on your site so narrow? It wastes screen space.
    The aim of web design is not to use all available screen space. It is legibility. Text is most legible with at most 60-70 characters per line. On computer screens, you don't want to go much over 60."

  72. tribe of nomads? by cthlptlk · · Score: 1

    In a low-tech society you don't see much variation in productivity. If you have a tribe of nomads collecting sticks for a fire, how much more productive is the best stick gatherer going to be than the worst? A factor of two? Whereas when you hand people a complex tool like a computer, the variation in what they can do with it is enormous.

    I didn't make it to the language stuff...I could only get this far. I invite Mr Graham to go find a "tribe of nomads" and engage them in a friendly stick-collecting contest. I suggest that the older, more experienced nomad will out-collect him by a factor of at least 25, and younger or infirm nomads will only best him by a factor of 5 or so. With any luck, the nomads will use those collected sticks to give him the beating he so richly deserves. (He can re-think the intra-nomad productivity variation during the punishment phase of the exercise.)

    It's really too bad...I liked the stuff Graham has written about lisp, but now I'm a little suspicious of it.

    P.S. It's the JVM, stupid.

  73. Java's features I like by Trinition · · Score: 1

    I don't know, because I haven't really tried Python yet. I once worked on a project where users were expected to script bsuiness logic in Python (well, Jython) in this big fat Java application. Well, the users couldn't handle the whole indentation thing, so it was an utter failure and the IT department did the scripting (which at that point gained us nothing over on-the-fly Java compilation). Of course, I don't know how they ever expected the users to be able to write a script in ANY language.

    Anyways, I came to Java from C++. I've certainly visited and revisit other lanugauges all the time. But the things I like about Java for large projects, or in general, are below. Please reply with how Python stacks up. Maybe I should give it a try...

    • No more separate header files!
    • Garbage collection
    • Implicit bounds checking
    • Core libraries not afraid to use Exceptions
    • Standard core libraries provide an enormously useful standard toolset.
    • Strings are used everywhere freely making the code easier to debug
    • Stack traces!
    • Javadoc
    • Many choices for great IDEs
    • Much much much more cross-platform
    • ...

    I could probably think of more, but my brain is fried. Again, when I started using Java, remember that my previous big projects were in Microsoft ASP (w/ JScript) and (non-Microsoft) C++.

  74. When Trolls choose freely. by PsiPsiStar · · Score: 0, Offtopic

    What do Trolls choose when they can choose freely? Most of them choose Natalie Portman, GNAA, and men exposing their sphincters in a very graphic manner. It therefore follows that any organization which has Natalie Portman and exhibitionist gay men will be a good trolling organization.

    --

    ___
    It's the end of my comment as I know it and I feel fine.
  75. python vs java by lakeland · · Score: 1

    Java feels like it naturally builds large monolithic classes with plenty of features.

    Python feels like it is intended for short data transformations and other simple 'do the job' stuff, kinda like a more elegant version of perl that is less tailored to text.

    But the difference to me isn't really about language features, it comes down to syntax encouraging long (java) or short (python) constructions. I mean, you can write short(ish) java programs, and long python programs. Just the few long python programs I've fiddled with have felt harder to come to grips with, whereas the java ones still feel fairly coherant. That could just be the compertence of the people who designed it in the first place :-)

    1. Re:python vs java by Trinition · · Score: 1

      The best way to write short Java programs is to first write a robust library, and then call it from a very short program!

      import library.RobustHelper;
      public static void main(String[] args) {
      RobustHelper.getInstance().execute(args);
      }

    2. Re:python vs java by Anonymous Coward · · Score: 0

      I don't think long constructions are a good thing. I mean, Perl has them both beat at that hands down, I'll spare you the example.

    3. Re:python vs java by pnatural · · Score: 1

      But the difference to me isn't really about language features

      It is to me. With python, I get a much richer OO platform -- classes are first-order, as are functions. Not having those in java severely limits what I can express.

      But there's more to it, with python. I get readability. Complete openness and transparency. Speed when I need it, insanely quick prototyping, etc.

      Essentially, with python I get freedom. Java only gives bondage.

    4. Re:python vs java by lakeland · · Score: 1

      Essentially, with python I get freedom..

      Curiously, I end up using C over Python most of the time and making exactly the same argument.

      See, I love python, but I do a lot of 'research computing', 'scientific computing' or whatever you want to call it. Now, that means I often want fast prototyping (R and python) but equally I often want to run my program on more data than has been used before, I want to be the first to ... and when you're trying to push your computer to the limit, python just doesn't cut it.

      For the last project I did, I started in clean (functional language) because like python it is elegant and simple. But half way through I realised I couldn't afford to let the language do memory management for me and had to rewrite in C (with my own malloc).

      C++ gives me the option of using the STL for tolerably fast prototyping, through to my own classes, through to malloc, through to writing my own malloc. Sure, it has many faults, but it does give freedom.

      (Just thought I'd reply since it seemed funny to make the same argument in favour of both choices)

  76. Apache Foundation duuuuuudes by Anonymous Coward · · Score: 0

    If you have ever looked at the new stuff that is coming out of the Apache Foundation these days, you'll find that a lot (most, if not all) of it is written in Java. You'll also find that they are writing large interelated systems like content publishing and management, and not log file parsers and system admin scripts.

  77. What would be great is if... by Dan9999 · · Score: 1
    a job recruitement agency would somehow hire a "great hacker" to work on a small project with the applicants personally before submitting their CVs to companies who hire.

    Of course, if you read the article this idea is full of obvious flaws and would be near impossible. It doesn't remove the intrigue though.

  78. What a jackass. by Anonymous Coward · · Score: 1, Interesting
    This Paul Graham fellow has one of the most unimpressive bios I have ever seen. Why exactly should we care about what he has to say?

    I love how he takes credit for coming up with a Bayesian spam filter in 2002 when the idea of using Bayesian spam filters goes back several years before that (see this 1998 paper from MS research for example.) Oh yeah, but MS doesn't have any good hackers... even though they have offices, which attract good hackers, uh, what was it I was saying again?

    I also love his claim that great hackers can't program after half a beer. Sorry, but if half a beer keeps you from being able to program, you just can't be that good. I know several hackers that can keep churning out solid code after a six-pack and a couple of fatties!

    1. Re:What a jackass. by nagora · · Score: 1
      but MS doesn't have any good hackers... even though they have offices, which attract good hackers, uh, what was it I was saying again?

      MS does not attract good programmers because they have such a long record of releasing shitty, bug-ridden, unfinished software. No good programmer (or good anything) is going to be attracted to working in a company whose very name has come to mean "rip-off merchants". An office is not enough to compensate for that.

      TWW

      --
      "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
    2. Re:What a jackass. by pico303 · · Score: 1

      Spoken like a man who's never been offered a job by Microsoft.

    3. Re:What a jackass. by nagora · · Score: 1
      Spoken like a man who's never been offered a job by Microsoft.

      When they came sniffing around our Uni it was obvious that the only people going along to talk to them were those that had no interest in programming for its own sake. That is not the same as being only the talentless ones, but it's close.

      TWW

      --
      "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
  79. Python? by pico303 · · Score: 0, Flamebait

    Could somebody once and for all please explain to me the wonderous appeal of Python? As somebody who's been stung one too many times by the freakin' tabs being out of whack, I just don't understand the appeal of Python. It's like Perl crossed with Java, with a smattering of idiocy. Whoever came up with the idea that hiding block delimiters from you would lead to better programming...sheesh! Guido should be ashamed of himself.

    Perl is messy but powerful. Java is elegant and great to maintain, but a little long-winded. Personally, I love Objective C: what C++ should have been.

  80. In answer to your question by bladesjester · · Score: 1

    I don't agree with everything he says, but here's the bio from his homepage:

    http://www.paulgraham.com/bio.html

    --
    Everything I need to know I learned by killing smart people and eating their brains.
  81. a Neanderthal language by dcgrigsby · · Score: 1
    Here's an audio interview with Paul saying Java is "like Cobol ('a Neanderthal language') ... an evolutionary dead end."

    http://www.itconversations.com/shows/detail164.htm l

  82. Graham is the guy behind bayes spam filtering by dcgrigsby · · Score: 1
  83. flaw in slashdot article selection process by swframe · · Score: 1

    Paul once revealed his desire to create a website with misleading facts to see who could fooled.
    Should a wealthy person who states unsubstantiated facts be /.-ed?

  84. Guys, this is me he's talking about by mr_beanz · · Score: 0

    So... who wants to hire me?

  85. Hackers vs. Engineers by Anonymous Coward · · Score: 1, Insightful

    The author of this piece seems to me to be right, within the context he's talking about. He does seem to miss another element, which I will denote with the phrase Hackers vs. Engineers.

    A great deal of the work of software development is done by guys like me. We style ourselves Professional Engineers. I don't mind working in a cubicle, because I'm a pro, and most of the slobs working in the trenches get cubes. I don't mind working on dumb projects, or bad code, because I'm a pro, and that's work that needs to get done.

    I do share a lot with the guys he's talking about. I take naps at work, because as he says, that's more efficient than zoning out at my desk. I like interesting problems. I enjoy writing code.

    But I style myself a professional, which means that much of what he says is not (I insist) true about me (because such would be unprofessional, I insist).

    This is just my opinion, and I apologize in advance for anything above that came out like me stating a "fact."

    1. Re:Hackers vs. Engineers by Anonymous Coward · · Score: 0

      A Professional Engineer is a legal title that almost certainly doesn't apply to you. Personally I find P.E.s to be asses who think their shit doesn't stink because they have a P.E.

  86. False conclusion from the premises by mark-t · · Score: 2, Insightful
    FTA:

    Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

    Actually, the fact that good hackers prefer Python to Java only really tells you something about the relative unsuitability of Java to hacking. That a language is not easy to hack with is not a reflection of the strength of the language, it a reflection of how "safe" the language is.

  87. IronPython released as GPL by goon · · Score: 1


    might be time to try IronPython (~1.7 times faster than standard Py2.3). Here's some performance benchmarks comparing cpython to ironpython for those interested in the numbers. interestingly, IronPythons creator Jim Hugunin designed Jython.


    Thanks for prompting me to look as Jim just completed a talk at OSCON, 28 ~ IronPython: A fast Python implementation for .NET and Mono and has released the source.

    --
    peterrenshaw ~ Another Scrappy Startup
    1. Re:IronPython released as GPL by goon · · Score: 1

      btw it's released under CPL not GPL ~ doofus.

      --
      peterrenshaw ~ Another Scrappy Startup
  88. One point passed over... by jbNet · · Score: 2, Interesting

    First of all I thought the article was very interesting, When reading it I didn't see it as biased at all, it wasn't bashing any languages, and I don't understand why people are posting as if it were.

    Anyway I thought it missed the point that according to the article open source software is in position to take the greatest advantage of these super hackers because they get to work in their own environments, on projects that interested them, with languages and tools and environments they choose and control, and aparently it doesn't matter much that there's no pay. I think it shows. It seems that the technical aspects of OSS are very good, but the non-technical aspects are weaknesses such as usability, documentation (the stuff geared at users that is) etc.

    ~Jake B
    Trying not to become stupid, one day at a time

  89. For what it's worth... by sbszine · · Score: 1

    ...Slashdot is a large program written in Perl.

    --

    Vino, gyno, and techno -Bruce Sterling

    1. Re:For what it's worth... by Anonymous Coward · · Score: 0

      I wouldn't go using Slash as an example of a scalable, well written, easy to use Perl program.

    2. Re:For what it's worth... by Anonymous Coward · · Score: 0

      slashdot is also a trivial application. What's your point?

  90. Mod_Perl by homb · · Score: 1

    Why do you say that

    mod_perl turned out to be a horribly difficult
    environment to program in

    I've been using mod_perl for years now, and I find (even from the start) that there's nothing easier. You mean that Java with its 52 million acronyms is easier to comprehend? (EJB, etc...)

    1. Re:Mod_Perl by egarland · · Score: 1

      I love mod_perl, I've been programming in it for years too and it's still my preferred devlopment environment. That said, it sucks! I use Registry to do my programming in and it's namespace is horribly polluted, and applications don't behave as you would expect them to. It's hard to setup right and almost impossible to maintain with multiple programmers. An error in one application can wreak havoc in others (try spawning a thread and watch the destructors for all objects every other program has open be run.)

      Mod_perl is a minefield. If you can avoid all the pitfalls and issues, it's a great platform, probably the best platform, it's just too hard for new programmers to get involved in. That's why, unfortunately, PHP has taken most of mod_perl's market share away. I think most PHP programmers would prefer perl if they had started with it, but since they didn't, they ended up learning PHP and being limited by it's narrow focus.

      --
      set softtabstop=4 shiftwidth=4 expandtab nocp worlddomination
  91. MOD PARENT UP by Bert690 · · Score: 1
    Why is the parent modded flamebait?

    Unfortunately I can't mod it up as I've already posted, but it's (perhaps painfully) spot on, and funny as hell to boot.

    1. Re:MOD PARENT UP by Anonymous Coward · · Score: 0

      Sometimes burning karma is the cost of telling it like it is around these parts. Don't feel bad, I knew I'd get modded to oblivion for making that post before I clicked "Submit". But thanks for agreeing. :-)

  92. Paul Graham at Powell's by Anonymous Coward · · Score: 0

    I saw Paul Graham tonight at Powell's. I felt like a bit of an ass, as everyone was having him sign copies of his new O'Reilly book, and I had him sign a copy of Common Lisp...He signed it anyway

  93. Perl Rocks? by Commander+Trollco · · Score: 1

    Your headline brought up this: when he starts comparing languages or, to be more specific, makes the blanket statement that better hackers like Python over Perl I am reminded of the fact that the best hackers actually use OCAML and Objective-C.

    "No they don't", you cry, "the best hackers user Assembly and Visual Basic".

    "No, you're a fucking moron", someone else pipes up, "the best hackers use Pascal and COBOL."

    "No, you are a fuckwit," a voice from the back of the croud screams, "Fortran and Algol are the languages of the best hackers".

    "Quiet you fools," an elderly guru from the wings yells out, "I happen to know that the best hackers use Perl when they aren't dictating their programs to their secretaries to be outsourced to Taiwan to be compiled into Haskell"

    "Shows what you know old man", a kid in the front row sneers, "the l33t hax0rs use Lisp and C++".

    Well anyway, it looks like this might go on for a while, please enjoy the other comments while we try and work this out..

    tea for two, please

    --
    http://persianews.on.nimp.org/?u=Tar_Baby
    1. Re:Perl Rocks? by name773 · · Score: 1

      I am reminded of the fact that the best hackers actually use OCAML and Objective-C.

      seing as NeXTSTEP was written using objective c, i have to agree with you on this one

  94. All of you are missing the point! by iradik · · Score: 1

    Grahmn is mostly saying that people who use python are more likely to be hackers as oppossed to people who EXCLUSIVELY use java.

    That it's a method of detection. That a hacker wouldn't juse use java.

    I do believe Grahmn doesn't take java seriously enough. I think he should say that a hacker would like java and python; not just one or the other! But that if you had to pick one, it should be python.

    Why? Because it can be modified and java cannot due to licensing issues. This is the reason I hate java. I found a bug in the drag and drop layer in AWT once and even wrote a patch, but i had no way of submitting it to the java people.

    MAybe tehre is a way, does anyone know of one?

    Anyway, thanks for all the fish.

  95. java-like python features by wotevah · · Score: 3, Informative
    Sorry for the PRE/ecode, I don't like HTML much:
    # No more separate header files!
    - check - Python only has modules loaded at "runtime" (does not even have separae interface/implementation)

    # Garbage collection
    - check

    # Implicit bounds checking
    - check

    # Core libraries not afraid to use Exceptions
    - exceptions are the rule :)

    # Standard core libraries provide an enormously useful standard toolset.
    - yes, not nearly complete but growing

    # Strings are used everywhere freely making the code easier to debug
    - not sure what you mean by that.

    # Stack traces!
    - yes. Default stack traces suck though (but so do Java's). This is because without knowing the actual parameters passed to each function, their usefullness is limited. I posted a better stack trace module on comp.lang.python a while ago and got a few replies from people doing even more involved stuff in the same direction.

    # Javadoc
    - it's called pydoc - the module documentation on the website is done that way

    # Many choices for great IDEs
    - xemacs has a Python mode (that's what I use) but I heard Eclipse has a Python plugin as well, I am planning to try that soon.

    # Much much much more cross-platform
    - yes although, unlike Java, it offers platform-specific modules as well. Not trying to open a can of worms but as I despise having to reinvent the wheel I was mildly irritated by Java's insistence on not implementing certain OS-specific things (like IPC or fork) which lead to artificial obstacles such as the necessity of installing an SMTP server listening on 25 just to be able to send mail from the local machine.

    Python is still evolving though. One thing that I don't like about it is the absence of an option to enforce declaring variables before use, a la "use strict" in Perl. Python does complain if you try to read a non-existent variable (instead of just returning nothing as Perl does), but will create it with an assignment.

    Another thing (probably related) is that since applications don't declare what they throw you can never know what exceptions can come from where, which encourages people to use catch-alls (not a good idea).

    Finally, a (major ? minor ?) difference is that Python has no class protection per se, it relies on programmer's cooperation in that respect. It also has no class methods/variables although there are workarounds when those are needed.

    The indentation is annoying at first but you get used to it, especially when using an IDE that does it correctly for you.

    1. Re:java-like python features by edsterino · · Score: 1

      Either I don't understand something but Python has some of the things you say it doesn't:

      - class methods - you need to morph the method with classmethod(). Yes, it's terribly awkward. There's discussion
      on ways to improve this.

      - class variables - they've been around for quite a while (sorry, can't get the indentation to show)

      class MyClass( object ):
      aClassVariable = 36

      def SomeFunc( self ):
      print "The class variable is " + str(self.__class__.aClassVariable)

      - Python's got private members (via leading "__"). Protected is a leading "_" by convention only (although I think
      some forms of import respect it). (You probably knew that one -- just making sure).

      - something like strict would be nice. Until then, pychecker will fix you up (http://pychecker.sourceforge.net/). It's basically
      a lint for Python. Extremely helpful.

      I used to think that checked exceptions were a natural progression but they can be such a pain in practice.

    2. Re:java-like python features by zijus · · Score: 1

      Just a few comments on Perl.

      Where I come from. I reworked a 5000 loc and created a 4500 loc Perl frameworks. Are handling nigthly prod and running C/S product demos. Both targeting 10 UNIX & 4 Win flavours. Used and customized a CPAN module. Developed a .pm. This only say I used some Perl.

      I have to say if you don't force yourself into writting something human readable, one aspect of perl which makes it realy hard is how criptic it can go. If you think quick and dirty, well you can be. Free to chose. But, hell, the man after you, will sweat!

      Small change can force coder to write as opposed to spit code. That's good. I thank the man who told me use strict! Makes life so easier. That is what surprise me: too easily no effort are put into "writing" script. The attitude is somehow anyway that's script, who cares ? Funny: Whether I fry an egg or I invent wine mousse for chocolate fondant cake: I want them both good.

      Well sounds silly, but for slurping or processings logs and outputs perl is pretty good. (yes it was designed for this). On a Java project, I used some RE lib... So extremly heavy! Need a specific module, I don't even remember now all the heck involved for one simple match/replace. Oh yes, you create a... perl-like reg-exp engine.

      Don't know python. Friend of mine told me it's less criptic.

      I don't really care the language I use, given it's not propritary, given it makes life easy. I'd agree on the use the good tool statement. By the way, the interesting bit is what we do with a tool, not the tool itself.

      That is where I diverge from the article. Interesting job is defintely things in which we learn new stuff, discover more. But for example, yes it's a challenge to provide 1Gb storage per user on a free mail system. So it can be interesting technically to invent. But come on, the aim is plain stupid: 1Gb email ! Means you can delete 90% right now with no loss. It's satisfying the moto have more, when we'r already obese! That's just an example. Challenge and learning is not enough for a good job. Good aim is wanted.

      Ciao ciao

  96. Re:GODDAMNIT CMDRTACO YOU FUCKING RETARD MORON! by Anonymous Coward · · Score: 0

    FEAR THE DAMNED ELDER GOD OF THE BEIGE OF THE END TIMES FOR IT SHALL CONSUME YOUR SOUL

    Stupid Stuff

    Please try to keep posts off topic.
    Try to flame other people's comments instead of crapflooding new threads.
    Don't read other people's messages before posting your own the same way editors duplicate articles.
    Use a racially offensive subject that doesn't describe what your message is about.
    Offtopic, Inflammatory, Inappropriate, Illegal, or Offensive comments might be moderated. Preferably as +1 Insightful and Informative, as they deserve.
    If you want replies to your comments sent to you, consider fucking yourself like a dog.

  97. Interesting that you would mention Eric... by PaulBu · · Score: 1

    ... because Paul Graham and ESR seem not only to share the political ideas but also be quite good friends in real life too, from what I've read. ESR, by the way, wrote a foreword to "Hackers & Painters". So I would not actually try to contrast their opinions too much...

    Paul B.

  98. Don't get above yourself (Re:Java Vs. perl) by Anonymous Coward · · Score: 1, Interesting

    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.

    Developer<->building architect
    Sysadmin<->maintenance/facilities person (i.e. IT janitor)

    There are shitty developers who really are barely qualified to be a sysadmin and there are spectacular sysadmins whom I'd place in a development position anytime, but in general the above is true.

  99. Not from what I've seen by SuperKendall · · Score: 1

    I'm a Java programmer, but I've done tons of UNIX related work in the past and often know more UNIX commands that sysadmins I encounter. Especially since UNIX admins mostly really only know admin tools, whereas over may years of programming with different languages I have had to use just about every tool in the system for one reason or another and so know more about things like sed/awk/tr/cut/make/diff/patch etc...

    I would say that a PROGRAMMER, in any language (yes, even Java!) is much more likeley to be a hacker than any non-programmer - becuse they are working on ways to make the computer work for them, instead of a primary focus being to keep a system operational.

    Sure there are a number of guys out there programming Java that are not really hackers. But just because someone is using Java as a primary language does not preclude them for knowing a great deal about other things - even if they enjoy using Java!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  100. RTFA! ;-) by PaulBu · · Score: 1

    Sometimes great hackers make the worst employees. They are hard to get along with, arrogant, and throw tantrums.

    TFA explicitly suggests segregating the great hackers in their own departments where they can work *with others* of the same abilities. You get dime-a-dozen post-1999 Java programmers to do the "boring stuff".

    As for: If you see a great hacker don't hire them as an employee. Hire them as a consultant... -- again, the explicit advice is not to hire him but to bring him as into your company as a co-founder (or at least give enough of teh stake in the Co. to keep him attached and interested).

    No, seriously... RTFA

    Paul B.

  101. Two type of hackers by cryptoluddite · · Score: 1

    The main point that the author is missing is that there are two types of hackers: those that are really good at quickly making complicated code that does the job, and those that are really good at making beautiful code that does the job better and simpler. The speed-hackers like perl and C++ whereas the quality-hackers like Java and C. It's the difference between pixels and bitmaps vs vectors and display-pdf, or Windows vs Mac.

    The author clearly has no experience with the kind of great hackers that favor elegance over quickness. That's why he doesn't stop to think that google probably requires python experience for their Java jobs because they're using python to script Java. . Also, he says retarded things like "the less smart people writing the actual applications wouldn't be doing low-level stuff like allocating memory". It takes just as much genius and skill to do a great job arranging high-level components as low-level components and the key is to get your great hackers to do the core parts at every level and have the rest fill in the details around it.

    Still, there are a lot of good observations in the article.

  102. Hey, it's only 200 LOC total! by PaulBu · · Score: 1

    ... you can almost introduce the desired "one little change" by exhaustive search (err, "genetic algorithm")!

    Actually I've done almost (or maybe exactly!) the same, at least I used to visualize "stuff" inside old dusty-deck FORTRAN programs by making them write PostScript code and the input was definitely coming from PERL.

    Just think how many more lines of code will you need to visualize something on your screen (and be able to print it in publication quality afterwards, if needed!) if you would have to re-implement half of GhostScript (and your printer's firmware as well) in your FORTRAN program. ;-) Not a pretty thought, huh?

    Paul B.

  103. the best hacker i know by Anonymous Coward · · Score: 0

    wrote a fast fourier transform library in intercal!

  104. Software Craftsmen - Loving to Code by BrianMarshall · · Score: 1
    I view programming as a craft and I do it in vi.

    If your development can be done by resources following a methodology, fine. Hire them by the pound and make sure they follow the methodology.

    Some development is more difficult, it has aspects that, if implemented by resources, will yield an unmaintainable, bloated mess. That is when you need developers who can see through the maze of complexity and develop reliable, understandable, maintainable, extensible code. That is when you need a craftsman.

    One characteristic of great programmers: they love to program.

    --
    "When the going gets weird, the weird turn pro" -- HST
    1. Re:Software Craftsmen - Loving to Code by Keel · · Score: 1

      I agree with what you said here, but I don't understand why you call that a craftsman. It sounds like a pretty good definition of engineering to me.

      I suppose one of the problems with software development is we still don't have alot of good vocabulary to describe it.

      I understand why people want to call software development a craft. There are elements of it that are more closely resemble art than engineering (for example, how do you measure a programmer's productivity? Answer: you can't). To call it strictly a craft or strictly engineering is over-simplifying it either way; there are elements of both. I just think calling it a craft, and calling programmers "hackers", causes more problems than it solves. And calling it engineering more closely describes the problems associated with building any application of significant size or complexity.

      --

      ----

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

    2. Re:Software Craftsmen - Loving to Code by BrianMarshall · · Score: 1
      Yeah, in some respects "engineering" does describe what (great) programmers do, but there are two aspects...

      At the finest level of detail, in a small function or block of code (3 to 10? lines), it does turn into a craft; it is like building furniture; all pieces fit together with all the others. (Of course, if a programmer takes this approach at any but the finest level, he isn't a hacker or an engineer - he is a fool.)

      I am in Calgary, which is full of real engineers - you know, the people who spend years learning about all sorts of things, then wear the steel ring signifying that they take legal responsibility for what they design. This is one of the ancient professions and its practioners take a dim view of titles like "Sanitation Engineer" and "Network Engineer". I don't like to usurp the title of an ancient profession.

      On a side note, in my experience real engineers generally make lousy programmers (at least, if their job is being an engineer) - they tend to write software that handles the immediate problem this afternoon and God help you if you want to make the code more general later.

      When you get right down to it, engineering is about applying standard or safe practice to a new problem, whereas, the essence of software development is seeing the fundamental simplicity in a complex real-world situation, and developing something based this view.

      A good program is extensible because it reflects the fundamental simplicity (of the abstracted view) of the real world. A good bridge or dam or oil refinery does not generally have to be extensible.

      --
      "When the going gets weird, the weird turn pro" -- HST
  105. Re: C vs Python/Perl has a hacker-used language by Anonymous Coward · · Score: 1, Informative

    1. At the time that SourceForge was started, C was a much more well-known language than Python.
    2. As other respondents have mentioned, most projects on SourceForge never get past the starting block.
    You should instead compare stats of level 5 (Production, stable) projects.
    3. Many people knew C before Python came along, and are reluctant to learn a new language.
    (These people are not necessarily hackers.)
    4. Many of the projects on SourceForge are "low-level", e.g., part of the kernel, and/or must run very quickly, and so are written in C for performance (speed) reasons.

  106. Spammers have broken Bayesian spam email filtering by iamcf13 · · Score: 1

    I have coded shareware/freeware alternatives.

    I use one of them myself to check my email and
    automatically delete unwanted email.

    Do they qualify as 'Great Hacks'?

    You decide.

    SpamByte: Game Over, Spammers/Computer Crackers.

  107. He bsically claims Hackers are useless by warm+sushi · · Score: 1

    This quote speaks volumes:

    "One of the worst kinds of projects is writing an interface to a piece of software that's full of bugs. Another is when you have to customize something for an individual client's complex and ill-defined needs. To hackers these kinds of projects are the death of a thousand cuts."

    Ignoring the first sentence (It's kinda obvious), the second though is more entertaining. Why? Becayse it describes basically ever single real software project EVER! If 'real' hackers can't handle that sort of project then in the real world they are utterly useless.

    "Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers."

    Great, so hackers are the sort of person who just refuse to deal with the complexity of generating a reliable, functional system. Fantastic. Let's hire a whole bunch of overly sensitive prats whoe refuse to work on software because it's a little bit messy or because the user isn't quite sure what they want yet!

    Great. Am i a a hacker? Not any more. I like to get the job done, and i like to get it done properly. Guess that makes me dumb.

  108. I'm doomed! by bob_jenkins · · Score: 3, Funny

    OMG, I write in C and Java, my OS is Windows ME, I'm willing to fix bugs in 20-year-old code, and it's taken me over two weeks so far to write a simple stream cipher + MAC! I must be lousy!

  109. MS Toolmakers by prozaic · · Score: 1

    "If Microsoft used this approach [in-house toolmakers], their software wouldn't be so full of security holes, because the less smart people writing the actual applications wouldn't be doing low-level stuff like allocating memory. Instead of writing Word directly in C, they'd be plugging together big Lego blocks of Word-language."

    One would think that '.NET' embodied this idea fairly well.

  110. Golden age of "hackers" already past by Frans+Faase · · Score: 1

    Interesting how he describes how the introduction of each new medium (like painting, drama, novels) produced it own geniuses that were never surpassed by anyone that came later. I think this is also true for computers, but I guess that we are already behind the stage of those geniuses with respect to computers. So the time of the "Great Hackers" is already behind us, especially if you think that there are milions trying to write computer programs for their daily living. I have written programs for more than a quarter of a century, and I can tell you, that I haven't seen any new and great ideas in the past fifteen years. (And this language "arc", some syntactical sugar on top of LISP, is really BS. They syntax of LISP does not need any improvement. Twenty five years ago, I could count paratheses, simply by reading LISP. I never have understood what was the point.)

  111. "Perl is geared toward solving problems quickly" by po8 · · Score: 3, Insightful

    A computer is a machine for getting wrong answers quickly.

    Perl can help with that.

  112. His Comments Got Kinda Odd... by Anonymous Coward · · Score: 0

    At first when I was reading the article, I saw how most of this stuff could be true, as many of the great "hackers" who I enjoy working with share similar qualities. But then I think his problem was getting a little too specific, I don't think great hackers have to prefer open-source tools 100%, I don't think a programmer would such if he voluntarily used Windows. I think theres plenty of great programmers out there and the greatest ones are at home working with Linux or Windows, Open-Source or Closed source. In fact many of the greatest programmers I know always try to write code that will run on any operating system. Personally, I think the only true measure of a great hacker, is whether or not they can come up with an elegant solution to a complex problem.

  113. I disagree on "anyone can make changes" by raehl · · Score: 1

    The advantage of Perl you're trying to get at is that it can handle syntax that is analgous to syntax in pretty much any other programming language.

    But that's also it's greatest drawback - four people can use four entirely different syntaxes to write something, and they can make *NO* sense to any of the other people.

    The other porblem is that while it has very powerful shortcuts (like $_), it also has very powerful shortcuts. It's like acronyms in the military - if everyone knows what the acronyms are, then communication is more efficient. But if you havn't been exposed to the particular acronyms being used, it's a right pain.

    Perl is great if you're writing something to automate a task so yu odn't have to do it - it takes very little effort to have a program that does what you want it to do. But if you're going to use it in a large environment with multiple people working on it, you have to be very careful that you document well, and probably also have some standards of style across the coders.

    I have one Perl system with only myself and one other person working on it and we have TREMENDOUS conflicts of style that we have to resolve - if we're not careful we spend most of our time rewriting the other person's code in the style we like.

  114. Perl by The+Kow · · Score: 1
    This may look like flamebait, but give it a chance first.

    My primary programming experience a year ago was in Java, followed by C/C++. Along the line at my most recent job (which was a year-long internship, meaning I had a lot of freedom to pursue my own learning course), I had to choose a scripting language to use to develop a number of very diverse testing tools. I looked at bash, expect, Perl, and Python.

    - Bash went out quickly, it simply wasn't powerful enough.
    - Expect, as well. Especially since there are expect modules for Python, and I'm assuming Perl wouldn't have too much trouble emulating expect-type functionality, either.
    - Perl was powerful, but the code got thick and convoluted.
    - Python was like Perl, only readable, and easily extensible should my needs ever require that.

    I went with Python. I know Perl has several advantages, I have and had no intention of discounting it, but in truth I kept coming back to one point, and this is where it ties into the article:

    Perl seems so popular, in large part because people can 'show off' their geekiness by making one line of code do about 50 different things.

    This is great, except that it makes it infinitely harder to read, *AND* 99 times out of 100, the Perl code I looked at had been written the long way, FIRST, and *then* abbreviated. That means that someone took the time to do things in the same length of time it would've taken them in Python, then took *EXTRA TIME* to exert every shortcut upon their code to make it brief and, frankly, aloof.

    I will admit, that as you use Perl more and more often, you can probably do these shortcuts in your head, and things become familiar very quickly. The problem is, that still doesn't make your code readable, to anyone else, or to yourself a month later when you haven't looked at your program in a while.

    So why is it so appealing? I think it is because, as I was looking at Perl, I found myself very attracted to the notion of how 'cool' it would be to have one line of code do so much work. It was like taking engineering a step deeper, and instead of engineering software, I was engineering code. Still, this all obfuscates the simple fact that the code isn't necessarily shorter, it's not necessarily any more powerful than, say, Python, and it's less reusable. The reusability in particular is a major problem when writing, as I was, test tools, because it makes it that much harder to go back later and figure out exactly what your results mean if it wasn't clearly documented, or if changes need to be made to the testing criteria, or to the test target itself.

    So in summary, it felt like Perl was a lot of flash, flare, pomp, and pretense, and while a good deal of it was well-deserved because it *is* a powerful scripting language, there was enough additional 'crap' that made me steer away from it as my language of choice.

    So my question is, is it possible that, given the following:
    Indeed, these statistics about Cobol or Java being the most popular language can be misleading. 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.
    Is it possible that the number one language is Perl because a significant portion of the people who use it do so because it helps them feel geekier, 'hacker'-ier, or somehow more 'cool' in their programming methods? I feel as if the author may've misled his readers by suggesting that you can simply 'Listen to the Hackers' in order to figure out what the best language is. As much as we like to look up to them, hackers, indeed geeks in general, are just as susceptible to mistakes of pride and vanity as anyone else.
    --
    Moo
    1. Re:Perl by Schwarzchild · · Score: 1
      You clearly do not understand the power of Perl. As Graham likes to say "succinctness is power" and Perl is as succinct as you can get.

      If you choose to follow the path of Perl then you will eventually understand just how powerful it is. I can say this from experience. I know many programming languages and Perl is one of the most powerful. Python comes close but its syntax is ugly because it forces you to treat nearly everything as an object.

      --

      "sweet dreams are made of this..."

  115. So wrong it isn't even funny. by warrax_666 · · Score: 1
    Strong typing != Static Typing. Java and Python both have strong typing. Java also has static typing whereas Python has dynamic typing. Better for maintainability? Sure, in some circumstances... until you're forced to break the typing just to be able to have collections of (syntactically*) incompatible elements. (Note that the new generics in Java2 1.5 don't solve all the problems related to this).

    (*) I.e. they don't/can't inherit from each other or implement the same interface. This happens when you don't control the source of all the classes you need to use.


    Over languages like C and C++ you may add garbage collection, bounds checking, security constraints


    Garbage collection: Wrong! You can add GC to C and C++ (Google for the "Boehm" garbage collector), what you cannot do is take GC out of Java.

    Bounds checking in C/C++: Add a BoundsCheckedArray which supports the same operations as a native array, and you can use them almost interchangably.

    The above leads me to believe that you have absolutely no idea what you're talking about or trolling.
    --
    HAND.
    1. Re:So wrong it isn't even funny. by kaffiene · · Score: 0, Flamebait
      Garbage collection: Wrong! You can add GC to C and C++ (Google for the "Boehm" garbage collector)

      Gosh, really? I'm quite well aware of GC allocators for C++, but that hardly goes and retrospectively refits all your 3rd party library code to use it, now does it?

      Bounds checking in C/C++: Add a BoundsCheckedArray which supports the same operations as a native array, and you can use them almost interchangably.

      Ditto: the existence of smart ADTs doesn't cause all your third party code to be miraculously recoded to use it, now does it? OTOH, Java has that kind of safety through and through.

      You accepted that static typing is a maintability bonus and you avoided mentioning checked exceptions which I assume means you accept that point too. The existence of half-hearted tack-on imitations for C++ does more to prove that these basic features of Java are desirable features for maintainability

      The thing is, there is quite a difference between being designed from the core outwards for security and safety, and being retrofitted with features bolted on the side over the top of core code which will never share the new enhancements.

      The above leads me to believe that you have absolutely no idea what you're talking about or trolling.

      Yeah, well with 20 years coding experience and the majority of my professional career coding in C++, I'm just going to back that I do know what I'm talking about.

      Take a chill pill dude - C++ is a great language, but if you can't see its security and complexity failings then you've got a serious case of language bigotry going on. All languages have faults, and those are C++'s.

    2. Re:So wrong it isn't even funny. by SigmaEpsilonChi · · Score: 1

      I would like to personally peruse some of your finest examples of C++ code that you have personally written. This is to ascertain whether the implicit claim of authority from 20 years of development really has any merit.

      Also, unrelated to my request, it is unfortunately the case that no platform automatically ensures that all frameworks (third-party or otherwise) are constructed with homogeneous datatypes and are free of any disjoint types that are logically congruent for some given resolution of comparison but otherwise functionally different in implementation.
      This though is a really an example of an issue that can appear in the form of concerns regarding the "safety" of various datatypes (proper checking of preconditions, postconditions, and invariants; proper handling and propagation of exceptions; proper specification and utilization of static type constraints; consistent guarantees of reentrancy; correctness specification that is in sync with implementation), but also matters of efficiency (consistent use of the correct datatypes for the implementation of tasks; consistent use of caching infrastructure; efficient utilization of disk, network, memory, and cache resources through reuse; efficient use of available processing and heap resources through proper specialization and avoidance of unnecessary boxing, and efficient checking of contracts), matters of maintainability (being able to decide where it is necessary to make modifications for behavior to manifest uniformly throughout the system, consistent usage and storage of logging information, being able to easily integrate new frameworks into the code base), and really a lot of other things that are beyond the scope of my interest to mention.
      This problem has nothing inherently to do with the development platform as such, though various languages and frameworks certainly make certain issues of correctness, efficiency, and maintainability easier to manifest, the underlying problem is still much more intrinsic to the construction of software frameworks in a heterogeneous world.
      You can, to some varying but limited degrees of extent, deal with issues of correctness and maintainability using the adapter pattern, but this costs both time and efficiency.
      Back to my point, though, Java does not solve this problem. That some C++ library may not make use of an optionally or mandatory boundary-checked collection is not terribly much different than some Java library not making consistent use of (and potentially not correctly using at all) exceptions, not even having compile-time correctness guarantees of type-safety for a collection, providing poorly-specified and unchecked preconditions, not using the correct datatype(s) for given tasks, or following consistent logging.

    3. Re:So wrong it isn't even funny. by Anonymous Coward · · Score: 0
      Hey slick, have you ever heard of the p element? It is used to break up long, pompous screeds into smaller, more coherent blocks of text. You might consider checking them out.

      See the W3C XHTML spec for details, but it's pretty simple, and I'll happily get you started. In brief, for each $paragraph in your self-masturbatory rant, replace it with <p>$paragraph</p>. An obvious genious (sic.) such as yourself should have little trouble with this.

      I thought perhaps you were a troll, and the pompous, insecure, affected tone an ironical joke, but I think you're actually serious. You probably think that tone impresses people, and maybe it does impress some dolts you know, but it's really quite laughable to the rest of us.

    4. Re:So wrong it isn't even funny. by SigmaEpsilonChi · · Score: 1
      Why would I look at one of the XHTML specifications (you have neglected to indicate which version, unfortunately) for composing a post on Slashdot? That would be rather out of place, don't you think?

      I'm not certain why you desire me to encapsulate my post within a paragraph tag, but I suppose I can aid you this time.


      I would like to personally peruse some of your finest examples of C++ code that you have personally written. This is to ascertain whether the implicit claim of authority from 20 years of development really has any merit.

      Also, unrelated to my request, it is unfortunately the case that no platform automatically ensures that all frameworks (third-party or otherwise) are constructed with homogeneous datatypes and are free of any disjoint types that are logically congruent for some given resolution of comparison but otherwise functionally different in implementation.
      This though is a really an example of an issue that can appear in the form of concerns regarding the "safety" of various datatypes (proper checking of preconditions, postconditions, and invariants; proper handling and propagation of exceptions; proper specification and utilization of static type constraints; consistent guarantees of reentrancy; correctness specification that is in sync with implementation), but also matters of efficiency (consistent use of the correct datatypes for the implementation of tasks; consistent use of caching infrastructure; efficient utilization of disk, network, memory, and cache resources through reuse; efficient use of available processing and heap resources through proper specialization and avoidance of unnecessary boxing, and efficient checking of contracts), matters of maintainability (being able to decide where it is necessary to make modifications for behavior to manifest uniformly throughout the system, consistent usage and storage of logging information, being able to easily integrate new frameworks into the code base), and really a lot of other things that are beyond the scope of my interest to mention.
      This problem has nothing inherently to do with the development platform as such, though various languages and frameworks certainly make certain issues of correctness, efficiency, and maintainability easier to manifest, the underlying problem is still much more intrinsic to the construction of software frameworks in a heterogeneous world.
      You can, to some varying but limited degrees of extent, deal with issues of correctness and maintainability using the adapter pattern, but this costs both time and efficiency.
      Back to my point, though, Java does not solve this problem. That some C++ library may not make use of an optionally or mandatory boundary-checked collection is not terribly much different than some Java library not making consistent use of (and potentially not correctly using at all) exceptions, not even having compile-time correctness guarantees of type-safety for a collection, providing poorly-specified and unchecked preconditions, not using the correct datatype(s) for given tasks, or following consistent logging.

    5. Re:So wrong it isn't even funny. by Anonymous Coward · · Score: 0
      Any of the XHTML specs would do. They don't differ with regard to the p element. As for whether it's out of place to know something about the descendant of the markup language that will mark up your language and render it more or less intelligible, you're either being obtuse or poking fun at the 1999-era Slashdot markup. In either case, I'd submit that your prose is as readable as the 50-line scripts that self-styled 'great Perl hackers' write on one line. Only computers ignore whitespace. P.s. As you're well aware, I meant *conceptual* and not *lexical* paragraph in my original post, so you surely haven't obliged me.

      P.p.s. sic.

      And you still don't see the point of paragraphs, I'm sure...

    6. Re:So wrong it isn't even funny. by SigmaEpsilonChi · · Score: 1

      There is however more than one XHTML specification, and thus I cannot reference the XHTML specification, and must instead reference an XHTML specification, or the specification for some version of the standard. I think you'll find that the ambiguity of your suggestion was regretfully not resolvable a priori. That Slashdot does not make use of any version of XHTML only further necessitates the presence of clarity in making such requests, when it does not follow that any such standard would prove relevant for issues regarding the posting of comments on Slashdot.

      I am also uncertain how one can place a 50-line script on a single line, unless I am to assume that you mean that extraneous line terminators have been removed been removed from a previously 50-line script, in order to construct a new one-line script sans the aforementioned extraneous line terminators. In either case I am not certain that my earlier post could sanely be argued to be the equivalent of such a one-line script, for it consumes muliple lines and does not (at least to my knowledge) contain anything resembling a script.

      I also take exception to your insinuation that computers ignore whitespace. Not being cognizant, computers are quite incapable of refusing to respect any aspect of human language. If, however, we keep your premise that "only computers ignore whitespace," infer from your ability to compose dialogue on Slashdot that you are not a computer, and that therefore you do not ignore whitespace, I am left with the sensation that the argument while sound would be untrue.

      As an aside, I am uncertain why you continue to use "sic" (which I read to mean Spelling Is Correct), as your usage seems to be unusual at best.

  116. No wonder all us ex-NeXT employees were ... by tyrione · · Score: 1

    labeled as arrogant.

    We had a mantra during the Openstep initiative.

    Sun doesn't get Objects.

    The mantra never changed even after Java was born and even after all the politics settled with Sun deciding to use Java when it was clear Avie and Co. found the Openstep for Solaris progress not worth pursuing.

    To this quote:

    I've read that Java has just overtaken Cobol as the most popular language. As a standard, you couldn't wish for more. But as a medium of expression, you could do a lot better. Of all the great programmers I can think of, I know of only one who would voluntarily program in Java. And of all the great programmers I can think of who don't work for Sun, on Java, I know of zero.

    I answer, "Try the entire Cocoa Team that includes pre and post merger with Apple. If Sun had listened to NeXT Java would actually be a better language."

    Quite a few innovations that Apple Engineering does with Java comes from Objective-C experts. But then again this gentleman has a Ph.D so automagically he gets recognized as a Visionary?

    I've rarely met a Visionary who actually wanted to waste the time it took to satisfy the Ph.D requirements, regardless of discipline.

  117. Great Hackers use many languages... by Numen · · Score: 1

    Great hackers use many languages. Wannabe hacker become an advocate of "The" language that they happen to be into.

    There's stuff I've written that's trivial in Prolog but would be a nightmare to write quickly in Python, Perl, C/C++, Java or C#. There's obvious cases where one might be using SQL and to suggest that one should be using Python because it is the "best language" is just stupid.

  118. Hah! by warrax_666 · · Score: 3, Insightful
    everyone uses it, because it's all they know exists.

    Or maybe they tried it and found it lacking?

    And what is this fascination with OOP? The only task I can think of (please name some more if can think of any) that lends itself naturally towards OOP is GUI/Widget handling. Everything else is much better expressed using so-called "sum types" (read about ML to find out what they are) and pattern matching.

    Forcing everything into the OOP way of thinking without even considering that e.g. the functional/declarative way of doing things might be better suited to some tasks is certainly not clever. So much for Ruby (and Java, but the Java people probably didn't know any better at the time).
    --
    HAND.
    1. Re:Hah! by Scarblac · · Score: 1

      And what is this fascination with OOP? The only task I can think of (please name some more if can think of any) that lends itself naturally towards OOP is GUI/Widget handling.

      (Some) games. I learned OO when programming a MUD, back in the day. LPC is a beautiful, object-oriented variant of C, in which every source file is automatically a class, every function in it automatically a method of that class, etc.

      In a MUD, you have rooms, players, weapons, monsters, items inside the rooms, items in inventories (actually that's inside the player)... it's just very natural.

      Different areas of the game were written by different people, but I could make the armour I made resistant against the poison someone else had made, because I knew he would call the is_poison_resistant() method in all the armour a player had (in LPC, a call to a non-existing method in an object would just return 0 - so armour that didn't have the method was not poison resistant by default).

      Since coding that for a few years, I have trouble explaining OO to people who don't quite grasp it.

      --
      I believe posters are recognized by their sig. So I made one.
    2. Re:Hah! by OmniVector · · Score: 1

      Or maybe they tried it and found it lacking?
      i assume you meant ruby by this.. but anyways, most python people i know have never seen ruby. and half the ones who haven't seen it haven't even heard of it. if only one in four has actually used it, which would be an overestimate, then that pretty much sums up the fact that "everyone uses [python] because it's all they know exists". i'm not stating at this point that it's clearly better, but i am saying that it doesn't get 1/10th the coverage.

      And what is this fascination with OOP? The only task I can think of (please name some more if can think of any) that lends itself naturally towards OOP is GUI/Widget handling. Everything else is much better expressed using so-called "sum types" (read about ML to find out what they are) and pattern matching.
      OOP lends itself to many problems. knowing when and where to use it of course is a strong point. however python claims to be OOP, yet half the base library is comprised of functions like intval( "1" ), whereas in ruby it's a thought off the other way around, as a function on an object (oop) "1".to_i. the clear distinction, whether you like it or not, as i stated in my post, is that ruby is a more pure oop based language. that's all i'm advocating and you'll be very hard pressed to say i'm wrong with that statement.

      if you go to any major software house today, you'll find OOP is the tool of choice for the vast majority of jobs. procedural, functional, logical, and other language paradigms exist but they aren't often useful in the solutions where python is used. the simple matter is, if you're using python you're probably using it for oop. if you're using a poorly implemented oop language just to get the dynamic features of a scripting language, why not go with a first-class oop language rather than getting yesterday's scraps.

      --
      - tristan
    3. Re:Hah! by mwa · · Score: 1
      as a function on an object (oop) "1".to_i

      I think your perception of Python's OOP implementation is dated. Try the following:

      $ python
      Python 2.3.4 (#2, Jul 5 2004, 09:15:05)
      [GCC 3.3.4 (Debian 1:3.3.4-2)] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> dir("1")
      >>> dir(1)
      I can't post the results due to slashcode's "too many junk characters" attitude problem. The bottom line is that even "native" types in Python are now objects.
    4. Re:Hah! by ultrabot · · Score: 1

      most python people i know have never seen ruby. and half the ones who haven't seen it haven't even heard of it. if only one in four has actually used it, which would be an overestimate,

      It probably is. Most pythonistas probably read the documents, and realize that the language is not the "right stuff". Too much amateurism and popularity whoring for its own good.

      however python claims to be OOP, yet half the base library is comprised of functions like intval( "1" ), whereas in ruby it's a thought off the other way around, as a function on an object (oop) "1".to_i

      It doesn't make Python less OO. Python library is just implemented with realization that functions are more intuitive for some things. That makes a lot more sense than forcing everything into methods. Of course Python could have used methods for everything, but that's just not optimal for the flow of code.

      Functional approach to libraries is one the things I absolutely love in Python. It just works for me (and many others, apparently). You should realize that most design decisions in Python are there for a good reason, and it's *not* because Python's OO was somehow lacking. I have adamant trust in the core Python developers, which is more than I can say for core Ruby developers that seem to have made several completely idiotic design decisions just to please perl migrators. Manuals in broken english don't reinforce my confidence either.

      if you're using a poorly implemented oop language just to get the dynamic features of a scripting language, why not go with a first-class oop language rather than getting yesterday's scraps.

      Indeed. Why settle for the second best when you can have the snake and eat it too?

      --
      Save your wrists today - switch to Dvorak
    5. Re:Hah! by Anonymous Coward · · Score: 0

      It doesn't make Python less OO.

      I wish everyone would stop saying "less OO" and "more OO." What in the hell does that really mean, anyway? Using more or fewer OO constructs? Instantiating more or fewer objects at runtime? Having more or fewer dyanamically bound methods? Who cares about that crap? It's not like that's a good metric for quality.

  119. how to enjoy working on ill defined projects by nikster · · Score: 1

    graham writes that hackers loathe to work on ill defined projects with users who don't know what they want. yet, in real life, that's what happens.

    they will call you with some great idea about software they want, and you will go there and slowly but surely figure out that they have no idea what they are talking about - the project is ill defined. users have no clue.

    i have seen people react to this situation with disgust: they try to pin down the customers, maybe eventually get then to sign something and then develop exactly as per spec. the outcome is not pleasing for anyone.

    in the article graham also writes that great hackers are distinguished by knowing which problems to solve.
    the trick to still enjoy these kinds of situations is to get back that: know what your problem is. your problem is that the customers want something, but don't know what. so that problem needs to be solved before any other problems are known.
    it's a challenge: can you make the users find out what they want?
    so you go ahead and make that your highest priority. talk to them. suggest graphic solutions to them - if they reject them, they will realize more clearly what they want.

    this is a long process, and it certainly involves a lot more talking than some hackers can stand. but in the end, coming up with a great product is so satisfying, it's all worth it. besides, while you talk to them you yourself understand more clearly what the problem is, which basically saves you implementation work. because really understanding the problem is also, at the same time, the solution.

    disclaimer: in the real world, i see other people miscommunicate with customers first, then implementing a crappy solution to the wrong problem, then, disaster. in fact, in the real world, when they ask me what they did wrong/should improve, all i can answer is mu

  120. False argument alert: by StrawberryFrog · · Score: 1

    Just because variation in wealth can be caused by variation in talent, does not mean that it always is, or even that it usually is. In the real world, variation in wealth is more often caused by factors like inheritance and the golden rule: them with the gold make the rules.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  121. Where the money is by kahei · · Score: 1


    Graham is right -- there are nice monolithic problems that hackers love, and fiddly 'multiple small arbitrary items' problems, usually about integrating existing crap software and processes, that hackers hate.

    Guess which one is harder to actually get done effectively? Guess which one is least well understood? Guess which one is needed more often?

    I can find a 'great hacker' who can solve a great big algorithm problem in any CS department. Solving 'interface this broken business process with this broken 40mb excel spreadsheet so that it's all a bit less broken' is actually _hard_.

    --
    Whence? Hence. Whither? Thither.
    1. Re:Where the money is by russotto · · Score: 1

      A hacker can interface a broken business process with a broken spreadsheet and make it better, certainly. He might even like it. Graham is wrong here -- nasty little problems can be interesting too.

      But if once he's done it you tell him no, the client wants it THIS way. No, now the OTHER way. No, this THIRD way. THEN you're going to upset him. And it's not just hackers who get ticked at that sort of thing. Which of course does happen on every real project.

  122. About Ocaml by master_p · · Score: 1, Flamebait

    I did not know this Ocaml language existed, so I googled it and found very interesting things. Here is the list of features Ocaml has:

    1 First-class functions: functions can be passed to other functions, received as arguments or returned as results.
    2 A powerful type system with parametric polymorphism and type inference: functions may have polymorphic types. It is possible to define a type of collections parameterized by the type of the elements, and functions operating over such collections. For instance, the sorting procedure for arrays is defined for any array, regardless of the type of its elements.
    3 User-definable data-types and pattern matching: the user can define new recursive data-types as a combination of record and variant types. More importantly, functions over such structures can be defined by pattern matching: a generalized case statement that allows the combination of multiple tests and multiple definitions of parts of the argument in a very compact way.
    4 Exceptions for error reporting and non-local control structures.
    5 Automatic memory management.

    Then I looked inside the site and checked out the numerous parameters. Well, guess what I found: not a single feature that C++ does not have!

    Ocaml is a mixture of ML and C++. ML is clean an nice for doing things the functional way, but imagine what a mess it can be when writing large imperative code with ML style! a total mess! unreadable horrible kludge, that after a while is as unreadable as APL...

    So, why should I use Ocaml? if I wanted to do imperative programming, C++ has all the features Ocaml has an even more. And imperative languages can be used for writing functional programs...the quicksort algorithm for example is about ten lines of code using tail recursion, but it is 10 times slower than the non-functional version(due to allocating new objects for left and right parts)!

    The Ocaml site (http://www.ocaml.org/) has the following moto at the top of its page:

    "The programming tool of choice for discriminating hackers"

    After having spent ten minutes with the language, anyone with good experience on C++ and Java can tell why Ocaml has never caught on, and will never will, for serious projects. It may be ok for hacking small things out, but for large projects, stay away.

    1. Re:About Ocaml by Anonymous Coward · · Score: 0

      The sentence "The programming tool of choice for discriminating hackers" IIRC comes after a team won an edition of ICFP using ocaml, and it's a joke IMHO. =)

      Howewer, i've read in a presentation done by Brian Hurt that ocaml is overkill for small project and his strengt appear on large application (where large is stated 30 KLOC or more).

      Don't have a link at hand, think i've read this thru the gmane ocaml mailing list archive...

    2. Re:About Ocaml by Anonymous Coward · · Score: 0

      Ok, first you list 5 features that C++ does not have, and then you tag on that OCaml has "not a single feature that C++ does not have!"

      Explanation please...

    3. Re:About Ocaml by Anonymous+Brave+Guy · · Score: 1
      So, why should I use Ocaml? if I wanted to do imperative programming, C++ has all the features Ocaml has an even more.

      If you want to understand the merits of O'Caml vs. C++, what you should be asking yourself is why you want to do imperative programming. There are some good answers to that question, to be sure, but not very many.

      As a guide, a common way to learn about this are goes something like this:

      1. Discover functional programming.
      2. Discover the power of higher order functions, closures, etc.
      3. Discover the power of variant types and pattern matching.
      4. Discover the benefits of a purely declarative coding style.
      5. Go full circle, and realise that side effects and state are used in so many programming languages because they are useful for solving real problems.
      6. Understand that a hybrid approach using functional style for many things but imperative to provide some of the structure has a lot of potential.
      7. Learn that O'Caml is probably the most successful language supporting that hybrid, and thus why it has value.

      BTW, google for "ICFP" to understand the comment about discriminating hackers.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    4. Re:About Ocaml by master_p · · Score: 1

      "Discover functional programming"

      I know ML very well, thank you. Not good enough for building real-life apps. Good in academic environment.

      "Discover the power of higher order functions, closures, etc"

      C++ can not only use functions as data, but also objects as functions. Closures are not needed in C++, since we have templates.

      "Discover the power of variant types and pattern matching."

      C++ has pattern matching exactly like ML. Variants can be created with templates.

      "Discover the benefits of a purely declarative coding style."

      In the end, there is no difference to C++. It is still imperative programming.

      "Understand that a hybrid approach using functional style for many things but imperative to provide some of the structure has a lot of potential"

      No, it does not have any advantage. Any functional style algorithm can be expressed in imperative style.
      And C++ can do functional programming. It *is* a functional language, in some respect.

      "Learn that O'Caml is probably the most successful language supporting that hybrid, and thus why it has value"

      Yes, but it is reduntant.

    5. Re:About Ocaml by Wastl · · Score: 2, Insightful
      i>Well, guess what I found: not a single feature that C++ does not have!

      Two words: static typechecking. This single property has very far reaching consequences. Most importantly, it allows to detect many programming errors at compile time that would go unnoticed in most other languages. Oh, and don't tell me C++ has a strong type system. It hasn't. For instance, I can do all kinds of nasty things with pointers that are never checked.

      Other features:

      • higher order functions, partial evaluation
      • garbage collection (really efficient, not the time and memory consuming stuff from Java)
      • close to the mathematical description of problems
      • ...
      The point is, I can still program the functional way with all its advantages, but revert to imperative style for the small amount of code that really needs to be fast. Personally, I still prefer Haskell, though (lazy evaluation is fun!).

      Sebastian

    6. Re:About Ocaml by Wastl · · Score: 2, Insightful
      No, it does not have any advantage. Any functional style algorithm can be expressed in imperative style.

      Any program can be written on a Turing machine. Or in Brainfuck for that matter.

      And C++ can do functional programming. It *is* a functional language, in some respect.

      No, it fails on most properties that make up functional languages: functions are not "first class", there is no static type checking, there is no partial evaluation, variables represent memory cells instead of values, ...

      Sebastian

    7. Re:About Ocaml by Anonymous+Brave+Guy · · Score: 2, Insightful
      C++ can not only use functions as data, but also objects as functions. Closures are not needed in C++, since we have templates.

      Now, see, you almost had a point when you referred to function objects. They can indeed serve many of the same purposes as closures. But really, such support as C++ does have for treating functions as first class entities is hacky and unreadable template garbage at best. I'm quite a fan of C++ for some things, but that sort of claim is just unrealistic.

      Let's take a specific example. Compare the standard "fold" function in something like ML or Haskell with the hackery required to achieve anything close to the same effect in c++. In the functional languages, it's trivial. In C++, it's... well, if you think it's at all elegant, please feel free to post your implementation here so everyone else can learn from it.

      C++ has pattern matching exactly like ML. Variants can be created with templates.

      Huh? Even people like Andrei, who have written feature articles on this subject, can't provide C++ with anything close to the elegance of a typical functional programming language's "match" construction.

      In the end, there is no difference to C++. It [declarative programming] is still imperative programming.

      Um, no. There is a world of difference. Most of that world is full of side effects, things which a purely declarative style makes rather difficult, no?

      Any functional style algorithm can be expressed in imperative style. And C++ can do functional programming.

      Of course. So can assembly language. Whether they can do it well enough to be of any real use is a different question entirely.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    8. Re:About Ocaml by master_p · · Score: 1

      "Two words: static typechecking"

      " I can do all kinds of nasty things with pointers that are never checked"

      If you don't want it, don't do it, then. C++ does not place a rope around your neck.

      "higher order functions, partial evaluation"

      C++ has templates.

      "garbage collection (really efficient, not the time and memory consuming stuff from Java)"

      That's a stub at Java. C++ templates really help in deterministic memory management. And then, there is RAII.

      "close to the mathematical description of problems"

      Bliz++.

      "The point is, I can still program the functional way with all its advantages, but revert to imperative style for the small amount of code that really needs to be fast."

      You did not tell us how C++ prevents you from that.

    9. Re:About Ocaml by master_p · · Score: 1

      "No, it fails on most properties that make up functional languages:"

      It does not. See below.

      "functions are not "first class"

      They are: functions can be passed as arguments and returned as results.

      "there is no static type checking"

      C++ is strongly typed.

      "there is no partial evaluation"

      It has templates (example: http://osl.iu.edu/~tveldhui/papers/pepm99/)

      "variables represent memory cells instead of values"

      For all practical purposes, it does not make any difference. C++ has the additional benefit of using variables to maintain state and to have 'side effects'.

    10. Re:About Ocaml by master_p · · Score: 1

      But really, such support as C++ does have for treating functions as first class entities is hacky and unreadable template garbage at best.

      It's not unreadable at all. See below for examples.

      Compare the standard "fold" function in something like ML or Haskell with the hackery required to achieve anything close to the same effect in c++. In the functional languages, it's trivial.

      What hackery? it's trivial in C++, too. And with functional style, as well.

      In C++, it's... well, if you think it's at all elegant, please feel free to post your implementation here so everyone else can learn from it.

      Sure, here it is, in functional style, with tail recursion:

      template <class F, class IT, class B> B fold1(F f, IT it, IT end, B b) { return it != end ? fold1(f, ++it, end, f(*it, b)) : b; }
      template <class F, class L, class B> B fold(F f, L &cont, B b) { return fold1(f, cont.begin(), cont.end(), b); }

      You can also do it without tail recursion and gain speed:

      template <class F, class L, class B> B foldi(F f, L &cont, B b)
      {
      B result = b;
      for(L::iterator it = cont.begin(); it != cont.end(); ++it) { result = f(result, *it); }
      return result;
      }

      And the above is without the language knowing what a list is. Here is an example:

      int add(int a, int b) { return a + b; }

      int main(int argc, char* argv[])
      {
      list<int> list1; int i;
      for(i = 1; i <= 5; i++) list1.push_back(i);
      int sum = fold(add, list1, 0);
      int sum1 = foldi(add, list1, 0);
      cout << sum << endl;
      cout << sum1 << endl;
      getchar();
      return 0;
      }

      Huh? Even people like Andrei, who have written feature articles on this subject, can't provide C++ with anything close to the elegance of a typical functional programming language's "match" construction.

      Do you mean that

      template T add(T a, T b) { return a + b; } /

      is not the same as:

      fun add a b -> a + b / ?

      Most of that world is full of side effects

      Programming is full of side effects, if you want to achieve something useful. Programming without side effects is not possible. For example, editing of a document permanently affects its state. That's a kind of side effect that not even functional languages can avoid. The difference between C++ and other languages is that it gives you many tools to avoid the nasty side effects, and have only the good side effects.

      Of course. So can assembly language.

      You don't understand. For any functional algorithm that you write, I have two options: either write it in exactly the same way you do (functional), or write it in imperative way and gain over x10 in speed. Once I test my program and it works, I have a quick routine that I can use in any environment, even in heavy ones. You can't.

    11. Re:About Ocaml by master_p · · Score: 1

      And to put the final nail in the coffin, the following link from the boost::spirit homepage shows that C++ indeed has functional language properties:

      http://spirit.sourceforge.net/distrib/spirit_1_7 _0 /libs/spirit/phoenix/doc/introduction.html

    12. Re:About Ocaml by Anonymous+Brave+Guy · · Score: 1
      Sure, here it is, in functional style, with tail recursion:
      template <class F, class IT, class B> B fold1(F f, IT it, IT end, B b) { return it != end ? fold1(f, ++it, end, f(*it, b)) : b; }
      template <class F, class L, class B> B fold(F f, L &cont, B b) { return fold1(f, cont.begin(), cont.end(), b); }

      And you don't think that's just slightly more unwieldy than the following typical functional code?

      fun foldr f b [] = b
      | foldr f b h::t) = f(h, foldr f b t);

      And of course, this is one of the simplest non-trivial functions that you can imagine.

      Do you mean that
      template T add(T a, T b) { return a + b; } /
      is not the same as:
      fun add a b -> a + b / ?

      No, what you wrote is a syntax error, but even if it weren't, that's generics and not pattern matching. An example of the latter in the context of strings is the foldr function I provided above, but the concept is much more general, and allows the effective use of disjunctive types.

      Programming is full of side effects, if you want to achieve something useful.

      I think that's rather over-stating the case. You need side-effects for I/O, of course, and they're useful for certain other contexts if you're prepared to accept the additional risk. The vast majority of C++ code I've seen doesn't actually need to use anything like as many side-effects as it does, though.

      For any functional algorithm that you write, I have two options: either write it in exactly the same way you do (functional), or write it in imperative way and gain over x10 in speed. Once I test my program and it works, I have a quick routine that I can use in any environment, even in heavy ones. You can't.

      Congratulations, you've just convinced me that you really don't know what you're talking about. It was the arbitrary factor of 10x difference in speed without specifying anything about the algorithms in use that gave you away.

      BTW, I write high-performance mathematical code that's shipped on over a dozen platforms for a living, and I'm the guy they ask to do a lot of the profiling and performance enhancement work, so I do have some clue what I'm talking about here...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    13. Re:About Ocaml by Anonymous+Brave+Guy · · Score: 1
      And to put the final nail in the coffin, the following link from the boost::spirit homepage shows that C++ indeed has functional language properties:

      Sure, it's quite clever, like the various other pseudo-lambda C++ libraries before it, and potentially useful in simple contexts. Now show me one that can write an arbitrary function in place rather than some trivial expressions, without resorting to bizarre syntax hackery whenever something as simple as a function call is required.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    14. Re:About Ocaml by master_p · · Score: 1

      You are a zealot, aren't you? I demonstrated the principles with code, you saw it from another guy much more famous than me...what else do you need?

      I will not deal any further with this discussion because it's getting nowhere. Instead of arguments, all you say that 'it can't be done with C++', without giving any reason or concrete example of why.

    15. Re:About Ocaml by Anonymous+Brave+Guy · · Score: 1

      Zealot? A fanatical supporter? Please. If you look at my posting history, you'll find I often defend C++ against ill-founded criticism. In this case, however, the criticism is fair.

      C++ doesn't support functional programming concepts to anything like the same level as a genuine FP language. Some of it can be done, with sufficient hackery, but the sheer awkwardness of the equivalent code in C++ and a genuine FP example was demonstrated by the foldr comparison.

      As for other concrete examples, I specifically cited writing non-trivial functions in-place in C++, without using awkward syntax for function calls and the like. This is something that even state of the art C++ libraries cannot do because of fundamental limitations in the grammar defining the language, yet it is absolutely routine in any real functional programming language.

      The question was what O'Caml offered that C++ didn't. The answer is real support for functional concepts. You can do these things in C++, with sufficient hackery. You can do them in assembly language, if you must. But the support for them in a functional language is very much better, and using the concepts is therefore very much easier. If you want that support, but you still value imperative coding as well in places, then that is something O'Caml can offer you.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  123. the true hackers are out there. by Anonymous Coward · · Score: 0

    well if you had read the article then you know that true hackers don't know that they are what they are, and this should be comforting to the general public. after all, you might just be one of these blessed creatures.

    i think i am a good hacker, and better than anyone i met... the best people i worked with were equal.

    except this one guy... that guy was a true hacker. he would write things on the weekend, or overnight, little "demos" or "investigations" of his that large teams would not be able to do in half a year. literally! it was amazing. he just found it insanely interesting to find things out and he spent all his time on these things.

    if there was something that everyone knew was impossible to do, he would be assigned the task.

    i once had a problem in the early days of Java, and the entire team - which was comprised of PHDs and at least one genius, all seriuously bright people - didn't know what to do. it seemed hopeless. so they sent me to him - i had never met the guy before but everybody kind of lowered their voice when they talked about him.

    i went into his office and explained the problem. he didn't ask a single question - not a good sign, i thought. bright people ask questions. then i watched over his shoulder as he got to the core of the problem and outlined a solution in about 5 minutes all together. i realized he hadn't asked any questions because he understood perfectly.

    you may not have seen them, but these people exist.

    management was smart enough to give him a big office full of tech toys and keep the mundane tasks away from him. still, in the end they managed to lose him by killing one of his pet projects.

  124. James Gosling point of view by Anonymous Coward · · Score: 0

    James Gosling response to the claim Java is for drones and not-so-good programmers:

    http://weblogs.java.net/jag/page4.html#36

    1. Re:James Gosling point of view by reflective+recursion · · Score: 1

      Christ. He has some serious NIH. Not to mention that much of what he says on that weblog is common sense to people who have been programming for a little more than five years. I would have assumed he would be more aligned to Guy Steele, rather than a regular Joe-Code-plower.

      "It's amazing how cool URLs are, especially when you think of them as more than just web references."

      Ugh. And to think he just discovered this insight in 2003.

      --
      Dijkstra Considered Dead
  125. I preferred this: by BerntB · · Score: 1
    If it is possible to make yourself into a great hacker, the way to do it may be to make the following deal with yourself: you never have to work on boring projects (unless your family will starve otherwise), and in return, you'll never allow yourself to do a half-assed job.
    Besides, am I missing the idiom (as a non-native English speaker), or was that "bend over .. and be the next IBM" a reference to something like this? Wouldn't that be a bit tasteless in a serious article -- (-: but it contained violence so it's ok with puritan American ideals...? :-)

    Ah well, never mind the question.

    --
    Karma: Excellent (My Karma? I wish...:-( )
  126. Ruby vs Python and blatant lying by ultrabot · · Score: 4, Insightful

    how about something more important, like integrated OOP. nothing's worse than claiming to be heavily object oriented, that has a bolted on OOP model.

    OMG, not the Ruby cliche again.

    Python is not by any stretch less OO than Ruby. Having first class functions is not a liability, it's a strength. Object model is not bolted on Python - everything in Python is an object.

    python reminds me so much of windows. everyone uses it, because it's all they know exists.

    Ruby people go to great lengths to attack Python at every opportunity. For the most part this appears to be because modern Python renders Ruby pretty much irrelevant. Ruby is not really better than Python as a language, period. Ruby is better than Perl, and pretty much equivalent to Python on all linguistic accounts, but loses royally on maturity, community and industrial popularity.

    Offset that with the fact that most Rubyistas that talk crap about Pythonistas don't really have experience with Python, but merely reiterate the misunderstandings of other Rubyistas. Repeating a lie often enough doesn't make it true - it makes for mediocre advocacy that might catch a few clueless perl refugees, but isn't going to work for "great hackers" which is the topic of today.

    --
    Save your wrists today - switch to Dvorak
    1. Re:Ruby vs Python and blatant lying by OmniVector · · Score: 1
      Python is not by any stretch less OO than Ruby. Having first class functions is not a liability, it's a strength. Object model is not bolted on Python - everything in Python is an object.
      if i have to pass self to every single member function, that's bolted on. if i have to prepend and append __ to special object functions everywhere, that's bolted on. i'm not sure what you mean by first class functions, but ruby is perfectly capable of something like:
      def myFunction
      return 2
      end

      myVar = myFunction()

      heck, ruby can even do this:
      def foo
      return 2
      end

      def bar(other)
      return other.call
      end

      myVar = bar(&foo)
      in this case i'm defining foo, passing foo as a parameter to bar, and calling foo then returning it's return value. i'm not sure how first-class you can get, but that's pretty first-class to me.

      Ruby people go to great lengths to attack Python at every opportunity. For the most part this appears to be because modern Python renders Ruby pretty much irrelevant. Ruby is not really better than Python as a language, period. Ruby is better than Perl, and pretty much equivalent to Python on all linguistic accounts, but loses royally on maturity, community and industrial popularity.
      ruby came about after python. it took the lessons learned from python and perl and improved them even more. to this day, python still lacks many of the oop and functional (lisp like) features of ruby. to say something so arragant shows me you haven't used ruby. guess what, i have used python. it's the language that is lacking, not ruby. modern "windows" renders linux irrelevant too i'm sure, yet we persevere because linux is a better operating system. modern "windows" has the industrial backing, not linux. all i'm saying is don't consider something better just because it has the ring side advantage. nothing starts out more popular than an already existing language.

      Offset that with the fact that most Rubyistas that talk crap about Pythonistas don't really have experience with Python, but merely reiterate the misunderstandings of other Rubyistas.
      where have i lied? seriously. i don't know, so do tell me. the fact of the matter is i tried python before ruby simply because python was more popular. why of course whould i try a less popular niche language first? if you'd broaden your horizons and actually dive into ruby maybe you'd understand why the few of us loyal to it hold it so dear. i heard a great quote once: "When a community has a small number of utterly devoted followers, it's usually because most people just don't get it." I believe ruby is like that. along with scheme, OCaml, Haskell, and other hacker languages that require discipline and free thinking to adopt and appreciate.
      --
      - tristan
    2. Re:Ruby vs Python and blatant lying by ultrabot · · Score: 3, Informative

      if i have to pass self to every single member function, that's bolted on

      It's a conscious design decision that makes the system more elegant. "Explicit is better than implicit". Of course it would be trivial to circumvent this by writing a preprocessor, but it's not considered a good idea.

      if i have to prepend and append __ to special object functions everywhere, that's bolted on.

      No, it's just a decision to call the methods that. It's just a naming convention. It has no relationship with whether OOP is implemented through functional constructs or not.

      in this case i'm defining foo, passing foo as a parameter to bar, and calling foo then returning it's return value. i'm not sure how first-class you can get, but that's pretty first-class to me.

      Well, you could do:

      def f(x):
      def g(y):
      return x+y
      return g

      myfunc = f(1)
      print myfunc(3) # prints 4

      to this day, python still lacks many of the oop and functional (lisp like) features of ruby.

      What are those features, apart from "blocks"? And functional != lisp-like, BTW.

      guess what, i have used python. it's the language that is lacking, not ruby.

      When did you use it? Modern Python is quite different from, say, 1.5.2 or even 2.1. Ruby had the upper hand in language features before 2.2, but that's gone.

      modern "windows" renders linux irrelevant too i'm sure, yet we persevere because linux is a better operating system.

      I would rather compare Ruby vs. Python with FreeBSD vs. Linux. In fact, that's a surprisingly good analogue.

      where have i lied?

      It's the wording, and speaking of "bolted on OOP". It is simply not true, and a standard part of Ruby rhetoric.

      if you'd broaden your horizons and actually dive into ruby maybe you'd understand why the few of us loyal to it hold it so dear.

      I understand very well why rubyistas hold ruby so dear - it's exactly the same reasons as with Python. The languages are more similar than they are different, which kinda undermines the less mature/popular choice. It's FreeBSD vs. Linux again.

      I believe ruby is like that. along with scheme, OCaml, Haskell, and other hacker languages that require discipline and free thinking to adopt and appreciate.

      Ok, Ruby is perhaps different in that way. Appreciation of Python didn't require discipline at all for me, it hit me pretty much instantly. As would have Ruby, if I hadn't "been there, done that" with Python before.

      --
      Save your wrists today - switch to Dvorak
    3. Re:Ruby vs Python and blatant lying by SigmaEpsilonChi · · Score: 1

      I am going to make an unsubstantiated claim: the person you have been engaging in discourse with is not necessarily overly knowledgeable about what they are speaking of. Any and all readers may accept or object to my claim, and that is fine; I am quite aware that I have no intention of demonstrating it with any depth.

      I frankly cannot decide what precisely "free thinking" is supposed to mean in this case, but we can certainly look at discipline, and perhaps fuzzily consider the matter of "hacker language," albeit I must cede that last one is almost as pointless as considering "free thinking."

      Any programming language requires discipline to use well. If development is not performed with discipline, it will invariably result in erroneous behavior independent of the currently-available means of specifying program behavior.

      One might argue that all languages and frameworks that explicitly hoist the responsibility of all matters of correctness to the developer would require the most discipline, because carelessness will most obviously result in catastrophe. In this vein, one could suggest that constructing a piece of software as a monolithic contraption in machine or assembly language would require the most discipline; after all every operation that modifies flag registers must be properly considered, every memory load and store must be reasoned in terms of both access and type correctness, and so forth.

      One might argue that all languages that force the greatest amount of precision in the specification of behavior require the most discipline, because they would require the most explicit pronouncement of correctness. Every function, method, class, module, and functor would be specified in terms of exacting type-correctness and visibility. Each and every case of all variants would be properly handled in every instance of its use. The precision of type specification would include arbitrary subsets of other types. All contracts would be explicitly stated and checked for correctness on application. In especially limited design cases, memory would be exactingly allocated and done so statically.

      Haskell and Objective Caml both certainly require considerable type-discipline, but neither Scheme nor Ruby does. Haskell and Objective Caml will warn about non-exhaustive pattern matching over sum types, but they do not force correctness; Ruby and Scheme do not even have sum types (which should come as no surprise when they do not have static typing), requiring hand-written reflection and runtime exceptions to provide the functionality. None of them offer compile-time checking of statically specified types that are subsets of other types. There are no hard guarantees about memory usage provided by any of the mentioned languages. None of them require concern for flag registers, but both Scheme and Ruby have a slew of type-correctness-related requirements for discipline and unit tests for things which one could argue compilers or linkers should be verifying. When dealing with modules constructed in lower-level languages, they all have woes about memory-access problems but the only relevant access problems to the discussion of discipline with respect to the language might be those that appear solely within the domain of software constructed only in the language (assuming all, if any lower-level implementation is perfectly-correct) itself, in which case the only access concerns (assuming one does not disable bounds checking with compiler flags for Objective Caml, Haskell, and your Scheme compiler) about memory access are for managing exceptions caused by broken code; not devoid of discipline requirement, but not as catastrophic as the program potentially executing undefined instructions.

      These, though, are merely some examples of the real discipline that is required for designing correct software. Indeed, much of the point of the development of these languages that have been mentioned is to shift away from the discipline required from the minutiae of the first extreme, so that the discipline requi

  127. Microsoft? by Anonymous Coward · · Score: 0
    brilliant people who were good programmers but not up there with the best.

    I think this might be part of Microsoft's problem. They hire the brightest people from the best universities, but look at the APIs and technologies they have created. Their stuff works, and is efficient, but it is ugly, hard to use, and error prone.

    1. Re:Microsoft? by Anonymous Coward · · Score: 0
      I think in the case of Microsoft that the example of American automobiles mentioned in the article is more pertinent.

      If you have no style yourself, you cannot recognize good style in others. A company (think Ford) with zero sense of style is, of necessity, incapable of hiring designers with a good aesthetic sense. This is just another way of saying that their cars are ugly as hell due to their appreciation of ugliness.

      Microsoft is stuck in the same rut they have been for many years now, and they will never recognize it. Arrogance and blind allegiance to the Microsoft way is so inbred into the culture that they will die first. Some of them are incredibly smart, and some are incredibly creative, but the rank and file, from my experience, are just your average uncreative smart people--like Ford's designers, who probably also went to the best schools and good letters of recommendation, etc.

  128. Re:OT: Los Alamos's missing disks NEVER EXISTED! by Anonymous Coward · · Score: 0

    I have wanted to get a job there or in SF, I missed one at the Santa Fe Institute and didn't get picked up for one I was point by point qualified for at ncgr.org. I saw this very interesting job posting somewhere but I can't find the original now: "Internal Labs"
    but I am not qualified for that. have you ever heard of this group "Internal Labs"? the ad makes it sound like they are separate from LANL, but I couldn't find anything on them, its not like CSA where they are hiding in plain sight.

    From what you have heard, how is it to work there? The non-classified aspects, I mean...
    TIA

  129. Janitor... by Big+Sean+O · · Score: 2, Insightful

    At my last job, the guy who emptied out the garbage cans (so I guess that makes him the janitor) was a real computer enthusiast. He knew all about firewire, bluetooth, USB2.

    He was a janitor in a State Government building, and he was about 40, so I'm guessing he got the job when he was a kid (maybe he bailed out of high school because it was boring) and got this job as a janitor. If I was 10 years or so from a full-ride pension, I'd empty garbage cans all day and hack all night, u'betchum.

    --
    My father is a blogger.
  130. PHP by musicmaster · · Score: 1

    I have written in different languages, among them C, Basic and PHP. I believe in simplicity: I must be able to explain a friend who doesn't know how to program at all how the code works.

    C++ never appealed to me because I found it too complicated. Except for the predefined window classes I seldom found a problem that couldn't better be solved with just functions. But maybe I didn't work on big enough projects.

    When I started scripting for the web, I evaluated PERL, but I found it often obscure compared to PHP. At that time Python was still rather obscure, so I didn't give it a serious thought and PHP is now my main language.

    It is not so much that I hate using complicated code (I do a lot with regular expressions), but I do hate waisting a lot of time understanding old code when it could have been "worded" in a more understandable way.

  131. It's NO paradox... just a good vs evil comparison by big+ben+bullet · · Score: 1

    I can't recall him stating that no real hackers want to use Microsoft software...

    He does mention the fact that google puts a "Don't Be Evil" requirement in their available job profiles. Therefore I conclude that any superhacker can either be good or evil and that the evil ones work for Microsoft :-)

    I consider a guy like Anders Hejlsberg to be a real hacker. And he both designed Delphi (when he was with Borland) and C# (as he works for Microsoft today)!

    Maybe he's evil ;-) I don't know that...

  132. Re:Esoteric Languages - O'Caml and others by yermoungder · · Score: 1

    Got a good point there! I started on SML/NJ and have toyed with O'Caml on and off (currently 'off' :-) If you want something similar to the speed of C and with the same 'if it compiles, it work' mentality then check out Ada95 too - a much malign language but only by those who either haven't used it ever, or those that haven't used it in the last 5-6 years.

  133. drop dead, teabagger by Anonymous Coward · · Score: 0

    your a fucking code monkey

  134. Re:Article text (in case of slashdotting) by Anonymous Coward · · Score: 0, Troll
    I didn't mean to make the book controversial. Think about your breathing. I was trying to make it efficient. I didn't want to waste people's time telling them things they already knew. It's more efficient just to give them the diffs. But I suppose that's bound to yield an alarming book.

    AIIEE! Make it stop! Teh uber troll is killing my mind! I cant stop thinking about my breathing!

  135. Rebuttal to criticism of "Great Hackers" by solprovider · · Score: 1

    How does one become a great hacker? 1 part talent, 9 parts determination.

    This line caught my attention because it is exactly the opposite of how I and the article explain great hackers. It is 9 parts talent, 1 part the inability to do otherwise. We don't program only what we want and do it extremely well because of determination. We program only what we want because we cannot stay interested in anything else. We program extremely well because we cannot tolerate less than optimized code. Being a great hacker is more about the inability to survive as a normal person. Most of us would have been the village layabout or erratic handyman before computers were invented.

    programming is a skill. There is only one proven method of developing skills in people, and that is mentoring.

    I never had a mentor. Most great hackers did not have mentors. Where are we to find someone who can program as well as we can to teach us the next level? We teach ourselves, and our monomania keeps us thinking about programming all the time, so we advance ourselves. The article mentions centers of excellence that attract great hackers. I have never been part of one, but I can understand the attraction of working with people where every other sentence does not go over their heads.

    Great hackers are wired differently... it actually sucks to be them.
    In this paragraph, you almost seem to understand. I cannot work 9-5 for more than 2 weeks. I was fired from every job until I became a consultant. Now I work about 2 weeks a quarter. Thankfully I can live on that.

    No one believes implementing yet another payroll system is going to change the world.
    Of my current projects:
    1 captures business experience/corporate knowledge into a computerized system.
    1 removes guesswork from planning inventory.
    1 changes how the public shops.
    1 improves how we develop business applications.

    - The first seems to be the Holy Grail of corporate computing. My solution may be limited to retail stores, but its a start.
    - The second is just a fun application.
    - The third will change the world.
    - The fourth might change the world, but it is unlikely since making programming too easy loses the programmers. So my audience will be business people who can develop applications on a platform where they can change their mind every 5 minutes and still have a usable system. But it is the tool I want to use when developing applications, so I am scratching my own itch.

    BTW, I have a life outside of programming. I am leaving tomorrow morning for a week without computers.

    --
    I spend my life entertaining my brain.
  136. The benchmark DID use Psyco and STILL came LAST! by Anonymous Coward · · Score: 0

    >>>>well over fifteen times slower than Java

    >>Than I guess you've never tried Psyco

    Actually the benchmarks DID use Psyco, and Java was a LOT more than 15 times faster, it was closer to 200 times.

    You cannot compare the performance of Java to a scripting language, for a reasonable comparison compare it to C++.
    http://www.idiom.com/~zilla/Computer/javaCbe nchmar k.html

  137. Oooow! "Hackers" by april10 · · Score: 1

    At first I thought it said "Paul Graham on Great *Crackers*"

  138. Brain Trauma by truthsearch · · Score: 1

    "A throbbing headache is not a good thing, but it can be a sign of a good thing-- for example, that you're recovering consciousness after being hit on the head."

    The headache, after regaining consciousness, could be from the brain swelling. Clear fluid coming out of your ears is never a good thing. Maybe someone should knock Graham in the head so he can learn that headaches are rarely a good thing.

  139. Cell phones. by Grendel+Drago · · Score: 1

    As a consequence of cellular phones, nobody knows anyone else's number any more. (Yes, I'm generalizing, but not by much.) Lots of cell phones don't display the number when it's being dialed, just the shortcut-name. And since info can be loaded from one phone to another (iRDA, etc), one can conceivably 'know' and use a phone number that one's never even seen.

    --grendel drago

    --
    Laws do not persuade just because they threaten. --Seneca
    1. Re:Cell phones. by cronie · · Score: 1

      As a consequence of cellular phones, nobody knows anyone else's number any more.

      Hmm... And if someone asks for someone else's phone number you tell them 'Greg', like your cell phone shows it to you? :)

      Seriously... You not always refer to the DNS system since lookups take time. For one, you are analyzing huge logs with raw IP numbers and you don't have the time to run lookups.

      Besides, I can't imagine programming/maintaining complex routers without messing with numeric addresses. So, short and memorable numbers are practical. I'm really sceptical about IPv6 and I encourage everyone (especially great hackers) to re-think before we accept it.

    2. Re:Cell phones. by JR · · Score: 1

      It strikes me that address books in phones are nothing more than a version of a Hosts file; a way of linking a difficult to recall numeric code with a sensible name.

      With cellphones increasingly being assigned IP addresses (and in China, these are already IPv6), what we need is a way of applying DNS to phones and getting a way to have a search find who we are looking for.

  140. The advantages of working with perl. by Anonymous Coward · · Score: 0

    I've made a search engine and database system in perl, the whole thing is about 8k lines. What i like about perl (this is my personal opinion), is that its simplicity and speed is amazing, so if you want to fix something, its really simple, you just locate the module you are having problems with and you can repair the code in less than five minutes.
    It makes the scripting language ideal for CGI apps.
    On the other hand, it will be tougher to make low-level applications because it wasnt developed to do that task.
    Take visual basic for example, it will only take you 10 minutes and just a few lines to make a functional browser using the Internet Explorer's API. In C this may take you 1-2 months depending on your ability to program in that language, and more than 20.000 lines of code, but if you want to do an assembly task, this will only take you less than 30 lines in C, but in visual basic doing the same thing will take you more than 3000 lines.
    I am a web developer, not a sysadmin and the main language i work with is Perl, i make my living out of it.

    Sorry for my bad english.
    xtrarg.

  141. defining a hacker as an artist by Anonymous Coward · · Score: 0

    The article says, "I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.". This attitude is prevalent among artists; the hacker is an artist. They work best either alone or solely with other hackers. They don't appreciate themselves enough, and they NEVER give themselves enough credit; They have no sense of proportion. If you're not a hacker, and your future depends upon their evaluation of you, you are in very serious trouble. Most brilliant, eccentric artists are impossible to work with, practically by definition.

  142. Good "hackers" are well-rounded by Junks+Jerzey · · Score: 1

    I put the term in quotes, because I dislike it. It's much more loaded a term than "programmers."

    The secret to being a top notch programmer is fairly simple: Be well-rounded. There are two parts to this. The first is to be well-rounded in your life in general. Play music. Write fiction. Read books other than science fiction. Don't wallow in geekiness, only reading Douglas Adams and Neal Stephenson, only watching The Matrix and Star Wars, and obsessing about video card performance. This is how you end up being the kind of person who posts "I want to write a great application for Linux, but I don't know what application to write."

    Second, be well-rounded in the field of programming. Learn and use Perl, Python, Lisp, C, Haskell, Forth, J, Prolog, Icon, Smalltalk, Oberon, and a couple of assembly languages. Don't get involved in debates about Perl vs. Python or Emacs vs. vi or static vs. dynamic typing or why BASIC sucks or whatever. They're not worth it. Each alternative has something interesting about it. Get your knowledge broad enough that tasks like "write a compiler for language X" don't seem nearly as scary as they do for someone who only knows C, C++, or Java. Learn about operating systems other than Windows and UNIX variants. Learn your computer history. But still, don't spend every waking moment thinking about computers.

  143. Would have been decent except... by fitten · · Score: 1

    This article would have been good except for the massive overuse of the word "hacker".... to the point where I was beginning to wonder whether or not the author really knew what the word means or not.

    Take that, throw in a bit of bias and religion and you have what he wrote.

    I think it would have been much better if he had left out all the "hacker" noise and left out the OS religion and kept focused on providing a good workplace and what good programmers want.

    Other than that, the article was a less technical and detailed version of another article that came out a while back (and was posted on /.) talking about commonalities among programmers (such as signs of minor autism and such).

    After thinking about it more and writing this, my opinion of this post has dropped a bit to the point of just being a poor rehash of previous work.

  144. conforming to non-conformity, eh? by lysium · · Score: 1
    ESR will tell you that you must be like him. He says one should play a musical instrument, enjoy (and preferably write) science fiction.

    Actually, it just sounds like he advocates outside interests rather than obsessively focusing on Hacking or Programming or Whatever. How you got a dogmatic rule of conformity out of that, I will never know.

    ===---===

    --
    Together, we will drive the rats from the tundra.
  145. It's in the genes by brainpee · · Score: 1

    Can someone "make" themselves a great hacker. Hmmm, good question. Perhaps. But my personal experience has been that hacking is not a choice. I am not saying that I program because I can't help it, I can. I like to program. But it goes beyond this.

    I have stopped programming on several occasions and found that I didn't do very well. When I program something goes on in my cranium (which I always suspected was a bit on the empty side anyway) that doesn't happen any other time (that I am aware of. I can think clearer, I can solve problems faster. Yeah, o.k., those things are part of the package. Anytime we set our mind to a task similar to programming that will happen (like writing or solving math problems - both of which are a part of programming). But there is more. I actually feel better.

    When I sit down and start programing I feel like I have just come out of a stuffy dark room and into a wide open field or city street that is full of life, places to go and things to see (some things might even be people). This is quite a paradox really. You would think sitting down in a room, devoid of people, and staring at books and computer screens all day would be that room that is stuffy and dark. But the emotional response does not fit the environment. I think some of us would be just as happy sitting in a dark dungeon with a steal door locking us in as long as we had a computer, a line to the net, our favorite programming books and a constant flow of joe.

    I remember when the people I work with came in and saw that my office had no windows. It was literally just a box (mostly white). They said, ``You really need a window up here. Want a window.'' Notice I didn't put a question mark at the end of that. I said don't bother, I won't look out it much anyway and sure enough, a few days later they had cut a hole in the side of the building and stuck a window in. They did actually prove me wrong though. I do look out it on occasion. Sometimes I even open it.

    But the fact is, I could have done without it. I rather just read and program (and write).

    People are always asking me how I can stand doing this. One reply I give (besides saying, ``I duno'') is to describe programming like a continual Christmas day all day long. When I write code and run it, (or compile it and run it, depending on what I am working with) and see my work actually doing something, I am like a little kid on Christmas day staring wide eyed at the thing and saying, ``Wow!''

    It has always been like that. From doing my first, ``Hello World'' in BASIC, to my first regexp in Perl to the first time I was able to program something for a Pocket PC; it has always been, ``Wow!''

    The article by Graham pointed out that hackers (unless forced to at gun point, and even then) won't work on a project they don't want to work on. I agree with this. I program because I love it. The fact that I get paid is secondary. It is necessary that I get paid, but you wouldn't believe the feelings I had when the revelation struck me that I could actually get paid for something I like to do anyway.

    He also talked about the hackers use of programming tools and the choice for opensource, etc. Here I would have to disagree. Or at least, my experience would have to disagree. The fact is (and this may sound cheap) that I will program in almost anything once. I'll even do it a second time if I like it.

    As I mentioned before I have (and still am) having to program Pocket PCs. The choice of the hardware had a lot to do with our users. However, the language was somewhat up to me. Originally I wrote the app in evc++. It was free and worked fairly well. But there were porting issues (as is typical of ms, stuff written in 2003 didn't work well, or at all, in 2002 unless herculean efforts were made). So I decided to rewrite it in something that would port better. After some testing I decided that (for at least 2002 and 2003) .NET would have to do. Since I was new to

  146. Python, Ruby, OOP by Lulu+of+the+Lotus-Ea · · Score: 1

    This odd conceit among some Ruby enthusiasts about Python's OOPiness is a bit annoying. The plain fact is that Python has been completely OOP since version 0.9 (the first released version), about ten years back. Even pre-beta, sitting on Guido's private machine, OOP was in the language design (I have no idea whether e.g. 'while' or 'class' were implemented first, but both were always the spec).

    It's true that a few things are spelled slightly differently between Python and Ruby. If OmniVector doesn't like the double underscores, fine. That's the Python convention for many "special" methods (e.g. '__eq__()', or '__call__()' likewise). If s/he happens to like explicit 'end' statements, more power to him/her. Likewise for an implicit 'self/this/my' object in Ruby, rather than an explicitly spelled out self passed into methods (which, incidentally, *is* useful in detached methods, at times), OK.

    I suppose a different bugbear is to claim that Ruby and Java aren't really OOP because they don't allow multiple inheritance. But that's silly too. Different languages make different decisions. Ruby and Java decided on single inheritance, for better or worse... it wasn't an oversight or accident.

  147. umm by Anonymous Coward · · Score: 0

    why is he not writing about Crackers???

  148. You give to much credit to Architects and Engineer by Anonymous Coward · · Score: 0

    Having worked for over 20 years in Silicon Valley I have observed that most architects and engineers are constrained by their corporate culture, resulting in choosing the safest path to a preceived success. So, even some of the most experienced and accomplished folks succeeded in a constrained environment.

    In regards to software maintenance and quality, in my experiences there is a direct corrolation to the organizations culture and their level of quality. Organizations look for silver bullets to improve their quality, when they should instead be looking in the mirror and questioning their values and the culture that has been assembled. Show me a team with poor quality, and I'll show you a team with poor moral, poor leadership, and technically lacking members that dominate the organization.

  149. I learned Prolog in school by BayBlade · · Score: 1
    Part of a manditory course on non-procedural programming to get my degree.

    What crappy school did you go to?

    --

    The key difference between a Programmer and a Senior Programmer is that one of them is Mexican.

  150. It is hard to be EVIL!!! by Anonymous Coward · · Score: 0

    I have tried so very hard to be evil.

    But in the end, the best I can manage is neutral.

  151. Office space and perks by meburke · · Score: 1

    Tom DeMarco, in his book, "Peopleware", made great arguments for the type of environment that programmers thrived in, including no more than two persons to an office.

    How big an office? IBM figured it out: The inventor(?) of Function Point Analysis (http://www.sei.cmu.edu/str/descriptions/fpa_body. html0, AJ Albrecht, used his method to determine the least minimum size of a productive programmer's office.

    I have contracted for numerous organizations since 1968, and while I hardly remember the companies that gave me the best tools and environments, I still resent the companies that gave me lousy tools or environments and wanted miracles. I suppose it's sort of like being cautious about the food that made you sick.

    --
    "The mind works quicker than you think!"
  152. Amen by behindthewall · · Score: 2, Interesting

    For me, this article hits the topic head on.

    Particularly enlightening, the insight into work that's desirable versus work that is agony. The chance to learn and grow, and an environment that lets you do this, make all the difference. And, I agree that the type he describes often are very self managed, given this. "an environment that lets you do this" -- not asking for management's hand-holding; rather, that they do their thing and stay our of your way, letting you do yours. Including not telling you that you have to work in the midst of a melee and spawn a dozen processes and a thousand threads, putting all your resources into overhead instead of effective work.

    I believe it is quite possible to make yourself stupid. I've experienced this myself, working in corp environments that constrained my ability to act, made me clean up after incompetents who had come before (I mean, really incompetent), and which value imposing every conversation and twitching pencil tapper on me, over the effective, for them revolutionary work I pulled off on the off-hours.

    I'm on my way out of another such situation. Thanks to Graham for helping to restore a bit of my self esteem.

    (I'm not saying I'm great shakes. However, the article gives me some encouragement and ideas for making the best of what I've got.)

  153. Re:Python has primitive types that aren't objects by mr_pins · · Score: 1
    Oh, really? Like what?

    Ints? Well I just typed this in my Python interpreter:

    >>> (2).__add__(1)
    3

    Looks like an object to me.

  154. Mod parent down for plagarism please by Wise+Dragon · · Score: 1

    Parent plagarised article without distinguishing his thoughts from those of Paul Graham. While those thoughts are insightful, they are not those of the comment poster, and he should be modded down to -1. Thank you.

  155. everybody sing by bladesjester · · Score: 1

    Show me the way to go ::1
    I'm tired and I wanna go to b:e::d

    --
    Everything I need to know I learned by killing smart people and eating their brains.
  156. Engineers/Craftsmen by Tony · · Score: 1

    I think the difference in methodology is based more on project goals. Some projects work well with the well-defined, UML-capable development. Financial database applications are a perfect example of this sort of project.

    Other projects aren't suited to this sort of development model. Usually, these include things like compilers, operating systems, and games. Often, these are much more interesting to more people than the financial applications. (There are people who prefer to code financial apps, of course. Not that there's anything wrong with that.)

    These "best practices" you mention are only the best practices as determined by someone else, and drawn only from the practices we've developed so far. If we follow only these "best practices," we'll never develop better practices. I don't advocate avoiding them; they are, after all, the best we have so far. But I certainly don't think we should follow them as iron-clad laws.

    The world needs both kinds of developers. Me, I affine to the craftsmen. I think engineers work on boring problems.

    But what do I know? I'm too busy banging out Perl code on Emacs to be very smart about these things.

    --
    Microsoft is to software what Budweiser is to beer.
  157. Lines of code are language-dependent by Anonymous Coward · · Score: 0

    The same size problem will result in vastly different numbers of lines of code in different languages. One of the primary advantages of higher level languages like python or perl is that it often only requires 10% as many lines of code to write the same program. John Ousterhout analyzes several projects written in both C and tcl in his well known paper "Scripting: Higher Level Programming for the 21st Century", finding ratios of between 2:1 to 47:1 for lines of code in C to lines of code in tcl. I've discovered similar results working in perl and python.

  158. closures in Lisp? by tuc · · Score: 1
    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!

    Since when does Lisp have closures? That's why I use Scheme instead.

    I do like Java, but we'll see if that's still true after they've added the kitchen sink to it.

    --

    You write your nine symphonies, then you die.

    1. Re:closures in Lisp? by Anonymous Coward · · Score: 0

      I think you mean continuations. Common Lisp has lexical closures, just as Scheme does.

    2. re:closures in Lisp? by tuc · · Score: 1
      I think you mean continuations. Common Lisp has lexical closures, just as Scheme does.

      I did not mean continuations, though they are cool.

      I must admit that my understanding of how Lisp and Scheme differ is out of date, but it used to be that Lisp's scoping system did not allow first-class functions to truly be closures.

      Here's a reference that explains this and strongly hints that this aspect of Lisp has changed in the 18 years in which I haven't been paying attention. I remember Lisp working the way that page describes Emacs Lisp working.

      I also think it is ugly that Lisp requires keywords function and apply to be used, but that's probably because I'm a Scheme bigot. But doesn't it make functions slightly less than first-class.

      --

      You write your nine symphonies, then you die.

  159. Interesting example, but... by warrax_666 · · Score: 1
    In a MUD, you have rooms, players, weapons, monsters, items inside the rooms, items in inventories (actually that's inside the player)... it's just very natural.


    My problem with this example is that
    type weapon =
    Sword of ...
    | Mace of ...
    | ...

    type item =
    Weapon of weapon
    | Table of ...
    | Chair of ...
    | ...

    type room =
    (item list) * (monster list) * (...)
    seems just as natural, and with pattern matching your language can automatically ensure that all cases are handled properly.

    Another beef I have with OOP is the lack of symmetry. Example: If a player can take damage from a monster, where do you put the method to accomplish this? There are 2 (more if you count other classes, such as a theoretical "Turn" class) possibilities, but they each have their advantages and disadvantages, making the choice non-trivial. Sure one gets better at this with experience, but should it really be necessary? With the functional approach it's obvious, and you can unify all the common data/operations through building the types up properly.
    --
    HAND.
  160. Great hackers... by Anonymous Coward · · Score: 0

    ...know how to write HTML that wraps to the size of a window (on all browsers) so you can print out the fucking thing in a reasonable number of pages.

  161. Great Hackers ignore the specs. by solprovider · · Score: 1

    in the real world those specs are guaranteed to be between 5% and 100% WRONG. The client can't explain what it is they actually want, the business rep can't help draw real specifications out of them, the systems analyst can't convert the nebulous requirements into a solid spec.

    Read what you wrote. The realize that a Great Hacker will ...
    IGNORE THE SPECS.

    The specs are always wrong.
    The client never know what they want.
    Anyone trying to write specs or deliver what a client asks will end with an unhappy client.

    So the first rule of programming is to find out what problem you are solving. Go watch the enduser do their job. Figure out what can be improved. Decide if computers can help. Decide which parts SHOULD be automated. Plan enough of the program(s) to check if the budget is enough. Then go write it. Give options anytime there are choices so that it can be configured without additional programming.

    I got my current project because they asked for a revision, and I completely trashed their UI. The new UI took one-tenth the time for data input, and was more expandable. Then I changed how the business processes work. Now I am working on reporting tools. The customer loves it.

    I may have an unhappy customer someday, but it will mean that we needed another programmer and were unable to find another Great Hacker.

    --
    I spend my life entertaining my brain.
    1. Re:Great Hackers ignore the specs. by poot_rootbeer · · Score: 2, Interesting

      I got my current project because they asked for a revision, and I completely trashed their UI. The new UI took one-tenth the time for data input, and was more expandable. Then I changed how the business processes work. Now I am working on reporting tools. The customer loves it.

      You got lucky, then. Are you your own boss? Do you work in a small, relatively informal shop?

      In most employment situations, doing what you want to do instead of what you've been instructed to do is a terminable offense.

      (Hmm, maybe I shouldn't be posting to Slashdot right now.)

    2. Re:Great Hackers ignore the specs. by solprovider · · Score: 1

      3 for 3: I got lucky. I am the boss. We are a small informal shop.

      I mentioned in another post that I was fired from every job until I went freelance.

      Story time:
      I was consulted because a breakfix company tried to write software and realized they were over their head. I rewrote the UI and much of the backend. They did not want to stay in the software business, and asked for the source to hand to the customer, but poor contracts left me with copyright to the project. When they realized they had no legal standing, they told the customer to sue me because I was the only one who could maintain it. The customer called me; the lawyers had fun; and my software company gained a new customer. We rebuilt everything from scratch; the only remnant from the other company's attempt is the name of the application (which was chosen by the customer.)

      I followed the same procedures when I was fulltime at a consulting company. I almost had a project go over budget because my team was told it was a 6 month project, but the customer expected a 2 month project. We worked week 9 for free, cleaned up the existing functionality for delivery, and it was a win.

      I insisted on leading all projects after that. I always throw away any specs from sales people. I ask the customer for their expectations of the budget. I do my own analysis. I have yet to have a customer be less than ecstatic about one of my applications. The consulting company let me because I delivered satisfied customers, and I stayed with them until they let me go during a round of downsizing which left the company with 10 staff, 50 managers, and 2 programmers.

      I was also freelance consulting, and started my software company about the time they went under.

      You can get away with doing things correctly if you are very good, very lucky, never make mistakes, and work for a company that truly wants results. It seems people and companies like that are rare.

      --
      I spend my life entertaining my brain.
    3. Re:Great Hackers ignore the specs. by russotto · · Score: 1

      Unfortunately, ignoring the specs and giving the client what they need rather than what they ask for requires that the great hacker know the client's business better than the client. Which is a bit much to ask -- that's beyond "Great Hacker" and into "Rennaissance Man".

    4. Re:Great Hackers ignore the specs. by solprovider · · Score: 1

      Thank you. I have not been called a "Renaissance Man" in weeks. (And I apologize for changing the spelling.)

      You do not need to know a client's business better than they do. You need to learn the process being automated. You are seeing it for the first time, so the inefficiencies are obvious, and know the process is changing so they can be removed. Focus on the basics, then add whatever is required for acceptance. (And sometimes you can ignore some of those "requirements". Just keep saying it will be in the next release until they realize the function is useless and stop asking for it.)

      It does help to have knowledge of business, management, accounting, efficiency (engineering), and other relevant subjects. I use the term "hacker" to mean someone who learns by doing. People who learn anything tend to learn everything. I assume that other Great Heackers have similar abilities.

      --
      I spend my life entertaining my brain.
    5. Re:Great Hackers ignore the specs. by 4of12 · · Score: 1

      In most employment situations, doing what you want to do instead of what you've been instructed to do is a terminable offense.

      Yep, very dangerous.

      Worse, too, is that even the Insightful Programmer that automagically anticipates What Will Delight the Customer and implements the best solution, the right thing, in contraindication to directions, may well not be discovered and rewarded in time!

      Many is the time you find yourself using great stuff produced by people who left the organization long before the greatness of their work was discovered because they felt unappreciated.

      A damn shame, but it does happen.

      --
      "Provided by the management for your protection."
  162. Re:Python has primitive types that aren't objects by WillWare · · Score: 1
    You probably didn't get to the end of my post, where I freely admitted that I haven't kept up with recent Python developments. I'm glad to see this has been done.

    You take a very snide tone with me. I was obliged to stop keeping up with Python development because my wife had a series of medical problems (dating from around the beginning of the PEP process, when all this was current discussion) that eventually led to her death last year. What do you expect to gain from such indiscriminate contempt? I had been on the pro-Python side of this debate; do you habitually attack your allies? In time you may want to rethink the efficacy of these strategies.

    --
    WWJD for a Klondike Bar?
  163. Re:Python has primitive types that aren't objects by mr_pins · · Score: 1

    Sorry. You are 100% right. I apologize for my tone. It was completely uncalled for. Also, my sincere condolences.

  164. not many large scale programmers I guess by Anonymous Coward · · Score: 0

    This comment isn't directed at any particular post. Just responding to the majority of the posts here.

    Hacking is a term that's been around before it spawned into programming. Hacking is merely thinking through a situation and coming up with the best possible answer. To say a hacker is this or that personality... well I feel that's a farce. It's a matter of people trying to classify themselves to feel as though they fit into a "crowd" (who needs crowds; not me).

    When you can write a reusable class (meaning you don't have to recode or copy and paste something you already made) you save a lot of time producing the same thing and expanding on it when needed. Making it as generic as possible so it does a specific task(s) is ideal. Sure you can do something similar with scripts but they still aren't as fast as compiled code.

    When you have a few hundred page requests per web server any script language will do (and if you have a cluster of servers you can have more; but it doesn't mean it is the most cost effective/efficient means... of course cost effective also depends on the people available for the job and their experience level with a language).

    Hell you could do a bunch with ColdFusion for a website (and I do for small scale stuff and when the people that will implement it are familiar with HTML and not much else) but a scripting language will not be as fast as a compiled language. No rebuttals are possible for that (and if you do have one I don't need to read it since you have no clue... yet). Scripts have their place but I wouldn't classify them as uber (then again I don't feel any particular language is better than the other; a hammer is good for this and a screwdriver is good for that... all are tools to be used... I can beat a nail down with the butt of a screwdriver... if it's all I have then it is the best tool for the job... you dig me?).

    And as far as dealing with memory in C... sure I hate it too but C is the mother of speed. Means you have to really know what you are doing and effectively document your code. Any good programmer whether it's script or compiled code (that isn't hacking together some code to make it work) will document. After all hopefully that same code continues to be used years down the road. Personally when I work on numerous projects I'm not going to remember every fine detail I placed in my code and why (especially if I use different languages as new crap continues to emerge).

    If you say you hate iterations then you are saying something similar to what you get by using OOP classes (again classes that aren't hacks but well thought out and documented solutions). I don't quite get the post on that one but anywho (so loops are too much work?).

    Sure I can read over the code and say, Ah hah that's what I was thinking, but that isn't very efficient to read over hundreds, thousands, or more lines of code on numerous different unrelated projects.

    Oh well, choose the right tool for the job (which also means if someone isn't familiar with a language don't jump feet first and start coding with it for a client waiting on reliable and secure results).

    LiquidMerc

  165. what language is better? by Anonymous Coward · · Score: 0

    I don't think this guy put much thought into some of these statements.

    For one thing, there is the whole language inferiority complex with Java, Perl and Python. Now, I've never written in Java OR Python OR Perl (pure blood C man) but I know something about them, and any programmer will tell you that some languages are better for certain things. Java provides good high-level object oriented constructs, which are obviously better for developing end-user applications with high quality interfaces and data processing for the typical user. Perl might be a favorite for hackers at home, but that's because hackers at home write Perl scripts that provide functionality that is great for them, but cryptic at best for the common end-user. Unless you're writing a back-end for a web interface, Perl is more or less useless, in what I have seen, in creating any product you expect a non-expert to use.

    What's with the notes at the end? He puts numbers in the article like he's referencing a source, but then you go down and there are comments the context of which you've long since lost. He seems like a man that embraces unnecessary complexity...I'm going out on a limb here, but that means a shitty programmer.

  166. Hacker Vs. Software Engineer by fishdan · · Score: 1
    <opinion>

    I think that Java is the language of choice for Software Engineers. Software Engineers are people who write specs, unit test, meet deadlines, write good API's....You know what I mean -- the under-appreciated grunts of the software industry. They are NOT as brilliant as the hackers, but over their lifetime they will be more productive. Just not in any 24 hour period.

    There is alot of stuff that definitely be done faster in $LANGUAGE_X than in Java.

    To a man with a hammer, everything looks like a nail. --- Mark Twain

    I don't know how maintainable/scaleable/reusable $LANGUAGE_X is compared to java, but I have yet to be on a larger commercial project where realistically, you could expect the code to be maintained by at least 100 different developers over the next 5 years in which anything other than the uber-development languages of Java, C or C++ were being used. Of course I've never worked on a MSFT compatible project either -- I'm sure that VB is used on that scale as well.

    Hackers and Software Engineers by definition have different skill sets and goals. You need both. I find I like to let the hacker do it his way, and then we do what we need to language wise to make it conform to "best practices," which the hacker finds restrictive and chafing.

    Henry Ford did not invent the car, but he brought it to the people. He was an engineer, not a hacker. And there is room for both types in every industry.

    But I guess there is no point in posting to this thread without a backhanded stab at one of these religions, so how about this

    I've left the opinion tag open for people who want to reply -- if you're posting FACTS you should close it 8)

    --
    Nothing great was ever achieved without enthusiasm
  167. Perl is for one liners and legacy code by Eivind+Eklund · · Score: 1

    It is quite hard to use Perl to create really "stable, maintainable code bases", as perl is filled with various forms of traps almost made to make this hard.

    Perl has OO - yes - but this OO mix up classes and name spaces, it mix up object methods and class methods, it mix up default handlers and AUTOLOADing, it does not support method signatures - not even to the level of being able to check the count of parameters. And, of course, the standard API is not at all object oriented - there are extra packages that reimplement much of it in an OO fashion, but then you lose even the little checking Perl usually has.

    Of course, perl has nice points. It used to be one of my favourite languages, because it was so flexible, implemented such high level constructs, allowed me to do meta-programming, etc. Only occasionally would I curse it for its auto-vivification[1], or the fact that it GC the fileglobs incorrectly when you use the old recommended syntax[2], or the fact that => is just an alias for comma[3], or the lack of parameter count validation[4]. The flexibility was so nice.

    Alas, to my daily sorrow, I learned Ruby. I learned that it is possible to do the things Perl make sort of convenient - and still keep everything beautiful.

    And I work in Perl daily, because I get paid for it, because there is a legacy codebase we need to support, there are promises to keep.

    And I hurt for every push(@{$this->{'FriksCount'}, scalar(grep { /Friks/ } @{$this->GetFrikable})); I need to write.

    Eivind.

    [1] "AUTOVIVIFICANTION" is when Perl makes up a hash entry from your typo, because OF COURSE you would want to save a line of code those one out of 20 times this happens it was intentional. This is brilliant for one-liners, though.
    [2] Supposedly "impossible" to fix inside the present interpreter structure; I've discussed it with the maintainers. Or at least without doing a nasty grammar hack.
    [3] A nasty grammar hack done to make it simple to write the backend to support both , and => as separators in hashes.
    [4] Because it would have been too much work to actually *fully add functions/subroutines to the language*, so instead they used a hack based on an implictly declared array that varies from function to function. There is a new hack allow parameter checking, though. Unless you use OO, of course, because then you obviously are writing a small program and know exactly what is happening everywhere.

    --
    Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
  168. Not anti-social--asocial by Anonymous Coward · · Score: 0

    Given the author's profile of the hacker- Quiet, anti-social and loves his/her corner office with the door locked
    An asocial guy closes the door. (compare: asymmetrical)
    An anti-social guy lets his .357 speak for him.

    gewg_