Slashdot Mirror


Why Programming Still Stinks

Andrew Leonard writes "Scott Rosenberg has a column on Salon today about a conference held in honor of the twentieth anniversary of the publishing of 'Programmers at Work.' Among the panelists saying interesting things about the state of programing today are Andy Hertzfeld, Charles Simonyi, Jaron Lanier, and Jef Raskin."

585 comments

  1. panel link by AnonymousCowheart · · Score: 5, Informative

    here is the link to the ppl on the panel, and talks about their backround

    1. Re:panel link by nlper · · Score: 5, Insightful

      Reviewing the list of contributors, it's interesting to note that some of them had already stopped programming back when they were interviewed. So why should we listen to them opine about software development techniques today?

      My pet peeve on the list would have to be Jef Raskin, who's far better at self-promotion than actually coding. Had people actually listened to his ideas in the early days of the Macintosh project, they would have delivered a machine without a mouse or other features most people associate with the Mac. (As Andy Hertzfeld puts it, he's not the father of the Macintosh so much as the eccentric uncle.)

      However, if you want to hear him repeat the same things he's been saying for the last 20 years, he'll be keynoting the Desktop Linux Summit. No doubt he'll be beating the horse's skeleton that mice, icons, and the windowing interface are what's holding Linux back on the desktop. (MacOS X be damned!) Using those special "leap" keys that made the Canon Cat so successful, now that's the future!

      Tyler

    2. Re:panel link by jcr · · Score: 1

      My pet peeve on the list would have to be Jef Raskin,

      I'm with you on that one. He's gotten far more press than he ever deserved.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    3. Re:panel link by Anonymous Coward · · Score: 2, Interesting

      Ever use type-ahead find in Mozilla?

      He basically pointed out that the subset of operations we now perform on "the web" would satisfy 90% of humans and should be optimized for, and to some extent, he's been proven correct.

      There's a problem with the Humane ideal providing few good metaphors for data modeling, but we seem to do okay switching between keyboard ("text manipulation metaphor") and mouse ("grabbing hand; spatial manipulation metaphor"), so it's pretty zero-sum.

      When it comes to writing, I'd rather have a Cat than OpenOffice, but I'm not sure it'd be any better at, say, graphing.

  2. Want to read the whole article? by stephanruby · · Score: 4, Funny
    Want to read the whole article? You have two options: Subscribe now, or watch a brief ad and get a free day pass. If you're already a subscriber log in here.

    No thanks. The first two paragraphs didn't make me want to read anymore. I'll wait for the comments of the slashdoters to appear.

    1. Re:Want to read the whole article? by Anonymous Coward · · Score: 0

      Actually, the parent is 100% Ontopic.

  3. Why registration sucks. by GoofyBoy · · Score: 3, Funny

    In response to a Salon article on the state of programming today, GoofyBoy posted a witty and insightful comment. Its sparked a large thread of apologists and public outrage from a wide range of slashdot readers and trolls.

    Want to read the whole comment? You have two options: Subscribe now, or watch a brief ad and get a free day pass. If you're already a subscriber log in here.

    --
    The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    1. Re:Why registration sucks. by Anonymous Coward · · Score: 0
      actually, if i want to read the whole article, i have three options: watch an ad that will give the opportunity to watch the ad all over again afterwards, since salon's "day pass" system is horribly broken and never has worked on my browsers; send money to the people who built a horribly broken advertising system in the hopes that they'll give me something that actually works, or even take notice of me; or go look for a pirated copy.

      i go looking for a pirated copy, because salon is nowhere near good enough to bother with any of the other alternatives. it's not even good enough to bother looking very hard; usually, if i don't find a link in a quick scan of the /. thread, i just go on with my life - i can manage without salon and its stupid broken web interface.

  4. The silver bullet already exists by Anonymous Coward · · Score: 0

    The silver bullet of programming already exists. Link.

    1. Re:The silver bullet already exists by eclectro · · Score: 3, Funny

      The silver bullet of programming already exists. Link.

      For a minute there I thought you meant this silver bullet

      I know that I am a much better programmer after a couple of "silver bullets".

      --
      Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
    2. Re:The silver bullet already exists by Anonymous Coward · · Score: 0

      *rolls eyes*

      And I just posted the other day about how every programming discussion includes at least one person who thinks Python is God's gift to computer science.

      Python is okay. Not great, not bad, just okay. I swear at it's design flaws maybe once a week (rather than once an hour like Perl).

    3. Re:The silver bullet already exists by walter_kovacs · · Score: 1

      I much prefer loads and loads of methamphetamine. ;-)

    4. Re:The silver bullet already exists by jhurani · · Score: 1

      It exists. And it is checking all the return values.
      --
      How many bash scripts you wrote were with -e switch.

    5. Re:The silver bullet already exists by edalytical · · Score: 1

      So, you're the guy who wrote the "Clean your PC" program I keep getting pop-up windows for. Damn you!!!

      --
      Win a signed Stephen Carpenter ESP Guitar from the Deftones: http://def-tag.com/?r=0008781
    6. Re:The silver bullet already exists by Anonymous Coward · · Score: 0

      Hahah.. checking return values? Oh, and I suppose you want graceful handling of them too??

      I remember years ago getting nabbed to go up and help this guy with his Mac, working on a hot proposal (Mac SE, 40MB hard drive, for reference). I get up there, he launches MSWord, and it dies with an "error -9380" or some such thing... ??? Every time. Silly me, I didn't check the basics, I walked all the way back to my desk to get my Mac "bible", to discover that error -9380 was "disk full".

      Now how much extra work would it have been to throw a simple test in there and print a *humanly* understandable "disk full" message?

      I've seen more sh*tty software in the past 5 years than I've seen in the previous 15. Poor error checking, of course the "offshore programmers" where you get messages like "please mind that the needful disk error has occurred".

      Web programmers (java) who have no idea how to do proper error checking, and have no idea of what a proxy is, DNS, how secure certs work and when you really need one... Sysadmin's who can't figure out why a script is failing, who can't script at all, who want to install "webmin" on a box they login to once in a blue moon -- just because they want to add an entry to the hosts file (and I guess "vi /etc/hosts" is far harder than installing webmin,configuring apache, etc -- if you can't manage unix w/o a GUI, you just shouldn't be managing unix).

      We exist in a world where the mediocre survive, and thrive, and nobody knows any better. On the bright side, I was writing assembly language in HS (1981, to show my age), fell in love with Unix the first time I saw in in 1987 (file permissions... hey, just bits in a byte! cool! simplicity itself!), and all the mediocrity just makes me look like a "wizard" to the bosses. Although having the reputation as the "goto" guy (goto him, he can fix anything) can be a royal PITA sometimes :-P

    7. Re:The silver bullet already exists by adamofgreyskull · · Score: 1

      Low calorie beer?? Well now I've seen everything...
      How will people know you're a Beer Drinker if you haven't got a Beer Belly? They'll think you're some kind of quiche-eating fruit-cake who doesn't drink!

    8. Re:The silver bullet already exists by ultrabot · · Score: 1

      It exists. And it is checking all the return values.

      Checking return values is an outdated practice, you should just use languages like Python that support exception handling. Lets you focus on the problem.

      --
      Save your wrists today - switch to Dvorak
    9. Re:The silver bullet already exists by AuMatar · · Score: 1

      Exceptions are an ugly hack someone made because they were too lazy to do their error handling. It shouldn't be perpetuated.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:The silver bullet already exists by Anonymous Coward · · Score: 0

      Separating error-handling code from productive code makes each easier to read and maintain. Laziness is one of the great virtues of a programmer; checking error codes and diverting control of the program is the kind of grunt work computers ought to do for us.

    11. Re:The silver bullet already exists by AuMatar · · Score: 1

      Separating error handling from other code makes it harder to find and correctly deal with bugs, and makes it harder to maintain by making it more difficult to tell where the bug actually is.

      --
      I still have more fans than freaks. WTF is wrong with you people?
  5. This is why I hate slashdot by Imperator · · Score: 5, Insightful

    Someone with a @salon.com address submits a story to slashdot linking to a Salon article. That article costs money to read. Slashdot posts the story anyway.

    Could an AC please post the full text?

    --

    Gates' Law: Every 18 months, the speed of software halves.
    1. Re:This is why I hate slashdot by Anonymous Coward · · Score: 3, Informative

      In some quarters today, it's still a controversial proposition to argue that computer programming is an art as well as a science. But 20 years ago, when Microsoft Press editor Susan Lammers assembled a collection of interviews with software pioneers into a book titled "Programmers at Work," the idea was downright outlandish. Programming had long been viewed as the domain of corporate engineers and university computer scientists. But in the first flush of the personal computer era, the role of software innovator began to evolve into something more like the grand American tradition of the basement inventor -- with a dollop of the huckster on top and, underneath, a deep foundation of idealism.

      It made sense that the people writing the most important code for the new desktop machines were ragged individualists with eccentric streaks. At a panel on Tuesday (sponsored by the SDWest conference and Dr. Dobb's Journal) that celebrated Lammers' book, seven of the 19 original subjects of "Programmers at Work" lined up on stage to talk about what's changed in software over the past two decades -- and demonstrate that they have lost none of their cantankerous edge.

      In "Programmers at Work," Lammers told the crowd, "I looked at the programmer as an individual on a quest to create something new that would change the world." Certainly, the panel's group lived up to that billing: it included Andy Hertzfeld, who wrote much of the original Macintosh operating system and is now chronicling that saga at Folklore.org; Jef Raskin, who created the original concept for the Macintosh; Charles Simonyi, a Xerox PARC veteran and two-decade Microsoft code guru responsible for much of today's Office suite; Dan Bricklin, co-creator of VisiCalc, the pioneering spreadsheet program; virtual-reality pioneer Jaron Lanier; gaming pioneer Scott Kim; and Robert Carr, father of Ashton-Tate's Framework.

      But for all their considerable achievements, this was not a group content to snooze on a heap of laurels. In fact, though the hour-and-a-half discussion was full of contention, one thing all the participants agreed on was that software today is in dire need of help. It's still too hard: not only for users struggling to make sense of poorly designed interfaces, but for programmers swimming upstream against a current of constraints that numb creativity and drown innovation.

      These veterans shared a starting-point assumption that the rest of the world is only slowly beginning to understand: While computer hardware seems to advance according to the exponential upward curve known as Moore's Law (doubling in speed -- or halving in cost -- every year or two), software, when it advances at all, seems to move at a more leisurely linear pace.

      As Lanier said, "Software inefficiency can always outpace Moore's Law. Moore's Law isn't a match for our bad coding."

      The impact of this differential is not simply a matter of which industry gets to collect more profits. It sets a maddening limit on how much good we can expect information technology to achieve. If computers are, as it has often been put, "amplifiers for our brains," then software's limitations cap the volume way too low. Or, in Simonyi's words, "Software as we know it is the bottleneck on the digital horn of plenty."

      Most successful programmers are at heart can-do engineers who are optimistic that every problem has a solution. So it was only natural that, even in this relatively small gathering of software pioneers, there were multiple, and conflicting, ideas about how we should proceed in order to break that bottleneck.

      Simonyi believes the answer is to unshackle the design of software from the details of implementation in code. "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer."

      Giving the forme

    2. Re:This is why I hate slashdot by Hobobo · · Score: 1

      Get a free day pass. ggkthx

    3. Re:This is why I hate slashdot by anthonyrcalgary · · Score: 5, Funny

      Are you seriously suggesting that anyone would read the article anyway? No, this is the time to broadcast one's opinions in a fashion loosely connected with what we think the article might be about.

      --
      When someone might yell at me, it has to be OpenBSD.
    4. Re:This is why I hate slashdot by Otter · · Score: 5, Insightful
      Could an AC please post the full text?

      They have free day passes, FYI.

      To summarize, though:

      • Charles Simonyi has a new company that he claims will change everything.
      • Jaron Lanier is still happy to inform you that he's a genius and everyone else is stupid. Don't count on him to do anything, though.
      • Andy Hertzfeld sounds like he's gearing up to lose more money on Linux desktop software.
      • Salon continues to suck up to Linux users.
      That's pretty much it. Don't count on anything more useful out of these guys, except maybe Simonyi.
    5. Re:This is why I hate slashdot by stephanruby · · Score: 1
      "That article costs money to read."

      Yes and no. They'll give you a free day pass if you watch their commercial, they say it's a "brief" commercial, but they won't tell you how long it takes to download it and how long it will take to wach.

      --------
      "Want to read the whole article? You have two options: Subscribe now, or watch a brief ad and get a free day pass. If you're already a subscriber log in here."
      -----

    6. Re:This is why I hate slashdot by torokun · · Score: 5, Informative
      This is some serious copyright infringement, man. Ripping an article verbatim and posting it on another site.

    7. Re:This is why I hate slashdot by the_mad_poster · · Score: 4, Funny

      Or, to summarize your summary:

      Same ol', same ol'.

      --
      Alito: A vote for Alito is a punch in the eye to put that bitch back in her place!
    8. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      And what, exactly are you going to do about it? (note: Not same AC that posted article)

    9. Re:This is why I hate slashdot by Saint+Stephen · · Score: 1

      I've kind of lost my respect for Simonyi, and I used to think he was just the coolest. Success ruins anybody.

    10. Re:This is why I hate slashdot by terrox · · Score: 1

      if the original source is acknowledge - which it is - and there is no profit being made - which there isn't - then it is not serious.

    11. Re:This is why I hate slashdot by starm_ · · Score: 4, Funny

      lol good sig!... or is it bad sig?

    12. Re:This is why I hate slashdot by WasterDave · · Score: 5, Insightful

      Oh, for fucks' sake. Sooner or later somebody doing this - anonymous or not - is going to get Slasdot sued.

      Fucking stop it. It's a copyrighted piece of work, it belongs to someone else, it is their right to control it.

      Dave

      --
      I write a blog now, you should be afraid.
    13. Re:This is why I hate slashdot by An+El+Haqq · · Score: 1

      if the original source is acknowledge - which it is - and there is no profit being made - which there isn't - then it is not serious.

      So, if I distribute PDFs of new books for free, with thanks to the original publisher, I'm not "seriously" infringing on copyright? It's not a case of plagiarism, but it is a case of copyright infringement.

    14. Re:This is why I hate slashdot by YU+Nicks+NE+Way · · Score: 2, Informative

      Uhh...no. Although I'm very angry with the Slashdot editors for posting this particular lead, this is blatant infringement of the most egregious form. Fair use only defends people who violate copyright in small (e.g. by printing a limited passage with full attribution) or who have some other significant difference from the original (e.g. a parody is almost be definition infringing, but protected by fair use.) Including a whole text verbatim for the purpose of avoiding the tariff a copyright holder has set is not fair use, whether or not the author benefits from it.

    15. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      It's the tragedy of the commons, dude. Try not to get your knickers all in a knot.

    16. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      Then Timothy and Taco better stop posting links to non-free sites.

    17. Re:This is why I hate slashdot by inertia187 · · Score: 1

      Programming stinks because programmers stink. I should know. I code so you don't have to.

      --
      A programmer is a machine for converting coffee into code.
    18. Re:This is why I hate slashdot by bcrowell · · Score: 2, Insightful

      They have free day passes, FYI.
      Too bad you can't get the day pass if you don't have Flash installed.

    19. Re:This is why I hate slashdot by afgates · · Score: 2, Insightful

      I consider this to be improper use of the hard work of the Salon staff. There are only 74,000 paying subscribers to salon, full disclosure, of which I am one. They provide a nice counter-balance the Microsoft sponsored Slate online magazine. So many of the online e-zines have suffered and closed down over the last few years, and the infosphere is poorer for it. As a anarcho-capitalist, I believe that any valuable service or product should be made as easily available as possible, but as a consumer in this arrangement, I have a responsibility to support that creative producer. For example, though I download music for my personal use, the artists and tracks I find to my liking, I go and buy the artist's product, either through iMusic or at a brick and mortar. Salon will allow you to sample some of their content with only a small hurdle. If you find the product useful and to your liking, support them directly. Take responsibility for yourself. Remeber, IAAMOAC (http://www.davidbrin.com).

    20. Re:This is why I hate slashdot by mog007 · · Score: 1

      Someone needs to look a few pixels below the random quote:
      "All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the Poster. The Rest (C) 1997-2004"

    21. Re:This is why I hate slashdot by f0rt0r · · Score: 0, Redundant

      Amen Brother.

      --
      I can't afford a sig!
    22. Re:This is why I hate slashdot by GoofyBoy · · Score: 1

      If the editors wanted to they can, have have before, remove the post.

      Its ultimately up to them what happens to them.

      --
      The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
    23. Re:This is why I hate slashdot by eclectro · · Score: 1


      It's ok. As I read it I kept my eyes closed.

      --
      Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
    24. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      Funny how the same comments you made don't seem to apply to music around here.

    25. Re:This is why I hate slashdot by Panaflex · · Score: 1

      Just sit on the ad page, and after 2 or three seconds it takes you to the static content ad. But you have to have javascript turned on too.

      Pan

      --
      I said no... but I missed and it came out yes.
    26. Re:This is why I hate slashdot by Goalie_Ca · · Score: 1

      All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the Poster. The Rest (C) 1997-2004 OSDN.

      --

      ----
      Go canucks, habs, and sens!
    27. Re:This is why I hate slashdot by RodgerDodger · · Score: 1

      A) That would be a violation of copyright (not that that would stop anyone on Slashdot)

      B) "Watch" the frigging day-pass commercial, fer crying out load. By "watch", I mean open it in a separate tab and come back to it every now and then. Doesn't take very long.

      If you want to read content that a site provides, play nice with whatever rules they put in place. Don't like the rules? Don't read the content. How simple can that be?

      Questions like the parent post's is what I hate about Slashdot. That and all the stupid trolls.

      --
      "Software is too expensive to build cheaply"
    28. Re:This is why I hate slashdot by ebuck · · Score: 2, Insightful

      Well, I took the bait and read it.

      It's suprisingly full of fluff. I admire the challenge to go somewhere new and interesting, but am equally appaled by lack of sense of direction in the article.

      It's about as coherent as pointing out that theres 360 degress around you, and they are all hopeful and promising. Then asking you "Where do want to go today?", while reminding you that you're in your hometown.

      The dismissal of open-source as a non-innovator is questionable, and the statments about programming itself not getting better keep me scratching my head. What do you mean by more innovative programming? Compilers won't accept any type of creative garbage, and personal expression in the language (aka Perl) has it's own limitations.

      These guys should be motovational speakers, but problem is they don't have a large an audience as say, people with finiancial troubles, grumpy employees, or people with weight problems.

      Lack of industry-redefining innovation is an indicator of maturity in computing science. Innovations become small steps forward, and are no longer the cataclysmic leaps that existed in the past.

      Look at Gnome as (only one) example. They changed their default browsing mode to a spatially oriented one. It's innovative, but it's not going to be as big a leap as say, going from the command line interface to a windowing one. Arguing that it's not a big enough innovation to have real merit implies that their early pioneering breakthroughs elevate them to a kind of revered status as super-programmer.

      It's easy to be innovative via discovery in a field that hasn't matured, it's a lot harder to be innovative via discovery when millions are working along side of you. I'm not trying to diminsh thier hard work and effort, not discount the magnimity of their accomplishemnts, but to stretch my analogy (a bit too far), claiming that nobody has discovered a new continent recently isn't the fault of less innovative map makers.

    29. Re:This is why I hate slashdot by darco · · Score: 1

      Why blame the editors?

      --
      — darco
    30. Re:This is why I hate slashdot by aardvarkjoe · · Score: 1

      So, if I distribute PDFs of new books for free, with thanks to the original publisher, I'm not "seriously" infringing on copyright?

      Yep. Same as when you distribute MP3s of new songs for free, while leaving the artist name intact, you're not "seriously" infringing on copyright.

      (That was a "you" in the sense of the "average slashdotter," by the way; I have no idea if the OP engages in or condones infringement of copyrighted music.)

      --

      How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
    31. Re:This is why I hate slashdot by pizza_milkshake · · Score: 2, Funny
      As a anarcho-capitalist,

      I told you, we're an anarcho-syndicist commune, taking turns to act as a sort of executive officer for the week.

    32. Re:This is why I hate slashdot by DrCode · · Score: 1

      Also, there really wasn't anything in the article to back up the assertion in the title, that "programming still sucks".

      Anyway, I don't think programming sucks, at least not on a Linux box.

    33. Re:This is why I hate slashdot by Anonymous Coward · · Score: 2, Funny

      This is because there are in fact several persons posting around here, with differing opinions. Didn't you know?

    34. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      Yes it is copyrighted. Right now, the ad server has been slashdotted, so I don't feel real guility about reading the article in the comments.

    35. Re:This is why I hate slashdot by prockcore · · Score: 1

      This is some serious copyright infringement, man. Ripping an article verbatim and posting it on another site.

      hey, USA Today does it!

    36. Re:This is why I hate slashdot by forgotmypassword · · Score: 1

      By replying to this post you agree that you're wrong.

      I am wrong.

    37. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0
      lol good sig!... or is it bad sig?
      Neither -- it's bad logic and worse form.
    38. Re:This is why I hate slashdot by instarx · · Score: 1

      Actually, the *most* irritating thing about slashdot are the people who know absolutely nothing about what they are talking about and STILL insist in inflicting the rest of us with their brain dumps.

      Case in point - your moronic post. It costs absolutely nothing to view any Salon article.

    39. Re:This is why I hate slashdot by whiteknight31 · · Score: 0

      Just spend the 5 seconds it takes to ignore the comercial....

    40. Re:This is why I hate slashdot by gorre · · Score: 2, Funny

      This is some serious copyright infringement, man. Ripping an article verbatim and posting it on another site.

      Don't worry this is /. nobody is actually going to read it.

      --
      "Madness is something rare in individuals - but in groups, parties, peoples, ages it is the rule." -- Nietzsche
    41. Re:This is why I hate slashdot by cosmo7 · · Score: 1

      Listen, strange women lyin' in ponds distributin' swords is no basis for a system of government! Supreme executive power derives from a mandate from the masses, not from some farcical aquatic ceremony!

    42. Re:This is why I hate slashdot by Anonymous Coward · · Score: 0

      Shut up! Will you shut up!!!

    43. Re:This is why I hate slashdot by humblecoder · · Score: 1


      This is some serious copyright infringement, man. Ripping an article verbatim and posting it on another site.


      I have a question, and I honestly don't know the answer to it. Maybe you or someone can explain this to me. If it is copyright infringement to rip an article verbatim and post it on another site, then why hasn't someone sued Google for its "cache" feature? It would seem as if that would fall into the same category...

    44. Re:This is why I hate slashdot by Anonymous+Brave+Guy · · Score: 1
      Why blame the editors?

      For the same reason a court probably will one of these days: because with the historical actions on this site, they could reasonably be expected to know it was likely to happen, and should therefore have taken reasonable actions to prevent it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    45. Re:This is why I hate slashdot by Imperator · · Score: 1

      It's true. I requested the full text and I didn't even read it.

      --

      Gates' Law: Every 18 months, the speed of software halves.
    46. Re:This is why I hate slashdot by metamatic · · Score: 1

      If Slashdot cared they would stop posting articles which beg to have their copyright violated.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    47. Re:This is why I hate slashdot by Random832 · · Score: 1

      so, it's ok for aleonard@salon.com to post an article requiring payment (not just free registration) to slashdot?

      --
      We've secretly replaced Slashdot with new Folgers Crystals - let's see if it notices.
  6. Hmmm, there's an interesting duo... by The+Spie · · Score: 4, Funny

    If they did this as a round table, I would have been sad to have missed it. You just know that at some point in the discussion, Raskin and Hertzfeld would have gotten into a fistfight over who the real father of the Mac was. "Two geeks enter, one geek leaves..."

    --
    If using Linux is about choice, how come people complain when I choose to use Windows?
    1. Re: Hmmm, there's an interesting duo... by Black+Parrot · · Score: 3, Funny


      > If they did this as a round table, I would have been sad to have missed it.

      Yeah, I wanted to see them work out who got which fork.

      --
      Sheesh, evil *and* a jerk. -- Jade
  7. why does programming stinks today, an opinion by bsDaemon · · Score: 4, Interesting

    Please keep in mind that being only nearly 20, the depth of my personal experience is not that of say, someone who was around when UNIX was first rolled out. However, I have been in my day an avid C and BSD (mostly FreeBSD, but some NetBSD) user.
    Honestly, from where I sit (you may agree or not), programming and computer stuff in general has become a lot less like a science or craft, and more like a factory job. In the early days programmers who physicists, engineers, and mathamaticians. Today programmers are just programmers. More and more computer science departments are teaching using Java. Why? because it helps people to understand how the computer works? no. Simply, because it's what the industry is using.
    I had 4 technicians from Cox over at my house yesturday because my parents couldn't figure out what was wrong with the cable modem. They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals. Why? because that sort of work has become blue-collar and low-rent.
    Programmers are no longer expected to be educated beyond their field. they are being educated to produce software, not to be COMPUTER SCIENTISTS. How many graduates of say, ITT Tech would actually understand Knuth, even if they have ever heard of him? Likely, not many. That is why software sucks. That is why the programming "trade" sucks. and that is why companies can send the jobs abroad to people who work for peanuts. Programming is just like stamping "Ford" on the grill in a Detroit assembly plant these days and nothing more.

    1. Re:why does programming stinks today, an opinion by matusa · · Score: 4, Insightful

      While that is true, it's also naive to think it would be any other way. Why? Think about every other profession! The opportunity to be doing something creative is delegated to a selective, lucky few. I say lucky few because everyone has met great people in crap jobs.

      So the question of course becomes--how do you dodge the bullet of crap positions? Doing well in academia is probably unfortunately the best solution. I'm going to CMU next year, annd had a nice talk with one of their CS profs about some openGL + C++ projects I'm working on, plus some AI research I started. I will get to work on these things, however I will also have to try not to swallow cyanide while dying through Java classes teaching me how to program in a way so dumbed down that even the greatest imbecile can't screw up.

      This of course touches upon a great sadness of modern engineering training for me: you don't get taught to think--you get taught to use prescribed methods. Why? Ostensibly to never never reinvent the wheel, but also to get retards to do the job fine.

      Let's not be stupidly depressed about everything, however. Trying to shoot to the very top has always required talent and hard work, and always been possible.

      I think programming is truly great, truly beautiful. This afternoon I made some money writing some boring PHP code, but also worked on my personal projects, and I'll work to have the tides change in the future.

    2. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 1, Funny

      "They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals."

      You say that now but wait until they crawl out of their underground tunnels at nightfall and eat you.

    3. Re:why does programming stinks today, an opinion by anthonyrcalgary · · Score: 1

      I disagree. Partly.

      From what I've seen programming for money in the short time that I've been doing it, you need bright people to write maintainable code. They don't come off the assembly line. It's possible to have a one shot thing done in India or wherever, but if you need software to be expanded and maintained over any significant length of time, it MUST be done by competent people.

      --
      When someone might yell at me, it has to be OpenBSD.
    4. Re:why does programming stinks today, an opinion by Rinikusu · · Score: 3, Insightful

      And it's precisely this attitude of yours towards your "common man" that really makes computing suck, in general. Your entire post reeks of "elitism", harkening to a time where computer programmers were some sort of elite bunch that people "just depended upon" to make the magic database "go". Now that computing has been reduced to the masses, for better or for worse, you feel that you and your 4-8 years of education in the computing field are threatened by a bunch of ITT graduates who don't have the theoretical knowledge that is absolutely not required to generate a simple GUI that queries a database and presents them to the user.

      Frankly, programming as a profession bores me, which is why I no longer do it. I don't mind programming, on projects that *I* want to work on, but I no longer want to work on databases that aren't mine or are applicable to anything I'm remotely interested in. I'd rather use the computer as a TOOL, you know, a means to an end. It seems a lot of programmers are programming because it IS the end. They have no interests outside of computing.

      The fact that many ITT Tech students may not "understand" Knuth is irrelevant because many ITT Tech students don't give a flying fuck about Knuth. I know who Knuth is, I've owned/used his "Art of Programming" or whatever it was called, and I don't consider myself a better person.

      --
      If you were me, you'd be good lookin'. - six string samurai
    5. Re:why does programming stinks today, an opinion by the_mad_poster · · Score: 4, Insightful

      Any moron fresh out of ITT or CLN with a degree pasted to their face by their own drool can churn out a reaking pile of code that will work.

      However, without the theoretical knowledge to back that basic syntax knowledge up, it won't work well.

      The grandparent post mentions coding being a "factory job". The commoditization of coding IS a huge problem. Coding WELL is not easy. However, because these half-wits that barely dragged their sorry asses through High School can go to CLN and pick up the latest "Microsoft cert dujour" or whatever other worthless peice of paper they offer, the overall expectation of coding is dropping. I couldn't tell you how often I've been ordered to cut critical corners by clueless bosses who don't understand coding on any level deeper than how to throw syntax together to create a brittle shell of a program that will work just long enough to take the customer's money and run (a favorite quote: "... *I* was never taught that." - spoken in the manner of someone who can't imagine they don't know everything).

      The problem isn't that we're elite. The problem is that good programming is no less complex or time-consuming a task now than it was 20 years ago. Why is it elite to try and explain that to someone when they tell you not to bother with such and such critical piece or this basic security test? It's not elite, it's just that we've been flooded by so many bozos that wouldn't know good programming practice if it bit them in the balls that we're constantly deluged by sub-par workers and everyone has come to accept that sub-par work as the norm.

      --
      Alito: A vote for Alito is a punch in the eye to put that bitch back in her place!
    6. Re:why does programming stinks today, an opinion by KrispyKringle · · Score: 4, Insightful
      I know a number of people just bitched you out for this post, so I'm going to try to keep it brief. ;) Just a few points, in no particular order.

      You refer to the cable guys as iif they are the epitome of computer science. They aren't computer scientists. They almost certainly aren't even programmers. Perhaps to the completely ignorant, all computer-related jobs are the same, but they aren't. Most jobs as a technician are crap. Slightly above that would be the post of admin. Keeping something up to date. Installing new software. Above that, some network and system admins have interesting jobs designing new systems, implementing creative solutions to problems, and so forth. Programmers have a similar opportunity, to do creative coding, but often it's just another solution to another problem. Not something that sounds like a lotta fun. And above that would be computer science. Research. Whole different ball game.

      I think this is the root of your confusion. You see more blue-collar technical jobs. This doesn't mean less research is going on, though. Back in the day, the only people who interacted with computers were academics and researchers. There was no ITT tech. Now, in addition to the academics and researchers (of whom there are actually almost certainly many many more), there are hordes of unwashed masses actually (heaven forbid) using computers as tools, rather than just for the academic prospects themselves. Point is, the research is still there; in fact, there's far more of it. But there are also more and more other uses. This isn't a bad thing; it's a good thing.

      In case you don't see what I mean, look at it this way. Your complaint could be summarized with an analogous complaint about the watch industry. Back in the 1800's, the only watches available were really classy, expensive, work-of-art kinda things. A gentleman's accessory. Now, any old Joe on the street has one; they come in all sorts of cheap, disposable, low-quality shitty versions. But that doesn't mean there are less high-quality versions; in fact, there are more. Tag Huer, Rolex, Citizen, Suunto...the competition to make the greatest precision timepiece is quite tough, I suspect. Point is, there's a lotta shit out there now that wasn't there in 1800, but plenty more nice watches as well.

      Hmm. I guess I didn't really keep that brief. Sorry.

    7. Re:why does programming stinks today, an opinion by torokun · · Score: 4, Insightful
      It's clear to me why you wrote this post from a subjective standpoint -- I thought the same way when I was 20. Even when I was 24. I don't think the same way now at 28.

      Why? Because I've seen through experience that (1) most people can't learn the hard CS stuff, and (2) 95% of projects don't require it. The sad fact is that "Computer Science" is only really applicable to solving "hard problems", writing compilers, designing languages, or to AI and its kin. It is in general, not applicable to business applications.

      It used to be, but what happened? Computers got faster. Here's the progression in my career...

      1. Kudos for optimizing memory management and speed in C/C++, or even assembler.
      2. Questioning the need for such optimizations and pushing profiling before such work if it would take a significant amount of time
      3. Questioning the need for ever doing optimization, questioning the value of low-level languages.
      4. Pushing high-level languages (web-based solutions / VB) for everything unless a clear need exists.
      5. Sending everything to India.
      This just wouldn't work unless most apps simply didn't need the work that we as computer scientists want to put into them. Knuth is a perfect example -- he spent years and years getting TeX perfect just so he could see his books typeset perfectly. We have that sort of perfectionist bent.

      But it's all driven by money in the end, unless you're in academia, or research... A very few people are in positions doing both technically hard stuff and making money for it. These would be like Wolfram Research, google, some game companies (although I hear they're sweatshops, but what isn't nowadays?)...

      In the end, you're correct that a lot of hard problems can only be handled by people trained in CS. These would be the things mentioned, along with parallelism, threading, and optimization issues... But it's also true that most of the products out there don't need these. We're sifting these categories apart now, and unfortunately, it's just a fact that not much yummy stuff is left.

      But when you have garbage collection, a raging fast machine, and graphical IDE's, even if someone puts crappy code together, as long as they make a decent API, it's going to work after they try to compile it half a million times.

    8. Re:why does programming stinks today, an opinion by heyitsme · · Score: 5, Insightful

      As a student at a major Big Ten University (tm) I can easily tell that your perception is a bit skewed. The old cliche "you get what you put into it" applies to many things in life, and computer science is no different.

      My school's core computer science curriculum is in Java. Language of instruction is a moot point to a rather great extent. You can learn as much from a data structures class taugh in Java as you can from one taught in $language_of_choice. The idea is to learn how things work fundamentally, and then apply those ideas practically. A linked list in Java works the same as a linked list in C. Its not about Java being the "industry standard" as you call it, its about Java being a perfectly modern and capable programming language. The idea

      Your next analogy of the cable repairmen almost prompted me to moderate your post as +1 Funny, but when I found out you were not joking I decided to write this reply instead. To even equate a cable repair person with a computer scientist is pure madness. Even if they were programmers, how is getting the cable modem working a good metric of "computer stuff in general" being "a lot less like a science or craft and more like a factory job", or even relevant to the discussion of computer programmers vs. computer scientists at all?

      None of your points even remotely explain what you consider the fundamental problem: "why software sucks...why the programming "trade" sucks...why companies can send the jobs abroad to work for peanuts" The fact is not all software sucks, many people love their jobs in the industry, and these people are getting paid well to do their jobs. Most of the computer scientists you speak of don't work in the private sector, you can find them at government research institutions.

      To say that these type of people don't currently exist, and that current CS curriculums can't produce scientists of this caliber is nothing short of ignorant.

    9. Re:why does programming stinks today, an opinion by aflat362 · · Score: 1
      programming and computer stuff in general has become a lot less like a science or craft, and more like a factory job

      Programming is nothing like a typical factory job. I assume you are referring to the manual labour positions where a person constantly repeats the same physical motions throughout the day. If you are half the programmer you claim to be this much would be obvious to you.

      Programming is a craft but it is not really a science. If you went to a school where they taught you how to think logically, and write programs using whatever programming languages you aren't a computer scientist. You are a computer programmer. There is no shame in this and I am quite satisfied being a computer programmer by trade myself. Our craft is our compiled code.

      To me, the title of computer scientist implies the application of the scientific method toward computing. This could be research and development of new hardware, new languages. You get the point.

      And another thing. You didn't have to tell us you were 19 years old. This much was obvious upon reading your ranting, elitist, immature post.

      --

      Conserve Oil, Recycle, Boycott Walmart

    10. Re:why does programming stinks today, an opinion by mrtroy · · Score: 1

      Reasons why parent's ignorance should NOT be marked informative.


      However, I have been in my day an avid C and BSD (mostly FreeBSD, but some NetBSD) user.
      Honestly, from where I sit (you may agree or not), programming and computer stuff in general has become a lot less like a science or craft, and more like a factory job.

      You may do repetitive cut and paste coding and BSD work, but that does not make you in any sense a programmer or computer scientist. You are in fact similar to a factory worker.

      More and more computer science departments are teaching using Java. Why? because it helps people to understand how the computer works? no. Simply, because it's what the industry is using.

      No, Computer Science departments teach using Java because it is the simplest and most intuitive language to use. Because of the automatic memory managements, provided libraries and OOP-readiness of Java, courses can teach "Java" courses with little or no attention to semantics. Computer Science programs should (and mine does) instruct students in good programming practices, good design and architecture principles, refactoring techniques, OOP design, etc. Programming languages are hardly important, computer scientists should be able to apply their knowledge to ANY language.


      I had 4 technicians from Cox over at my house yesturday because my parents couldn't figure out what was wrong with the cable modem. They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals. Why? because that sort of work has become blue-collar and low-rent.


      Cable repair people are not required to wear suits. Cable repair people come and fix physical problems with the physical cable...or replace the modem, they are the most cost efficient way of fixing someone's internet.

      How many graduates of say, ITT Tech would actually understand Knuth, even if they have ever heard of him? Likely, not many. That is why software sucks. That is why the programming "trade" sucks. and that is why companies can send the jobs abroad to people who work for peanuts. Programming is just like stamping "Ford" on the grill in a Detroit assembly plant these days and nothing more.

      First, ITT graduates are hardly computer scientists. Secondly, you can not send programming work abroad for cheap. Obviously you have never worked at a company that develops software, interview processes are getting more and more intensive. In an age where corporations are being measured by their intellectual property, not their physical worth, true computer scientists are still in high demand. With the appropriate skills and experience, anywhere from Microsoft to IBM to Google to Amazon etc are willing to hire as many people as they can get ahold of.

      Please dont lump together code people who create templated websites and do little coding with true computer scientists. Just as mechanical engineers perform a far different role than a factory worker, computer scientists perform a far different role than people who use Excel and make websites from templates.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    11. Re:why does programming stinks today, an opinion by Doomdark · · Score: 4, Insightful
      however I will also have to try not to swallow cyanide while dying through Java classes teaching me how to program in a way so dumbed down that even the greatest imbecile can't screw up.

      ...

      This afternoon I made some money writing some boring PHP code, but also worked on my personal projects,

      While I whole-heartedly agree with points you are making, it's worth mentioning that there's nothing fundamentally wrong with either Java or PHP, that leads to boring lowest common demoninator programming: it's possible to do interesting advanced and sophisticated things using both, as well as with their countless alternatives. Except for some elitits who claim one has to use, say, functional programming languages to do anything interesting, or "no pain no gain" hard-core low-level language fanatics, most truly good programmers understand it's not tools that make exceptional advances; it's the craftsmen that use them.

      --
      I like paying taxes. With them I buy civilization -- Oliver Wendell Holmes
    12. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0
      Because this post sucked so much - I looked at your past posts used all 5 of my mod points on modding down your past posts. I took away 3 of your +5 posts with a -1 overrated.

      You are so horribly rude. The "filthy, disgusting" cable guys probably thought you were the brattiest, most pathetic loser who still lives with his parents that they had ever seen.

      w00t!

    13. Re:why does programming stinks today, an opinion by KrispyKringle · · Score: 1
      Perhaps it's poor management, not poor programmers, who are to blame. If managers knew enough about when to cut corners and hire the cheapest talent, and when to actually spring for the good coders, you probably wouldn't have to worry quite so much about shoddy software and slaps in the face at work.

      Some coders are elite, and others aren't. That's not a bad thing. That's the way the market works.

    14. Re:why does programming stinks today, an opinion by KrispyKringle · · Score: 2, Interesting
      Oh, yeah. And one thing that we can do to help mitigate this problem? Help managers understand what it is we do. If we want the uninitiated to think that programming is this difficult, arcane task they'll never understand, then they won't ever learn to tell the difference between a valid excuse (``that's a complex request that will require a lot of time for writing and testing to do well'') and a lame one (``I need to contact MSDN for the latest version of the J2EE hashtable implementation to speed up our ASP.NET servers''). Let them in on your secrets and they'll be a bit more receptive to your side of the story.

      Sorry for the replying to myself thing. I hate it when people do that.

    15. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0
      He's 19. It's OK for him to still be living with his parents.

      And while I agree with you that he was a bit elitist, don't abuse the moderation system. I haven't bothered to metamod in months, but you're maknig me rethink my apathy.

    16. Re:why does programming stinks today, an opinion by secolactico · · Score: 1

      I had 4 technicians from Cox over at my house yesturday because my parents couldn't figure out what was wrong with the cable modem. They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals. Why? because that sort of work has become blue-collar and low-rent.

      I'm not a Cox customer nor I work for them, but I've had some experience with cable modems.

      If the techs on the company believed that the problem was a on the transmission line or the modem itself, it is likely that they sent the guys who do the actual physical installation on site (inc, laying tge cable, drilling walls, if necesary, etc). That is a blue collar job (nothing wrong with that, it is skilled work) with very little to none programming skill required, and they usually wear overalls, like gas station attendants. Why they were so many? Usually those guys work in crews (I think it's a safety requirement) and were probably in contact with the people at the NOC who were doing the actual troubleshooting.

      Just like every other proffession, there's very little available work that is creative or glamorous. Most of the available positions are for keyboard jokeys or tech support or somesuch, and almost every guy/girl you'll meet will probably think they know better than everybody else.

      For what it's worth, a couple of pieces of advice:

      1. Study hard and don't, even if you think the subject at hand is beneath you. But make sure you do some "social networking". Not only will it make things more bearable, but often knowing the right person can help you get the foot on the door for a job.

      2. Take care with what you say out loud. That "filthy...blue collar...gas station attendant" kind of comment might get people to think you are a bigot/classist/whatever, even if they are taking you out of context.

      --
      No sig
    17. Re:why does programming stinks today, an opinion by G-funk · · Score: 1

      More and more computer science departments are teaching using Java. Why? because it helps people to understand how the computer works? no. Simply, because it's what the industry is using.

      Good. Because if I coughed up a (large in Australia, obscene in the US) pile of cash to go to UNI, and they teach me something like MODULA-2 that will never help me get a job, I'd be pissed.

      --
      Send lawyers, guns, and money!
    18. Re:why does programming stinks today, an opinion by smittyoneeach · · Score: 1

      I'd like to add a dimension overlooked in your post. While initially counter-intuitive, those half-wits that barely dragged their sorry asses through High School are actually a feature, not a bug.
      This whole 'programming still stinks' argument implies that there should be some kind of 'non-stink' end point to programming. Perhaps, when the carpenter returns for longer than a Mel Gibson flick.
      Until then, what you will see is more companies peddling the same stuff over and over; files, information lumps called classes, variables, functions, arguments, like you've seen for decades. What was the last original idea in software, open source or proprietary?
      And your half-wits are going to pile up even more pure dreck code with these new-old tools.
      Acronyms will come, and the will go.
      The intellectual vacuum epitomized by SCO will continue to suck, as vacuums do.

      The problem isn't that we're elite. The problem is that good programming is no less complex or time-consuming a task now than it was 20 years ago.
      Furthermore, the talent distribution is a normal curve, and the state of the art is a completely different dimension still. You may write FORTRAN in any language, but can you write FORTRAN in every modern language?
      It's just a nasty, chaotic problem, and you are left to wonder about anyone carrying a truth claim about what's really wronngg with software.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    19. Re:why does programming stinks today, an opinion by matusa · · Score: 1

      yes yes, very true, I apologize if I seemed to cast different languages stupidly. Very true that the best tools easily make the worst result, and the worst torse also can make the best result--all depends on the wielder.

      What _is_ also true is that certain tasks are stereotypically associated with certain tools, and often in actuality are used in tandem.. I was merely leveraging upon that to illuminate my point.

      You can take what I just said, apply it to my previous post, and logically come up with the connection that I was the boring part of the programming I did... well, I'm sorry =P

    20. Re:why does programming stinks today, an opinion by BrianMarshall · · Score: 1
      ...the latest "Microsoft cert dujour" or whatever other worthless peice of paper...

      Funny how many thousands of dollars those worthless peices of paper cost to acquire.

      --
      "When the going gets weird, the weird turn pro" -- HST
    21. Re:why does programming stinks today, an opinion by MagicDude · · Score: 1

      Comparing cable modem repairmen to computer scientists is like comparing auto machanics to mechanical engineers. They are professionals who are trained to specifically provide specialized services in a limited aspect. They may not know everything about the Knuth, or the Desiel Combustion Cycle, but the point is they know more about it than you do, and that's what you're paying them for.

    22. Re:why does programming stinks today, an opinion by zymurgy_cat · · Score: 1

      Programming is just like stamping "Ford" on the grill in a Detroit assembly plant these days and nothing more.

      You mean it pays 6 figures (w/ overtime) with full benefits and damn near ultimate job security yet requires almost no education whatsoever? Man, I picked the wrong major....

      --
      -- Fugacity: Confusing chemists since 1908
    23. Re:why does programming stinks today, an opinion by jcr · · Score: 1

      Any moron fresh out of ITT or CLN with a degree pasted to their face by their own drool can churn out a reaking pile of code that will work. ..and some of them even know how to spell "reeking".

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    24. Re:why does programming stinks today, an opinion by miu · · Score: 1
      From what I've seen programming for money in the short time that I've been doing it, you need bright people to write maintainable code. They don't come off the assembly line.

      No, but bright people have created some of the most awful rotten code I've ever maintained. The fact is that professional development is often boring, there is very little room for creativity in the vast majority of actual coding that goes into a huge system.

      Programming is not mechanical enough that you can have drudges do it, but you need people able to function within a hierarchy, intelligent enough to learn the rules that govern the system being worked on, and able to understand how to actually take the thing as designed and implement it.

      It's possible to have a one shot thing done in India or wherever, but if you need software to be expanded and maintained over any significant length of time, it MUST be done by competent people.

      So why can't people in India or wherever be competent?

      --

      [Set Cain on fire and steal his lute.]
    25. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0
      Any moron fresh out of ITT or CLN with a degree pasted to their face by their own drool can churn out a reaking pile of code that will work.

      However, without the theoretical knowledge to back that basic syntax knowledge up, it won't work well.

      Hmm.. I think you failed to notice that some of the most effective software engineers the world has known (such as Bill Gates and Paul Allen) never got a degree. I find that people who are taught everything they know about programming never learn how to think outside of the box, and they usually take much longer to learn new technologies on their own. They drag their feet when it comes to programming tasks, content to sit on the security of their PHD. Programmers who have taught themselves programming I find to be much more productive and more interested in the technology.

    26. Re:why does programming stinks today, an opinion by syrinx · · Score: 1

      Good. Because if I coughed up a (large in Australia, obscene in the US) pile of cash to go to UNI, and they teach me something like MODULA-2 that will never help me get a job, I'd be pissed.

      If you're going to college (or "university") to learn job skills, then that definitely is a waste of your money, and you should be pissed.

      If you want to work on "job skills", then this might be what you're looking for.

      --
      Quidquid latine dictum sit, altum sonatur.
    27. Re:why does programming stinks today, an opinion by toby · · Score: 1
      The problem isn't that we're elite. The problem is that good programming is no less complex or time-consuming a task now than it was 20 years ago.
      Touche! And if those who responded to this thread ever opened their copy of Knuth, they'd be reminded of that fact.

      --
      you had me at #!
    28. Re:why does programming stinks today, an opinion by Mr.Oreo · · Score: 1

      Most applications don't need super slick, academically correct code to run these days. Napster was basically just a GUI on top of a IRC client. There was nothing incredible going on there, and the important point is that there Didn't Have To Be. It got it's job done.

      You're confusing your feelings of 'programming sucks' with 'now we have to let ALL the kids into the tree-fort'. Most of what's changed with the programming world is that now PHB's and the average joe understands it, and can more effectively use the computer as a tool, much like us geeks could back in the 80's.

      --
      - Mr.Oreo
    29. Re:why does programming stinks today, an opinion by Stinking+Pig · · Score: 3, Insightful

      Lemme get this straight, doing well in academia is the answer but the only good thing in your academic curriculum is a side research project because your main classes don't teach thinking?

      I'll say this for the English degree, which I highly recommend to any young geek looking at schools: you learn to think, you learn to communicate, and you learn to differentiate shit from shinola. Surviving through a hardcore postmodernist-influenced seminar will prepare you for any amount of corporate meetings.

      --
      "Nothing was broken, and it's been fixed." -- Jon Carroll
    30. Re:why does programming stinks today, an opinion by Milo77 · · Score: 3, Insightful

      I agree - coding well isn't easy, but my CS degree really only half prepared me for being able to code well. Yea I learned a lot of theory and understand more-or-less exactly what's going on on that processor, and this has enabled me to write some pretty clever code. But I've also learned that cleverly written code (code that's "better" in a purely acedemic sense) can be some of the worst code. It reminds me of that aweful hacker creed: "it was difficult to write, it should be difficult to read." Its sad, but true for most of the "software developers" I've met. They'll write terribly clever code, but in the end they've done a disservice to the project's long-term viability. I saw another quote this week (off the UNO website, off slashdot earlier this week) [paraphrase]: "the code will get written once, but read many, many times - if you make it easy to read you and others will benefit in the long-run." (you get the gist)

      It is sad what we've allowed to happen to software engineering - a disgrace really.

    31. Re:why does programming stinks today, an opinion by noonien_soong · · Score: 5, Insightful
      Let me get this straight. You're 19 years old, you've played around with computers a little bit "in your day," you've read some Knuth, and you're smart enough that you've come to see yourself as superior to the average blue-collar worker. This gives you so much insight into the world of software engineering that you can discern exactly what the problem is---programmers aren't as smart as you are, and if they were, software wouldn't suck. Would you say that's a fair characterization of your argument? Because that's how you come off.

      The first thing you have to realize is that software is being written at a much higher rate now than it was back in the days when programmers were physicists and mathematicians. That's because it no longer takes a rocket scientist to write a program, and that is a Good Thing (TM). If the programming learning curve hadn't come down, we wouldn't be living in the wonderful information society that we are today, because there simply aren't enough rocket scientists to hammer out every PHP script and database app one might desire. The technical aptitude of the people working on the foundations of computing is certainly not degrading as programming becomes more democratized, because those people's talent and skills are not forged in some intro programming class. Every hacker knows he learned his art outside the classroom. So it's not exactly logical to assume that colleges could turn out a crop of brilliant innovators if only they used Haskell, read Knuth, and taught all their CS students physics and numerical analysis on the side. Clearly, what would actually happen if one simply cut the lowly Java-bred programmers out of the programming craft is that a lot less bad software would be written, a little less good software would be written, and all of it would cost more. That's not exactly an improvement.

      None of this is to say that there are not pervasive (and addressable) problems in modern software engineering. Those problems are simply much more endemic to the state of the art of programming than they are to any particular group of people. As many have pointed out, software today is brittle. It is frequently opaque, offering users and programmers alike only the most rudimentary means of debugging. The bread and butter software used by everyone everyday is often monolithic, designed for one purpose and impossible to customize without intensive study. Think about it for a moment, and you'll realize that much of the functionality of a typical document-editing application is duplicated in any other. In principle, such functionality could be factored out. But I can't digress too far into that here - let me continue with the list of reasons why software sucks. Integrated development environments give programmers a view of a project that scares poorly with complexity, software is incredibly difficult to build from source (unless you use Java--heaven forbid that should find its way into the bubble of intellectual purity you inhabit), and perhaps worst of all, the design decisions and architecture of software are usually not expressed clearly anywhere except in source code, where they are obscured by all manner of syntactic complexities, compiler optimizations, and details that aren't significant to the overall intent of the code. These things--all the things that make software complex, which make it difficult for groups to work together on large software projects (as you would understand if you'd ever worked on one)-- are some of the real hurdles to be overcome in software engineering. ITT Tech and outsourcing to India are NOT the problem.

      I haven't said much about how to solve any of these problems. But I've said a lot, so I'm going to stop now. I highly encourage you to get some more experience and perspective before you make sweeping and arrogant generalizations. College-aged know-it-alls with overblown rhetoric are a dime a dozen. Real problem solvers are rare.

    32. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      That's OK. I just looked up his past posts and used all 5 of my mod points to mod him back up. It's a pleasure to see that at least some of today's youth put stock into professional appearance. :-)

    33. Re:why does programming stinks today, an opinion by ebuck · · Score: 4, Insightful

      Agreed, good programming is not easy, and many more of the avenues to enter the field should require more basis in theory (language design, automata, OS internals, compilers, underpinnings of good database design, etc.)

      But good programming should be less complex now than it was before. That's the whole imperitus of language design. That's the reason that the last of the big languages to roll out is the same "simple" JAVA bashed in a few previous posts.

      In a previous post, I couldn't fathom the divergence of thoughts that denounced JAVA as a language while espousing that he's really cool C++/OpenGL stuff out there. C++ has a syntax that's unwieldy and awkward, mastered by comparatively few, and full of "compatibility" weaknesses shared by it's older brother, C. It's almost like it was thrown in there subconsiously to say, "Look, I am an uber elite programmer. OpenGL and C++. Watch me whine as I use something that has a clean, clear syntax."

      I'd hate to hear him gripe about PASCAL.

      "Really cool work", can be done in any language, and the proliferation of languages shows that there's many solutions to the same problem.

      His bashing the language for it's simplicity was as insightful as bashing good error checking, testing array boundaries, or enforcing garbage collection. Note that technological improvements can lessen the impact of these annoyances, but when the language design is flawed, only deep education of the masses (as in, don't do this, you'll regret it) can save the language.

    34. Re:why does programming stinks today, an opinion by slamb · · Score: 3, Insightful
      You refer to the cable guys as iif they are the epitome of computer science. They aren't computer scientists. They almost certainly aren't even programmers. Perhaps to the completely ignorant, all computer-related jobs are the same, but they aren't. Most jobs as a technician are crap.

      Agreed.

      Slightly above that would be the post of admin. Keeping something up to date. Installing new software. Above that, some network and system admins have interesting jobs designing new systems, implementing creative solutions to problems, and so forth. Programmers have a similar opportunity, to do creative coding, but often it's just another solution to another problem. Not something that sounds like a lotta fun. And above that would be computer science. Research. Whole different ball game.

      Here's where you lose me. I don't agree that computer science is "above" programming. In fact, I'd say that programming is the union of computer science and software engineering. Superior programming requires contributions from both fields.

      Software engineering is nothing to sneer at. It envelopes version control, coding style, rigorous specifications, code review, bug tracking, API documentation, user manuals, user interface design and testing, unit/regression/acceptance testing, etc. There's some real artistry involved. It's easy for us programmers to neglect these, saying that they aren't hard but we don't have the interest or resources. But in reality, when I really try to do even the most seemingly mundane of these tasks, I find there's a lot more skill involved than I previously realized.

      The experience has also made me skeptical of the idea of farming software engineering tasks off wholesale to specialized people. For example, writing good API documentation requires the involvement of the people who designed the interface. Likewise good user manuals require the people who designed the UI and administered the user tests. Pure technical writers can maybe even write the bulk of the prose, but if they can't do what they document, they don't have a prayer of noting subtleties without help.

      Summary: I think actually designing, implementing, and even proving correctness/efficiency of algorithms is a much smaller part of the whole than we like to admit. The other things not only valuable and difficult, but also should be done by the same people.

    35. Re:why does programming stinks today, an opinion by ExEm2SS · · Score: 2, Insightful

      Okay, I just had to respond to this post. You're young so it's expected that you're going to be opinionated and judgemental. I used to have that luxury when I was your age.

      I am an ITT Tech graduate, and I have been a computer geek since 1995 when I bought my first computer. When I was working in Portland as an electrician, we used laptops for troubleshooting. We needed these laptops so that we could plug them into our machines's PLC's (Programmable Logic Controllers). Unfortunately, laptops and industrial environments don't mix. Although we asked management to buy us industrial laptops, they refused, which meant that we would usually get the sales force's old laptops, which happened to be in great supply. These were old IBM thinkpads and their life expectancy was about three months once they were subjected to the harsh environment. Ok, no problem. If a laptop dies, pop out the hard drive, and stick it in another laptop. Unfortunately, our system admin could never figure out how to open up the laptop and remove the hard drive. Finally, after about the third time showing her, I decided that it's probably time for me to change careers. Here I am, an electrician, showing a University of Washington graduate how to replace a hard drive in a laptop. Go figure.

      Anyhow, I knew that I couldn't get into the IT based on my background. Even though I played around with Linux, I needed to have that magic piece of paper. Guess what, this was during the Dot com boom when every Tom, Dick, and Harry got an $80,000 a year (or so it seemed at the time) job and became an instant millionaire (on paper). I figured, what the hell, I didn't have the time to go to a four year university, and ITT seemed to have a respectable name. (Little did I know) Anyhow, it seemed like a fast track to a career that I would enjoy.

      Anyway, I got to ITT and started their CNS (Computer Network) program. However, I was always interested in programming, so I switched to the SAP (Software And Applications) program. While it's not a Stanford education by any means, it wasn't bad as long as you were willing to work hard and apply yourself. It didn't really go into any advanced topics, but it did go into the fundamentals. We had two Java classes, a Linux class, two VB classes, two C++ classes, and a Data Structures class using C++. We also had two software design and architect classes. Not university level, but pretty solid. I guess I was lucky, I had good instructors. Fourth of them come to mind. One of our instructors had a PhD and worked for NASA on the space shuttle program. The other guy developed missle guidance software for the Air Force. The third worked for IBM. The fourth, well, she didn't know shit from shinola.

      While in school, I was able to get job as a customer support rep at a very, very tiny ISP. 800 customers, three employees. Anyhow, the guy they hired to as the system admin got fired for incompentence. My boss found out that I played around with Linux and made me the system admin. That and I also worked cheap. Let me tell you, I learned FreeBSD the HARD WAY!!!! As in WHAT NOT TO DO!!! As in the web server's down, and you're feverously reading the FreeBSD handbook and parsing the newsgroups to get the Freaking thing up and running. Oh yeah, also explaining to your customer's why your web server's down. The job sucked and so did the pay, but I got a lot of experience real quick. Pretty soon my reputation got around because I gave the customers good service, and I was able to land a few minor consulting jobs.

      Fortunately, after I graduated from ITT Tech, I was lucky enough to land a programming job, as a Microsoft Access report writer (Yuck!). Mind you, I did my final software project at ITT using Java and MySQL so I wouldn't have to work with Access!!! However, in this economy, beggers can't be choosers, especially when you have a two year degree from ITT Tech. Anyway, after working with Microsoft Access and exploring VBA's capabilities, I found that Access is a very use

    36. Re:why does programming stinks today, an opinion by damballah · · Score: 1
      There is an explanation for producing programmers: supply and demand. Consumers and companies need more programmers, so the providers respond by making it easier. So, you are (potentially) to blame for that.

      There is no science to programming. It's not "programming science", it's computer science.

      If you know C, you know what's wrong with it and when not to use it. If you know Java, the same thing applies. Operating systems are written in C, but server-based apps are written in Java. It's really that simple. You're the one that's making your life harder.

    37. Re:why does programming stinks today, an opinion by damballah · · Score: 1
      Open GL, Java, C++ all have their limitations. Dringking cyanide is not gonna make any of those disapear.

      Be thankful that someone does "the job fine". They do the work that you're refusing, and they could be the ones making your school's website, your electronic students records, or your latest gadget work.

    38. Re:why does programming stinks today, an opinion by anthonyrcalgary · · Score: 1

      No, but bright people have created some of the most awful rotten code I've ever maintained. The fact is that professional development is often boring, there is very little room for creativity in the vast majority of actual coding that goes into a huge system.

      You need bright people to write maintainable code, but bright people do not necessarily write maintainable code.

      So why can't people in India or wherever be competent?

      I was shooting for something that expressed "large but poorly trained army of programmers". People in India can be competent, just as people here can be incompetent. I expressed that poorly.

      --
      When someone might yell at me, it has to be OpenBSD.
    39. Re:why does programming stinks today, an opinion by K-Man · · Score: 1

      That's funny. Usually when I have a problem with my cable they send over Don Knuth. I flipped him a twenty once, and he gave me free NP channels.

      --
      ---- "If we have to go on with these damned quantum jumps, then I'm sorry that I ever got involved" - Erwin Schrodinger
    40. Re:why does programming stinks today, an opinion by ClosedSource · · Score: 1

      "In the early days programmers who physicists, engineers, and mathamaticians."

      You must be talking about the very early days. This hasn't been true for over 40 years. Cobol was created in 1959 and it's not particularly known for its use by the above professions.

      So unless you think nothing else has happened in the programming world for the last 40 years, I wouldn't base too many conclusions on your fundamental assumption.

    41. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Sorry to bash you here, you basically belong to the so called uber elite type of coders, who basically is nailed shut in his view of the world.
      Being in a big project basically means that you do a little bit more than a few thousand lines of code. And having a simple language which does not get into the way of structuring your designs by constantly being able to shoot yourself into the foot can help tremendously.
      There are lots of people who can program but around 10% no matter which language are able to handle to design big systems.

      You have two choices either remove the wood from your head and start to learn and view things from different angles, or get out of the field before you enter it.

    42. Re:why does programming stinks today, an opinion by Slinky+Saves+the+Wor · · Score: 1

      Consider also the following (not necessarily all happen simultaneously):

      • Programming languages which are meant for the lowest common denominator. Those languages are used which are not the best ones, but for which you can find enough adequately skilled work force. Mediocrity begets mediocrity.
      • Processes which hinder progress (using humans to do what a machine should be made to do automatically).
      • Things are made artificially hard for the programmer. The more you type, the better the codeline production must be!
      • Outdated, irrelevant, "dumb" platforms, operating systems and APIs with which to work.
      • Automation is avoided like a plague.
      • Everyone is too busy to think in creative ways. Try making crossword puzzles for 8 hours each working day for four months, non-stop. Do you burn out? How much do you innovate? Does it start to feel stupid? Could you automate it? You don't have time to build the automation, remember: you need to do the crossword puzzles 8 h each working day!
      • Lousy salary, lousy bonuses, it's just a day job churning out code. If you put in more, you get nothing out for yourself (except an ulcer).
      • Programmers are considered to be like conveyor belt automatons instead of creative beings, artists, that they are.
      • Etc.

      If you want programming to not-stink, MAKE IT EASY FOR THE PROGRAMMERS. It really is that simple.

      Stop thinking user-centered, and inventing idiot-proof systems which a 2-year old could use, because you can't. Think programmer-centered. If programming is EASY for the people who do it, they can make any kind of user interface, and any kind of program, anything you want.

      --
      I do not moderate.
    43. Re:why does programming stinks today, an opinion by arkhan_jg · · Score: 1
      I had 4 technicians from Cox over at my house yesturday because my parents couldn't figure out what was wrong with the cable modem. They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals. Why? because that sort of work has become blue-collar and low-rent.

      And you know WHY service technicians prefer to wear overalls rather than a suit? Same reason that plumbers do, they have to crawl around in your crap.

      I used to work in the field, and believe me, a lot of people NEVER clean under their desks. So you're lying on your back in the dark checking the cabling, amongst the dust if you're lucky, the food debris and dead insects if your unlucky, amongst live insects if you're very unlucky.

      Or there were the times you were squeezed behind the server cabinet, in with the cabling, and for some reason, there was always something sticking out slathered in grease.

      I did wear a shirt and tie, because it was company policy, but it was a rare week when i didn't end up with at least one ripped shirt at the end of it. Not least because when you spend a lot of the day with your hands inside sharp metal cases, you slice up your fingers and your cuffs. And whoever thought working on live cases with spinning fans and electricity was a good place to wear a tie ought to be shot.

      Cable/telecoms engineers have it even worse. They spend a large part of their day up poles or in cable maintentence shafts or even manholes for underground fibre.

      So next time, try and judge your engineer by the quality of the work he does, rather than the clothes he has to wear going places that don't get cleaned by the maid.

      --
      Remember kids, it's all fun and games until someone commits wholesale galactic genocide.
    44. Re:why does programming stinks today, an opinion by jcr · · Score: 1

      The problem is that good programming is no less complex or time-consuming a task now than it was 20 years ago.

      I beg to differ. I have far better tools today than I had 20 years ago, and I can get any given task done in far less time with far fewer bugs than I could in the days when I was still writing my own event loop for every app.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    45. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Call that brief! I hate to see what a rant looks like. ;-)

    46. Re:why does programming stinks today, an opinion by nimblebrain · · Score: 1

      No, but bright people have created some of the most awful rotten code I've ever maintained.

      There are a number of reasons why seemingly bright people write latrine-awful code:

      Avoided maintenance

      Doing a lot of new development and never having to support/maintain it produces a significantly different impression of one's own coding than having to stay the course and add features into whatever minefield one has created.

      It wasn't their hobby

      Hobbyists bring a lot of enthusiasm, and often start relatively young, giving them a lot of exploratory experience, and often a passion for the craft.

      Despite best intentions, it's simply harder to feel the same zeal for self-improvement or qualtify of workmanship when one has gone to school/college/university in order to learn programming "to get a job". All analogies between musicians and programmers in this vein apply :)

      First time out of the blocks

      Especially out of shorter courses, the survey given of technology and techniques can be relatively scattered, with a lot of focus on the technologies available, and much less, if anything, on how to do projects, testing, or design. OOP principles can help, but like principles of technical writing, they can only give you the guidelines, not the creative content.

      Biting off more than they can chew

      Some bright people will be positively filled with bright ideas and "wouldn't it be cool if...", and can put themselves on paths to the right functionality, but that require algorithms they don't have the foggiest about, or techniques they have little practice in, and they can get stuck trying to fill in the gaps.

      If you doubt this is possible, ask someone with a starting set of skills whether they'd like to make a game, and how possible they think it is :)

      In slightly larger projects, this can also manifest itself as an inability to delegate - which can start being problematic if team members are waiting on something to start with.

      Distractable

      Vis-a-vis your comment about professional development being boring, distractability is a common side-effect in bright folks who just want to play, and not get bogged down in the nose-to-the-grindstone details.

      These are the folks who think of something cool, then spend two months trying to get a feature that isn't core, wasn't asked for, etc. to a working state. This can overlap with the next problem...

      Procrastination

      Whether it's the thrill of deadlines zooming by, poor vision by project managers, team leads or management, or just suddenly realizing that people are serious about wanting that program done by three weeks today, some code is written badly because it's written fast and at the last second.

      Gizmophilia

      Some code isn't so much bad as it is confusing, laden with whatever behaviors, syntax or components are out near the edge of what's defined in the class library and language syntax.

      Whether it be quadruple-nested ternary operators, naming variables for appropriate characters from a favorite videogame, mixing in excessive amounts of system calls to 47 hard-to-install third-party libraries or trying to overload binary negation for strings to mean "how long is the string", these programs can work, or start out working, but the code is often not human-readable, or is hard to set up and build in another dev environment.

      Poor debugging skills

      Sometimes, programs start out readable, but then the code runs into a problem. Debugging skills and coding skills don't always live in the same person, and the desperate coder, wondering why something isn't getting called, or is refreshing in the wrong order, doesn't and can't properly trace what's happening, and so starts to add in duplicate calls, strange exit strategies, state variables all over the place. The wiring can start to cross really qu

      --
      Binary geeks can count to 1,023 on their fingers :)
    47. Re:why does programming stinks today, an opinion by Quantum+Jim · · Score: 2, Informative

      Note: This reply got really off-topic as I wrote it, but I still think it is an interesting train of throught. Got me thinking about languages, at least. So it may be a little rambling... I apologize in advance for any hard-to-understand prose.

      "Really cool work", can be done in any language, and the proliferation of languages shows that there's many solutions to the same problem.

      That's generally true except for some niche markets. There are still a few things, which should be programmed in assembly or a lower-level language like C. Problems with extreme memory or speed requirements are often only solvable with languages invented when most computers benchmarked against those extreme memory or speed specs.

      when the language design is flawed, only deep education of the masses (as in, don't do this, you'll regret it) can save the language.

      I don't think most languages - C++ in particular - are flawed. They rather represent different tradeoffs between ease of writing small programs, ease of writing large programs, limiting performance, capabilities, and extensibility.

      For instance, Java and Python provide large built-in libraries to make programs less complex. Those two languages are also generally implemented via virtual machines. VMs provide a medium between slow-but-safe (and highly portable) interpreted languages like BASIC, ECMAScript or Haskell and the traditional fast-but-dangerous compiled languages such as C/C++ or others. Also C++ was originally implemented in C macros - wasn't it? That's extreme extensibility. However, you don't want to use those features for individual projects: it'll only add complexity and thus a greater chance of bugs. Those features are generally useful for niche experiments, debugging, or sharing code among many projects. As a movie said (or something like it), with great extensibility comes great responsibility. :-}

      There are many more examples. Special-purpose languages like XSLT which do one thing really well (in this case, interpret data) and suck at almost everything else. (The game of Life can be implemented in XSLT, but why? :-} ) Some languages are easier to use in some professions than others - i.e. Lisp and Haskell in Comp Sci; Matlab and Mathematica in Engineering (although everyone really hates them); I once saw a psychology experiment written in Pascal (why? I don't know!). The choice of a programming language is all about design tradeoffs. The requirements of the problem dictate which class of languages are best suited - it doesn't make one right or one wrong.

      --
      It is impossible to enjoy idling thoroughly unless one has plenty of work to do.
      - Jerome Klapka Jerome
    48. Re:why does programming stinks today, an opinion by StarfishOne · · Score: 0

      Interesting posts in this (sub)thread.. but I would like to comment here:

      [quote]No, Computer Science departments teach using Java because it is the simplest and most intuitive language to use[/quote]

      I really believe that Python is far easier and more intuitive to use then Java.

      If you want to develop something serious in Java you need the API reference quite often.

      Also details in naming using capitalized letters or not.. .length vs. .length() etc. (prob. bad examples, but I think most will catch my drift)

      Python is far more consistent and intuitve to use as a language. No, it isn't perfect.. but IMHO _very_ impressive

    49. Re:why does programming stinks today, an opinion by StarfishOne · · Score: 0

      You are paid 6 figures?!? :O Where, where?!? ;)

    50. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Honestly, from where I sit (you may agree or not), programming and computer stuff in general has become a lot less like a science or craft, and more like a factory job. In the early days programmers who physicists, engineers, and mathamaticians. Today programmers are just programmers.

      Some time in the 1960's, computer science became an independent discipline, no longer a special branch of mathematics or electrical engineering. That's mostly a good thing. It means there is a community of people dedicated and very focused on the specifics of cs. However, I have to agree that the CS field has a wide range of talents. There are very talented people, but there are also a lot of people with full positions in CS departments who are not much more than glorified hackers and sys admins. You don't find that kind of low end in fields like math.

      On the other hand, programming these days is a much easier task than in the days when UNIX was being rolled out. First, the programming languages are far better designed now than then. The best languages around at the time were things like Algol, Simula, and early Lisp dialects. Throughout the 1970's people were still writing incredibly bad programming languages, like the Unix shells, DOS batch language, TeX, Emacs lisp, etc. Have you ever looked at them? Not good. And some of these (e.g. TeX) were written by leading computer scientists. Even the crudest languages of today, written by amateur hackers with little knowledge of computer science (e.g. perl, python, ...), are worlds beyond those early languages. (The 1970's were also the time when the first really good languages began to emerge: ML, Scheme, Smalltalk, Miranda, Beta, Rexx, ...)

      Then we have far better development tools. Compare Visual C++ and Visual Basic to what people had in 1970. Even the Unix variants of today, as crude as they might seem compared to Windows, have come a vast distance since those early days. That was 10 years before even emacs. That was before make. People didn't even know how to back up data at the time. There was hardly a decent network. Even multitasking was dubious. And severe resourcelimitations forced people to do scary things we'd never want to do today.

      Plus, we know much more about software engineering. There are huge resources available in books, online code repositories. We can share information on the net, discuss things in news groups, etc.

      Etc. Etc.


      More and more computer science departments are teaching using Java. Why? because it helps people to understand how the computer works? no. Simply, because it's what the industry is using.

      The reason the industry is moving toward Java is that Java offers a lot of benefits over a language like C in terms of development time, reliability, and maintainability. This is basically a good thing. Programming C may or may not teach you something about how a computer works, but that's no reason to spend your life programming in it, any more than you'd spend your life programming in assembly.


      I had 4 technicians from Cox over at my house yesturday because my parents couldn't figure out what was wrong with the cable modem. They were the most filthy, disgusting bunch I have ever seen and were dressed more like gas station attendants than professionals. Why? because that sort of work has become blue-collar and low-rent.

      Those 4 technicians probably weren't programmers. Cable installation guys are closer to gas station attendants than they are to computer scientists.
    51. Re:why does programming stinks today, an opinion by Kjella · · Score: 1

      Any moron fresh out of ITT or CLN with a degree pasted to their face by their own drool can churn out a reaking pile of code that will work. However, without the theoretical knowledge to back that basic syntax knowledge up, it won't work well.

      (...) Coding WELL is not easy. (...) I couldn't tell you how often I've been ordered to cut critical corners by clueless bosses who don't understand coding on any level deeper than how to throw syntax together to create a brittle shell of a program that will work just long enough to take the customer's money and run.


      And yet strangely enough, the most brilliant programmers I know tend to go back the other way - to only create the exact code that's needed. It's very lean, mean and short code - and certainly not brittle. Not that they couldn't create solid generic reusable components, but it wouldn't be "perfect" enough for this specific task.

      I suspect many of the clueless are trying to mimic that kind of code, because it's usually quite impressive - but without understanding any of the hows or whys it's neither reusable nor well-made, nor easily improved upon. In other words, simply shitty.

      Kjella

      --
      Live today, because you never know what tomorrow brings
    52. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0
      Surviving through a hardcore postmodernist-influenced seminar will prepare you for any amount of corporate meetings.
      By the same logic, to become a real man you should be sent to your charming US prisons at 15-16 years of age? :-)

      Why not study a relevant subject to your coming job so you can work for a company where the ties and boot kissing aren't mandatory?

    53. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Napster required lots of music encoded into the mp3 format, it required the internet, it required modern operating systems, etc. Like most applications, Napster hid a hell of a lot of hard work by some very bright people who received little recognition while some random jokers got rich.

    54. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Unless somebody modded him back down . . . no you didn't.

    55. Re:why does programming stinks today, an opinion by hawkeesk8 · · Score: 1

      To respond to the watch analogy, the problem with the software industry today is that the software costing the most money, enterprise software, is typically of the lowest quality. Imagine if the watch industry worked the same way - you pay $5000 on a watch and when you compare it to a watch worth $12 in WalMart you find that the cheap-o version is comprised of better technology.

    56. Re:why does programming stinks today, an opinion by 1337_h4x0r · · Score: 1

      I've been a java programmer for about the last 2 years (coming from C/C++), and while Java has taken out alot of the stuff that makes it nearly impossible for idiots to program, to think that any idiot can turn out the software required makes me think you're as stupid as the people you're making fun of. The code I have to rewrite on a daily basis firmly shows me that idiots can still totally mess java up.

    57. Re:why does programming stinks today, an opinion by dustmite · · Score: 1

      I've been in this business for nearly a decade now, and quite frankly, there is ONE MAJOR reason that software still sucks. The majority of programmers are (a) damn lazy and (b) don't think properly about what they're doing. Simple as that.

    58. Re:why does programming stinks today, an opinion by 1iar_parad0x · · Score: 1

      Advanced engineering is applied physics; but advanced CS is mostly math. That's the problem. CS isn't quite engineering. Algorithm analysis is math. Database theory is an applied form of algebra. Compiler design is math. Computer graphics (research side) is math. CS is really more an engineering of ideas.

      What about AI? AI is a cross of logic, mathematical modeling, statistics, psychology, physiology, biology and many other fields. That's another great problem with CS. CS has no identity.

      What can a CS major do? It depends. If he enjoys his field, probably quite a bit. However, the more CS is moved away from mathematics and into engineering, it will be look at as EE lite or advanced MIS. Add to the fact that many CS people got into CS for money (haha), and CS is in bad shape.

      The original computer scientists where logicians and engineers. Yet the average CS PhD knows little about either. Sure, you study algorithm analysis/computability theory. Can you write a proof? (Actually yes you can, you probably do so everyday -- you just may not know it. Can you tell me why?)

      Lately, I've noticed quite a few logicians using LISP to work through problems. Ultimately, math is the computer program. You don't have to look further than the fields of computational physics, bioinfomatics, algorithmic information theory, or even modern quantum computing. This makes sense. Math in the sciences has always been about predictability. If doing a rain dance helps you determine the state of some biological system and you can reproduce the results on demand, then the rain dance is mathematics.

      If you want to do interesting stuff in CS, you need to go to a good school and eventually get some graduate training. A BS in physics doesn't cut it, and neither does a modern day BS in CS. Actually, I see a lot of interesting stuff being done with computers in other fields, or better yet, I see academics with PhDs in the sciences learning more about CS.

      --
      What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
    59. Re:why does programming stinks today, an opinion by smallfries · · Score: 1

      Lemme get this straight, doing well in academia is the answer but the only good thing in your academic curriculum is a side research project because your main classes don't teach thinking?

      Yes ;^) Although it doesn't seem to make sense there is a complete change between doing an undergraduate degree and doing a postgrad. The brakes are taken off and you are encouraged to do interesting original work instead of following the mould. In order to do this most postgrads have to be taught how to think for the first time in their lives... Beyond the postgrad lies academia, so he is right that the answer is to escape into academia and that you have to suffer through a lot of boring crap to get there.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    60. Re:why does programming stinks today, an opinion by pjt33 · · Score: 1
      More and more computer science departments are teaching using Java. Why? because it helps people to understand how the computer works? no. Simply, because it's what the industry is using.
      Why should CS departments use low-level languages to teach programming? The important concepts to get across in a programming course are algorithmic complexity and basic software engineering - writing for maintainability. The only programmers who really need to know how hardware works are those writing kernels and drivers.
    61. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      I was a programmer at a large software company out in California. I was one of the best in the world. I *quit* my job because there is no real future in being a coder. Now, I'm going to law school.

    62. Re:why does programming stinks today, an opinion by C10H14N2 · · Score: 1

      There's a very good reason for this and the article touches on it, albeit briefly. Engineers are, ostensibly, good at making things work, hopefully by the most efficient, elegant means possible. In many fields, the end-users' expectations, behavior and sense of aesthetics can either be easily deduced or if ignored, not really get in the way. Think architecture and civil engineering. People won't stop using a bridge because they think it's ugly. They might choose not to occupy a building if it looks like crap, but unless it is truly god-awful, a misinterpretation by the engineers will not prevent the use of the product.

      End-user software is a different story. I've been in this field for going on fifteen years and every single place I worked for has had the problem that most of the engineers DO NOT CARE about end-user software. They don't want to write it or support it. I'm not talking about companies that don't have qualified people. I'm talking about companies whose sole existence is computer science, but they don't give a rat's ass about anyone outside of the IT divisions. General user applications are generally BORING. What computer scientist's dream is writing really good financial reports? That would be, roughly, none.

      So, you get bloated toolkits and IDEs aimed at empowering those alienated users resulting in poorly written software using those toolkits. You get crappy desktops and dormant windowing systems (*cough* X *cough*). You get lazy attempts to duplicate microsoft office and even more painfully plodding attempts to make windows software run on Linux--because most computer scientists really can't be bothered worrying about this crap. IT'S BORING.

      Being nineteen and relatively idealistic (we ALL were and hopefully most of us still are a little bit), it's easy to ignore the fact that what goes on in academia takes many years, usually decades, to filter around in theoretical circles, let alone down to the 'grubby' world of practical application. OOP started going on forty years ago in 1960s. It took until the 1990s before it really took off outside computer science circles. That "programmers" are not "computer scientists" is no surprise. BASIC was written specifically so that scientists, but not computer scientists, could easliy write their own software--because computer scientists are neither qualified nor interested in writing the software in question. "Programming sucks" is just an artifact of that progression of programming as science to programming as practical application. It's not because mere "programmers" are equivalent to garbage men. It's because beginning roughly twenty-five years ago, EVERY science absorbed a bit of computer science, much to the chagrin of the computer scientists who occasionally run into the programming skills of economists, chemical engineers, social scientists and their likes--the people most high-level languages were specifically designed to empower so that they'd leave the real computer scientists alone to do their own work.

    63. Re:why does programming stinks today, an opinion by KrispyKringle · · Score: 1
      I was probably a bit glib, I'll admit. Large scale software design is something I'm quite bad at. It's not that it's intellectually challenging, or I can't grasp the concepts--it's just plain hard. But my point was that there is undoubtedly a ladder in terms of expertise. I may have to call tech support once in a while (I called Apple tech support a few days ago because my brand new Powerbook had a kernel panic after installing the OSX 10.3.3 patch), but it's not because they're higher trained or higher on the ladder than I am. It's because they simply know something I don't know.

      The point was not arrogance, but rather to explain to the original poster that there are better and worse jobs in technology, higher paying and lower paying and more routine (as in his factory worker analogy) and less routine, and just because there are more more routine jobs now doesn't mean that the whole field is in the dumps or you can't still do pure research.

      As for capability, hell, I can probably find a few researchers who'd find themselves stumped at a misconfiguration in Eudora, so there's definitely a field of expertise for even the lowliest technician.

      And finally, as for the lines between computer science and programming; you're right, they're quite blurred. Some programmers are crap, for sure, but some do stuff I could only dream of. So, yeah, it's a bit more complex than all that, I guess.

    64. Re:why does programming stinks today, an opinion by Reteo+Varala · · Score: 2, Insightful

      So the question of course becomes--how do you dodge the bullet of crap positions? Doing well in academia is probably unfortunately the best solution.

      I very much doubt that. The #1 method of succeeding in ANY business, whether it's programming, engineering, or even performing, is the ability to market and sell what you do. All the skill in the world isn't going to count for aught if you can't sell what you do... and if you can't program worth beans, if you can sell, then you're going to be able to make big bucks on crap.

      Hey, if it can work for Bill Gates, it can work for you!

    65. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1

      Darn, where are my mod points? You deserve (+5, Required Reading For PHBs) for that. :-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    66. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1
      I agree - coding well isn't easy, but my CS degree really only half prepared me for being able to code well.

      I think half-preparing someone would be an exceptional achievement for a CS degree. It's all too easy to believe that such a qualification is all it takes to become a programmer, and to misunderstand an academic study of an area to be a replacement for experience of the practical application of that knowledge. This is why hiring a natural hacker is often a better bet than hiring a highly qualified CS grad who's just in it for the money.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    67. Re:why does programming stinks today, an opinion by Kalani · · Score: 1

      You lucky bastard! He charged me $25.60.

      --
      ___
      The ends are ape-chosen, only the means are man's. -- Aldous Huxley
    68. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1

      OK, I'll play; for comparison, I'm 26.

      95% of projects don't require [the hard CS stuff]. The sad fact is that "Computer Science" is only really applicable to solving "hard problems", writing compilers, designing languages, or to AI and its kin. It is in general, not applicable to business applications.

      I think you touched on something very important there, but didn't pursue it.

      The skills and techniques developed by CS very much are applicable to business applications. Everything including your swishy new web service front ends to international business DBs would fall apart without them.

      The key is that in the business apps (aka databases) world, only a small number of people need to understand the deep stuff, and as long as the tools they write for others to use are good enough, everybody benefits. Skilled management in software development has always recognised that there is a bell curve of ability, and often the best use of your top people is to write tools for your average (and much more numerous) people.

      it's just a fact that not much yummy stuff is left.

      Again, I think this is a question of perspective. What's yummy to the theoretical/research-minded expert with a strong CS background is probably very different to what's yummy for the guy whose interest lies in producing a good database-based application for his client, and really has no time for the niceties of fine programming technique. In a happy coincidence, these two types of people are both valuable, and their roles are perfect complements.

      But when you have garbage collection, a raging fast machine, and graphical IDE's, even if someone puts crappy code together, as long as they make a decent API, it's going to work after they try to compile it half a million times.

      On that point, I disagree. I've just spent about four months on a project to implement a new feature at work. I spent the first month implementing the new feature, according to clear requirements based on a well-defined goal, and it worked just fine. I spent the next three months clearing up the regression test changes, ultimately going to the very heart of our system and code that has been there for a decade, and ripping it out because it was badly written and contained numerous minor bugs.

      Now, those bugs had always been there, they just showed up much more often in the new applications we're giving our software, which happen to be where my new feature is used as well. As a result, my productivity, defined by how much useful functionality I added, was reduced 75%, precisely because I was clearing up the mess of people who didn't try hard enough to maintain a good design and a solid implementation.

      This is probably the worst instance of this phenomenon that I've seen in my time as a professional developer, but it's hardly the first time I've seen the effect, and I'm sure it's familiar to any other software developers reading this post. This is the reason there will always be a need for the upper band of programmers; the question, IMHO, is more whether they're best used to clean up and maintain the code we write today, or implementing tools that will allow us to use more powerful code tomorrow.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    69. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1
      My school's core computer science curriculum is in Java. Language of instruction is a moot point to a rather great extent. You can learn as much from a data structures class taugh in Java as you can from one taught in $language_of_choice. The idea is to learn how things work fundamentally, and then apply those ideas practically. A linked list in Java works the same as a linked list in C. Its not about Java being the "industry standard" as you call it, its about Java being a perfectly modern and capable programming language. The idea

      It's a shame you didn't finish that sentence; I was interested in what you were thinking there.

      The thing is, you can't learn as much about general practice from one language as another, or indeed from any one language compared to a range of different ones. For example, the use of arrays and indexing is common to many procedural and OO languages, including C, Java, and their friends. The use of lists (in the form head element + tail) and pattern matching is ubiquitous in functional programming, and also supported by some scripting languages. There are few if any lanugages where you'd really learn the implications and pros/cons of both, and these are the two most basic data structures I can think of. A more complex version would be comparing the use of structures+pointers to build data structures in C with the use of conjunctive/disjunctive types and pattern matching in functional languages.

      Java is actually a particularly bad example of a teaching language, IMHO. It doesn't really let you get under the hood of either of these two mainstream techniques for defining data strucutures. It's similarly restrictive in other areas: everything is about objects, for example, yet it avoids some of the major OOP issues like multiple inheritance in favour of a much-simplified model. There are plenty of multi-paradigm languages that could have been used instead, or plenty of principally single-paradigm languages that are easier to understand for a beginner or more comprehensive beyond the basics. Java is used because it's trendy, nothing more.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    70. Re:why does programming stinks today, an opinion by papasasha · · Score: 1

      Did this article mention that common practice is to try completing a software project in too short a timeframe?

      That's a prime reason why so many things, programming included, "suck".

      Your statement that programming is like stamping an auto manufacturer logo on the grill has an unfortunate parallel. For some time now, thanks to its integration into so many fields, software can indirectly harm people about as well as an automobile can. (See recent article re: fatal rad overdose at the hospital.) How many software patches or automotive recalls happen after the test-case-gone-wrong occurs as part of "normal use" on a live subject?

      Perfection is not attainable, but "good enough" ought to be.

    71. Re:why does programming stinks today, an opinion by Hast · · Score: 1

      I agree with you that the gap between procedural languages and functional languages is pretty big and that learning one doesn't teach you specifics about the other. But after studying a load of math the ideas of functional programming weren't too hard to grasp. In many ways it's just math done in a language. (I've studied Haskell BTW, which is probably one of the more math-like functional languages.)

      In the introductory data structure classes I took it was mainly about different lists and simple sort algoithms. Then some chapters about other basic data structures like graphs and trees. There's not that much talk about how efficient they are (other than in general terms). It's mainly about learning that structuring the data can make your problem solving more or less difficult. This may seem blatantly obvious, but the idea of graphs is quite eye-opening if you haven't bumped into that before.

      Furthermore I fail to see the major diffrence between a functional style head+tail list with a procedural head+next structure. If you have a linked list implemented as a flat array you're apparently not very geared toward making insertions/deletions in the middle a fast case.

      Finally, I've done coding in a couple of languages and in my experience I've found Java to a pretty good compromise. Sure there are better ones out there for various purposes but Java is functional (as in, you can actually use it and having it on a resume might get you a job) and it hides some of the worst parts like memory management to ease the burden on beginning programmers.

      That said if I were to teach a kid or a friend some programming for fun I'd probably give them a more script oriented language. There's less stuff that's confusing that way.

    72. Re:why does programming stinks today, an opinion by Hast · · Score: 1

      Python is nice but it also has some pretty funky stuff in it. Why do I have to send a "this" parameter when I call a method in a class for instance? That just seemed fundamentally wrong to me.

      Besides, while Python is a nice language it's still not as mature as Java. Java also has the benefit of being available for many different problem areas, such as real-time and embedded computing. This means that you get a language which can be used in many follow up courses, which naturally means less extra work for the school.

      In my experience I need an API reference whenever I'm doing something I haven't done before. The general idea with going to school (at least at college level and above) is that you shouldn't be doing the same thing a million times over.

      All that nagging aside, Python is my favourite scripting language. In my experience it's unusably slow for many bigger applications though. I've tried making a ray-tracer in Python, but it was too slow. The code was a lot nicer than the C++ code we ended up with though.

    73. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1
      There is no science to programming. It's not "programming science", it's computer science.

      What an absurd thing to say. If computer science is not about the basics underlying programming (whether that's in a software language or using logic gates or drawing pictures on a piece of paper) then what exactly is it about?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    74. Re:why does programming stinks today, an opinion by damballah · · Score: 1
      Programming is the end result.

      [Computer science] contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation. (from www.hpcc.gov/pubs/blue94/section.6.html)

      Did programming by itself made possible to create binary search, the QR algorithm, or quicksort? Not really, it just provided implementation. There's still no science called "programming science".

    75. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1
      But after studying a load of math the ideas of functional programming weren't too hard to grasp. In many ways it's just math done in a language.

      That's true, up to a point, but the magic of functional languages -- concepts like first-order functions, currying, lazy evaluation, and serious use of recursive algorithms -- are quite a way beyond the simple mathematical definition of a function, and very different to the traditional, imperative perspective on programming languages.

      Furthermore I fail to see the major diffrence between a functional style head+tail list with a procedural head+next structure. If you have a linked list implemented as a flat array you're apparently not very geared toward making insertions/deletions in the middle a fast case.

      But again, the common usage is very different. In a typical procedural or OO language, you use a linked list as an alternative to an array-like data structure, when you need cheap extension or insertion and/or erasure of elements. It's common to iterate over lists, and you see variations on the theme such as skip lists, but that's about it.

      In a functional language, OTOH, lists are frequently the fundamental data structure, rather than the arrays used by imperative or OO languages. The use of recursive algorithms to manipulate the lists, and pattern matching and empty lists, are paramount, and concepts like tail recursion are really important. The whole perspective, the role the lists play and the way they are constructed and manipulated, is very different. There is, or should be, more to a course in data structures and algorithms than just which structures have the best theoretical bounds on efficiency. That's one consideration, but hardly the only one (or even, up to a point, the most important one) in the real world.

      Finally, I've done coding in a couple of languages and in my experience I've found Java to a pretty good compromise.

      Java is a fine language for things it's good at. I just don't think education is one of those things. :-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    76. Re:why does programming stinks today, an opinion by Anonymous+Brave+Guy · · Score: 1
      Did programming by itself made possible to create binary search, the QR algorithm, or quicksort? Not really, it just provided implementation.

      And would anybody have researched and discovered those algorithms if they weren't going to be used in a programming context? Computer science is all about what you can do with programs, and without programming, computer science has no application. The two are inseparable, unless you're talking specifically about programming meaning strictly "the action of sitting down at a keyboard and typing a program", but I'm assuming the common usage where programming covers the whole process of producing a program.

      There's still no science called "programming science".

      Of course not: computer science is the science of programming. Programming itself is an art. ;-)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    77. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Truly good programmers know many languages, know their advantages and disadvantages, prefer to use the right tool for the job, and feel constrained when they don't get to choose to use that.

      Anyone advocating a single paradigm or language as a one-size-fits-all solution to everything is obviously just biased, but saying "task X would be much more convenient/elegant in language Y" is usually a sign of experience.

      You can do interesting things in any language. Writing the same program in many languages is one of the most illuminating excercises you can do. It also helps you see how well each language was suited for that task - some solutions are bigger, more complicated or uglier than others.

      Being annoyed by having to do things using a tool that forces you to do more work or use an unelegant approach isn't elitism, it's natural.

      In practice, the choice of language also affects the design of actual programs, they might be more flexible if written in languages that made it less cumbersome to implement them that way.

    78. Re:why does programming stinks today, an opinion by Rinikusu · · Score: 1

      Now, explain to me why I would want to pay a highly trained, skilled individual (with a background in SCIENCE) to develop a simple GUI application that any "moron" from ITT can vomit out for less than a tenth of the price? Wouldn't it be more prudent to have those highly trained, skilled individuals doing something more worthwhile with their time? To use a bad car analogy, why would I hire an automotive engineer with a PhD and then stick him down in the maintainence shop changing oil? Frankly, the average programmer does not NEED the theoretical or rigorous training a CS major gets in school. And even if they get that training, there's no guarantee that they still won't suck. I've seen CompSci graduates that still couldn't code their way out of a wet paper sack, and yet I'm supposed to think that just because they graduated with a CompSci degree that they're better than the ITT "moron" that knows his limitations and cranks out simple GUI applications for his company day in and out?

      Yes, "good" programmers are hard to find. They don't grow on trees. But many times, you just need something that works, not something that's mathematically proven to be correct. Who's going to spend the money to have a bunch of PhD's writing VB scripts to hook in with an excel spreadsheet? Because that's what a lot of "paid" programming is today.

      Coding for a large part IS a factory job. And for that reason, there's a large market for things like Java that help "idiot" proof the programming so people don't have to worry about memory leaks, garbage collection, etc etc.

      The biggest problem is, there's a bell curve involved. Even in a company full of Computer Science PhD's, you're going to have a pecking order. For every brilliant programmer you're going to have 10 sub-par ones. (hey, half the population has a below average IQ, right?).

      --
      If you were me, you'd be good lookin'. - six string samurai
    79. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Many people criticize Java for the wrong reasons, but there are plenty of things actually wrong with it, inexcusable given the state of the art at the time.

      In some ways, Java is less safe than C++. Prior to generics, it forced you to use type narrowing casts, which may fail; this is equivalent to dynamic typing, but without the flexibility. C++ has references, which are always non-null (at least unless you do something stupid, but I don't consider it a flaw of a language if it allows you to do stupid things, only if it forces you to do them often). Compared to other languages, the Java type system seems even worse. The design seems to have involved an attitude of "we have classes so we can do everything else half-assed".

      Java threads are expensive and only really support the shared-state model of threading. C/C++ have the same problem, but at least they never had limitations that forced people to use threads for things like handling multiple I/O channels.

      You find the Java syntax clean and clear...how many programming languages do you know? Especially ones with non-C-like syntaxes? Imitating C++ but making the syntax even more verbose seems like one of the worst approaches to choosing the syntax for a language.

      Making things verbose may make some things somewhat clearer and easier for beginners, but unless it provides actual advantages (e.g. Ada is verbose and explicit, but in a useful way), people with experience in other languages are going to hate it.

      Do you like writing lots of lines beginning with "public static const int" rather than using an enumeration, variant type or whatever way is convenient in the language in question (e.g. Lisp symbols, Erlang atoms)?

      Even if some things are now being improved, they should've been done right in the first place. As it is, people are going to have to use the old ways for quite a while for compatibility.

    80. Re:why does programming stinks today, an opinion by Anonymous Coward · · Score: 0

      Your school's computer science curriculum is probably a bit limited, then.

      E.g. implementing sublanguages is a powerful programming technique, used especially by Lisp programmers, but that would be a huge effort in Java, probably not worthwile.

      Just like any form of concurrency other than shared-state.

      Or lazy streams.

      There are many important and powerful programming techniques that Java is really bad at.

    81. Re:why does programming stinks today, an opinion by alex_tibbles · · Score: 1

      The grandparent post mentions coding being a "factory job". The commoditization of coding IS a huge problem.

      It's not commoditization that's the problem, it's the lack of awareness between commodities and non-commodities.

      To some 'decision-makers' and their advisors, all software is monkey work. That is wrong.
      Some people are under the misapprehension that all programming is like mass production factory work.
      Some people even forget that mass production has its overhead - the people who organize the production lines to work so damned fast. These people cost money.

      [Anyway, it could be claimed that the big problem with software is that we don't know how to divide the task into non-commodity (high-paid) and commodity (monkey work) labour. Perhaps this is not possible. (I'm not sure, and certainly am not about to argue it here).]

      But what is clear is that some programming is routine - it has been done before a thousand times, it's been automated ten times (all unsuccessfully) and anyone who knows a bit can do it given a little time.
      These are totally different to the new, ground-breaking, revolutionary uses of software. These take serious skill. The problem is that to outsiders the distinction is not obvious. "Well you automated the printing of invoices, so why don't you automate the tax returns?". Even experts sometimes don't realise that what they want to do is groundbreaking! Sometimes they realise half-way into a project, the whole thing gets redesigned a hundred times and fails. Or they never realise and the thing just grinds itself into the ground.
      Assigning a lowly skilled (or ten) to a difficult project is not going to get good results. It's a mismatch between skill and experience on the one hand, and difficulty on the other.

    82. Re:why does programming stinks today, an opinion by dvdeug · · Score: 1

      I once saw a psychology experiment written in Pascal (why? I don't know!)

      Because the author of the program knew Pascal. And because it wasn't a program that needed to be maintained, or have speed or memory requirements, or diddle with hardware, it just needed to be written, so she used the hammer she had, instead of worrying about whether the problem was more screwlike.

    83. Re:why does programming stinks today, an opinion by z00z · · Score: 1
      In the early days programmers [were] physicists, engineers, and math[e]maticians. Today programmers are just programmers.

      You bring up an interesting point, that, IMHO, is only partly correct. In today's world, most programmers are simply programmers. These are the ones who chose to study computer science or engineering just because it is the current buzz word, and that it was the best way to make a quick buck during the internet boom. Recent polls show that the number of people enrolling in CS is diminishing. Good riddance, I say.

      But, you still have the good programmers, who program because they love it irrespective of their profession. Those are the ones who stand out among the crowd, like Linus Torvalds or Richard Stallman.

      It might seem that back in the old days, programmers were better than today's. The truth is simply that there are many more programmers today that it's getting harder to filter out the good from the bad. Unfortunately.

  8. Full Article by Anonymous Coward · · Score: 0, Informative

    Why software still stinks
    Programming must change -- but how? At a reunion of coding pioneers, answers abound.

    - - - - - - - - - - - -
    By Scott Rosenberg

    March 19, 2004 | In some quarters today, it's still a controversial proposition to argue that computer programming is an art as well as a science. But 20 years ago, when Microsoft Press editor Susan Lammers assembled a collection of interviews with software pioneers into a book titled "Programmers at Work," the idea was downright outlandish. Programming had long been viewed as the domain of corporate engineers and university computer scientists. But in the first flush of the personal computer era, the role of software innovator began to evolve into something more like the grand American tradition of the basement inventor -- with a dollop of the huckster on top and, underneath, a deep foundation of idealism.

    It made sense that the people writing the most important code for the new desktop machines were ragged individualists with eccentric streaks. At a panel on Tuesday (sponsored by the SDWest conference and Dr. Dobb's Journal) that celebrated Lammers' book, seven of the 19 original subjects of "Programmers at Work" lined up on stage to talk about what's changed in software over the past two decades -- and demonstrate that they have lost none of their cantankerous edge.

    In "Programmers at Work," Lammers told the crowd, "I looked at the programmer as an individual on a quest to create something new that would change the world." Certainly, the panel's group lived up to that billing: it included Andy Hertzfeld, who wrote much of the original Macintosh operating system and is now chronicling that saga at Folklore.org; Jef Raskin, who created the original concept for the Macintosh; Charles Simonyi, a Xerox PARC veteran and two-decade Microsoft code guru responsible for much of today's Office suite; Dan Bricklin, co-creator of VisiCalc, the pioneering spreadsheet program; virtual-reality pioneer Jaron Lanier; gaming pioneer Scott Kim; and Robert Carr, father of Ashton-Tate's Framework.

    But for all their considerable achievements, this was not a group content to snooze on a heap of laurels. In fact, though the hour-and-a-half discussion was full of contention, one thing all the participants agreed on was that software today is in dire need of help. It's still too hard: not only for users struggling to make sense of poorly designed interfaces, but for programmers swimming upstream against a current of constraints that numb creativity and drown innovation.

    Today's Daypass sponsored by LowerMyBills.com

    These veterans shared a starting-point assumption that the rest of the world is only slowly beginning to understand: While computer hardware seems to advance according to the exponential upward curve known as Moore's Law (doubling in speed -- or halving in cost -- every year or two), software, when it advances at all, seems to move at a more leisurely linear pace.

    As Lanier said, "Software inefficiency can always outpace Moore's Law. Moore's Law isn't a match for our bad coding."

    The impact of this differential is not simply a matter of which industry gets to collect more profits. It sets a maddening limit on how much good we can expect information technology to achieve. If computers are, as it has often been put, "amplifiers for our brains," then software's limitations cap the volume way too low. Or, in Simonyi's words, "Software as we know it is the bottleneck on the digital horn of plenty."

    Most successful programmers are at heart can-do engineers who are optimistic that every problem has a solution. So it was only natural that, even in this relatively small gathering of software pioneers, there were multiple, and conflicting, ideas about how we should proceed in order to break that bottleneck.

    Simonyi believes the answer is to unshackle the design of software from the details of implementation in code. "There are two meanings to software design," he explained on Tuesday. "One is, desi

  9. So.... by JFMulder · · Score: 2, Interesting

    ... reading this, does this mean that Windows comes from a dumpster??

    Anyway, there's a lot of valid points in that article. Where I work we have the system on peer-review where everytime you submit your branch it has to be approved by someone else. Basically the person just scans through the code, looking for the general idea of how things were implemented.

    1. Re:So.... by Tony-A · · Score: 0, Troll

      ... reading this, does this mean that Windows comes from a dumpster??

      Only the better parts.

    2. Re:So.... by stephanruby · · Score: 1
      "Basically the person just scans through the code, looking for the general idea of how things were implemented. "

      Hopefully, your colleague or your management makes you explain your code/design as well. Scanning someone else's code is tedious work and after a while it's too easy to scan without paying too much attention.

    3. Re:So.... by Anonymous Coward · · Score: 0

      That would explain the smell.

  10. Re:Copyright by CeleronXL · · Score: 4, Informative

    In general I'd have to agree, but in this case seeing as Salon was simply trying to get money by having one of their own staffers(?) submit the article here, I think it would be well deserved. ;)

  11. Programming Skills by Anonymous Coward · · Score: 3, Interesting

    It's such a simple concept. The more of anything we have, the more the mediocre stands out. With millions of writers, we get self help books, assorted garbage, and several really excellent works.

    Programming has an artisitic side, the creativity, vision, and insanity required to apply oneself to a project is much like the authoring of a book. Many have the skills, know the principles, but even then, few have the internal extra to create.

    I may know language and syntax, but I'm nowhere near the league of Shakespear, Tolkien, Asimov, or Clancey. Fortunately for me, they are nowhere near my league when it comes to putting code together.

    We have millions of coders - 60 percent will have average skills, 20 percent will be below average (or plain suck), and 20 percent will be above average, including that rare 2 percent of the absolutely insane, don't let them out on weekends, make sure they get fed, check they haven't peed themselves brand of genius.

    1. Re:Programming Skills by ArbitraryConstant · · Score: 2, Insightful

      My employer has a pretty sweet racket. They keep a few employees that are still in university so they can snap up bright young people without having to sift through hundreds of idiots.

      In other news, this is the inaugural post from my new account, created so no one at my office knows I'm talking about them.

      --
      I rarely criticize things I don't care about.
    2. Re:Programming Skills by Paleomacus · · Score: 2, Insightful

      My company does this too. I'm one of those in university employees you speak of.

      It is great to experience both sides of the fence simultaneously. Every week I get a good helping of theory and a huge truckload of the real world application (or tossing the theory out the window,whichever the case may be).

      I enjoy programming as long as I'm not doing something brain-dead factory work like building a new form/ui for one of our web apps.

    3. Re:Programming Skills by ArbitraryConstant · · Score: 1

      Absoloutely. The experience is very valuable, and the standard of graduates has dropped a lot ever since the dot-com boom. One needs some real world experience to stand out from the crowd.

      And the work is easier than retail crap for vastly greater amounts of money. That's nice too.

      Your UID number is funny.

      --
      I rarely criticize things I don't care about.
    4. Re:Programming Skills by Anonymous Coward · · Score: 0

      "20 percent will be below average"

      50% will be below average.

    5. Re:Programming Skills by ClosedSource · · Score: 1

      It's great. We don't have any standard (or data for that matter) for measuring coding skills but that doesn't stop anyone from giving us the "statistics".

      My experience is that those rare insane programmers are great for writing last minute demo code for a show, but you wouldn't want to trust them with any mission critical code.

  12. my threads keep dying, y0! by Anonymous Coward · · Score: 1, Funny

    I'm writting a Perl program in windoze. Using Perl cause that at least makes the job bearable (fuck Java and the assholes who invented it). But since this is 'doze, i gotta use mofukin threads instead of fork! What a fuckin sham. Anyway, I'm asking alll u Perl elite muthafuckaz out there how can a brotha tell if his damn modules are thread-safe or not? And don't tell me to read the muthafukin manual, cause it only sez that if the module doesn't say "y0 i do threads" then it's not safe. WTF? That tells me jack shit is what. It doesn't tell me how to really find out WTF is going on behind the scenes. Someone's gotta know the dealie, y0!

    1. Re:my threads keep dying, y0! by Anonymous Coward · · Score: 0

      > my threads keep dying, y0!

      Just follow their lead...

    2. Re:my threads keep dying, y0! by Anonymous Coward · · Score: 0

      wassup wassup! some damn bitchy bitch tryin to get hostile with me? betta watch y0 step fewl, or i'll pop a muthafukin regex in yo ass!

    3. Re:my threads keep dying, y0! by Anonymous Coward · · Score: 0

      Shut up u e-hilter out for a cyberlynching why u dissin a brotha for mad an african can do ur job better than an aryan?

  13. Re:Copyright by PktLoss · · Score: 2, Insightful

    The article is of obvious interest to a large subset of the Slashdot community, and the editors made the choice to post it here. If he/she hadn't posted it, someone else would have, so I don't see how who made the initial post is relevent.

  14. MODS on PCP by Anonymous Coward · · Score: 0

    That is very damn much ON TOPIC. Fuckwit.

  15. copyright and stealing by bug1 · · Score: 1, Insightful

    courtesy of wikipedia,

    "In the common law theft is usually defined as the unauthorised taking or use of someone else's property with the intent to deprive the owner or the person with rightful possession of that property or its use."

    By posting the artile here, we arent depriving the copyright owner of its possession or use.

    If i make a noise am i stealing someones silence ?

    Copyright infringment isnt stealing, its copyright infringment.

    1. Re:copyright and stealing by PktLoss · · Score: 2, Insightful

      We are robbing them of its purpose, to generate revenue via ads, day passes or subscriptions.

    2. Re:copyright and stealing by bug1 · · Score: 2, Insightful

      Its purpose remains the same wether its succesfull or not.

      Copyright infrement doesnt change the intent of the copyright owner.

    3. Re:copyright and stealing by Anonymous Coward · · Score: 0
      Robbing of a purpose? Interesting... Would curing cancer be theft? You'd rob all those oncologists of purpose. You'd be robbing them of a source of income...

      No... that may be a opetically valid way to use "robbing" but it isn't reaonable when it comes to the real world.

    4. Re:copyright and stealing by Anonymous Coward · · Score: 0

      are we stealing? hell no! THEY are stealing my time and bandwidth. banner and google ads would be fair.

      i see it as "freeing" the information. you know, like most of the internet works.

    5. Re:copyright and stealing by Anonymous Coward · · Score: 0

      No they aren't. Nobody is forcing you to load their website, ass.

    6. Re:copyright and stealing by shepd · · Score: 1

      >Twisting meaning
      >and context to justify breaking the spirit of a law while supposedly
      >not breaking the letter of the law makes you look stupid and foolish.

      The law says "copyright infringement". NOT A SINGLE WORD OF COPYRIGHT LAW INCLUDES "THEFT" or "STEALING" . Don't believe me? Here it is. Use the search button and enjoy. The only instance that comes close is this single following one, and, guess what? It's used just like it is in the dictionary::

      (c) The right of reproduction under this section applies to three copies or phonorecords of a published work duplicated solely for the purpose of replacement of a copy or phonorecord that is damaged, deteriorating, lost, or stolen, or if the existing format in which the work is stored has become obsolete, if -- ...

      By putting words into the mouths of lawmakers, you're pretending you're the supreme court. And if you're not, you make yourself look stupid, foolish, and probably leave yourself open to libel suits.

      It's like saying I called you a "moron", despite the fact I haven't said that at all (read closely). You can't ASS-U-ME things. It's wrong, pathetic, and doesn't stand up in the court, and it doesn't stand up to my "truth test".

      Stop acting like a spin-artist and read the damn law before you sponge off of the BSA's rhetoric.

      The facts: The law isn't on your side on this; nor is the dictionary. Even English teachers aren't on your side. WHO IS?

      --
      If you could be told what you can see or read, then it follows that you could be told what to say or think - BoC
    7. Re:copyright and stealing by mar1boro · · Score: 1

      I have deleted the longish reasoned reply I was about to make.
      I'll keep this short. One observation and one assertion.

      You quote the very section of copyright law that would allow you to
      make three personal copies of an article you had compensated the
      copyright holder for. Just in-case you don't realize this, that
      quote is not very supportive of your notion that re-printing a copyrighted
      article in a public forum is ok to do.

      I expect to be compensated for my efforts. You expect to consume the
      efforts of others as though they were your servants.

      Sic Semper Tyrannis

      --
      -- "It was as if the paint factories had decided to deal direct with the art galleries." - Thursday Next
    8. Re:copyright and stealing by bug1 · · Score: 1

      Nice troll, newbie.

      The point im trying to make is that copyright infringment is NOT theft, its something different.

      What point are you trying to make ?

      Take you and your multi-national media corporatation inspired propoaganda elsewhere, or open your eyes.

    9. Re:copyright and stealing by bug1 · · Score: 1

      "that quote is not very supportive of your notion that re-printing a copyrighted article in a public forum is ok to do"

      Where did he specify that reprinting copyrighted article in a public form is ok to do ?

      It may or may not be ok to doso, depends on what permisions if any the license grants.

      Expect whatever you want, demand nothing more than your entilment.

    10. Re:copyright and stealing by Anonymous Coward · · Score: 0

      And rightfully so. That is a stinking business model.

    11. Re:copyright and stealing by mar1boro · · Score: 1

      Newbie. Thats a good one. Why do you resort to a personal attack?
      I understand your point, yet you continue to ignore mine.
      I clearly stated that I understood infringement, to be infringement not theft.
      I also explained how infringement can be, and often is, tantamount to theft
      because you are depriving someone else of the fruit of their labors.
      Again and again on Slashdot, people try to make reasoned replys on
      on this subject, only to be modded down as trolls or flamebaiters and
      insulted as if they were arguing with children on the playground.

      You tout freedom as your primary motivation, and demonstrate the opposite.
      "Take you and your multi-national media corporatation inspired
      propoaganda elsewhere...
      My opinion is my own. I am an educated
      and thoughtful person. I have been making a stand against multinationals
      and corrupt law longer than a good deal of slashdotters have been
      alive. Am I seeking some sort of "cred?" No. This is an anonymous
      forum. A forum where debate has died, and where people claiming to
      espouse intellectual freedom shout down anyone who counters them. Very free,
      that.

      Mod me down just like last time. Go ahead. It matters so little in
      the real world.

      Oh, before I leave; "Nice troll, newbie." *sigh* What is that?
      I suppose you think that an opinion you disagree with is a troll.
      Well, not being big into the whole moral relativism scene,
      let me say this; You are wrong.

      --
      -- "It was as if the paint factories had decided to deal direct with the art galleries." - Thursday Next
    12. Re:copyright and stealing by mar1boro · · Score: 1
      Where did he specify that reprinting copyrighted article in a public form is ok to do ?
      The whole bloody thread is about the Salon article! Are you trying to say
      we have shifted context? People wanted to reprint the article here.
      An argument concerning the legality/morality of this act began.
      The article is _copyrighted_ and they did not want to pay or view a 20 second
      ad to be able to view it. Simple.

      Of course, I did not toe the party line so I was modded down and
      called names. Just another day of "intellectual freedom" at Slashdot.
      --
      -- "It was as if the paint factories had decided to deal direct with the art galleries." - Thursday Next
    13. Re:copyright and stealing by shepd · · Score: 1

      You quote the very section of copyright law that would allow you to
      make three personal copies of an article you had compensated the
      copyright holder for. Just in-case you don't realize this, that
      quote is not very supportive of your notion that re-printing a copyrighted
      article in a public forum is ok to do.


      There's your problem! You are equating using english properly with supporting copyright infringement. Well, I shouldn't have to go any further with this (but will, just to be sure); I think it's pretty obvious, even to you, now, where your error is.

      Just because I don't think it's the crime of stealing doesn't cause it to necessarialy follow that I think it's right or wrong. In the same way I don't think murder is "stealing" a life, I still believe a murderer is in the wrong. And, if we were to accept your supposition, backing up a game cartridge to use in an emulator would be stealing (it *is* against copyright law), but not morally wrong.

      I hope that helps clear this debate up for you.

      I expect to be compensated for my efforts. You expect to consume the
      efforts of others as though they were your servants.


      Again, I must suggest you don't put words into the mouths of others. I invite you to re-read what I have said in the previous comment, and, if you still feel the way you do, I ask that you explain what led you to come to that conclusion.

      I also suggest you may wish to read the following debating fallacies; the crux of your argument rests on them, and it's not good (IMHO, of course).

      --
      If you could be told what you can see or read, then it follows that you could be told what to say or think - BoC
    14. Re:copyright and stealing by Anonymous Coward · · Score: 0

      "The point im trying to make is that copyright infringment is NOT theft, its something different"

      You are absolutely right about this. Unfortunately for you the results are still the same.

      Copyright infringment lowers the value of the original copyrighted work by lowering the number of people that find the copyrighted work valuable in the first place.

      Why pay $2 for that Salon article when I can read it on Slashdot for free thanks to the copyright violations of an anonymous coward?

      Nowadays, I wouldn't even bother getting a subscription. I know anything thats worth reading on that site is gonna get cut and pasted into a slashdot article... The less subscriptions they have, the less money they have. They won't be able to publish as many good stories with less money.

      Do you see how copyright violations de-value the Salon website? Thats kind of the POINT of intellectual property laws and copyright protection; to protect the integrity of the content. If people don't pay for it, the content sucks.

  16. Why programming stinks in general: by BeerSlurpy · · Score: 5, Insightful

    It is entirely possible to survive in many companies as a bad programmer who nonetheless manages to be productive and produce seemingly non-buggy code. They may even appear to be especially hardworking and motivated because of the poor design that they have to spend extra time working around as they add features.

    The forces that allow this phenomenon to self-perpetuate are:
    =Lack of people who know how to manage engineers properly, know how to recognize good ones and bad ones and how to motivate the ones you have to be productive.
    =Lack of good project management skills that inevitably leads to crunched schedules and poor quality code, also lack of perception on the part of management as to why software is having problems with performance, bugs or schedule to complete
    =Lack of desire to retain good engineers or cultivate improvement in the junior ones
    =Lack of communication between engineering and whomever is giving them work, especially regarding desired features and schedule
    =Lack of quality control, lack of oversight, lack of checkpoints in project progress

    It doesnt help that the concept of "good engineering" is so hard to measure- a few things are "obviously bad" but most things are not. Even if someone is being completely wrong headed about one particular concept, it is entirely possible that they are exceptionally strong in many other areas within that field. It eventually boils down to "the proof being in the pudding" with the pudding being exceptionally complex to make and subject to the whims of the royal pudding tasters when done.

    1. Re:Why programming stinks in general: by p3d0 · · Score: 1
      You've got it, exactly. Basically, customers don't demand quality from their software, and the software industry is happy not to oblige.

      Incidentally, the expression goes "the proof of the pudding is in the eating".

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  17. Re:Article text, minus links by Anonymous Coward · · Score: 0

    "Still, that picture of Bill Gates dumpster-diving for operating-system code was hard to shake."

    Process becomes product???

    \ /
    L

  18. Soon will be gone forever the glory days of old by Illserve · · Score: 4, Insightful

    For programming to get "good" it's going to have to get unfun. No more will long haired super cool geniuses plug away for hours on end.

    It'll have to be a managed engineering process with all the fun and excitement of a CPA convention.

    1. Re:Soon will be gone forever the glory days of old by alienmole · · Score: 4, Insightful
      For programming to get "good" it's going to have to get unfun. No more will long haired super cool geniuses plug away for hours on end.

      It'll have to be a managed engineering process with all the fun and excitement of a CPA convention.

      This only works when no innovation is necessary. You can't CPA-ify innovation (at least, no-one has ever succeeded at that). That's why big companies have to buy small companies, and why big companies run research departments for the long-haired super cool geniuses to play.
    2. Re:Soon will be gone forever the glory days of old by tiger_omega · · Score: 1

      A real problem comes when the manager in charge has blagged his way into the position and not got there by excelling in software engineering. Unfortunately most managers that I have encountered belonging to the latter.

      Also I have been unfortunate enough to be under such a manager. Basically he tried to micro manage everything we did, did not listen to any of the engineers on his team, told lies to the upper management about our work and shat on us when he got any pressure from above.

      Under his "managed engineering process" the quality and amount of work took a huge nose dive.

    3. Re:Soon will be gone forever the glory days of old by Anonymous Coward · · Score: 1, Interesting

      Not so! In over 20 years of working with software on everything from real-time process controllers to top-of-the-line IBM mainframes, one thing I've noticed over and over again is that the worst-quality software comes from "business-like" projects and the best - meaning cleanest, fastest, most reliable and most fun to use is done by the people who had fun doing it (generally as revealed by things like Douglas Adams quotes in the documentation and source code). It's even true of major IBM program products.

      OTOH, the OTHER thing I've noticed is that the more a software product costs, the more likely it will be cranky, unreliable, and a bitch to use.

    4. Re:Soon will be gone forever the glory days of old by p3d0 · · Score: 1
      I disagree. There will still be long-haired super cool geniuses. It's just that they will have to be geniuses at code quality, not quantity. They will be the ones with a sixth sense that tells them "if you write your code this way, even if it's correct now, it will cause problems later". They'll be the ones that know how to recognize the significance of each bug, and not just fix it, but prevent that entire class of bugs from ever happening again.

      These kinds of skills are not left-brain logical skills. They require an intuitive sense of human psychology in order to know how future programmers will interact with the code. I think this is (currently) a rare skill indeed. Once customers start demanding quality from their software, this skill will be in demand.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
  19. It's Gordon Moore's Fault by G4from128k · · Score: 5, Insightful

    Moore's Law is one reason why software still stinks. Instead of perfecting systems within the confines of a limited amount of resources, its too easy to just assume more MHz, MB, amd Mbps.

    With exponentially increasing resources, nothing ever stabilizes and everyone knows it. If people design software with the assumption that it will be totally obsolete and replaced in 18 months, they create software that is so badly designed that it must be replaced in 18 months.

    Until hardware performance plateaus and people get off the upgrade-go-round, programming will be sloppy and ugly.

    --
    Two wrongs don't make a right, but three lefts do.
    1. Re:It's Gordon Moore's Fault by miu · · Score: 2, Interesting
      I'm gonna have to disagree with the notion that lack of scarcity leads to bad design.

      I think more often that low level optimization often locks us into a bad design, look at the Mac System software version 9 and lower or Windows before XP for an extreme example of this. Locks and crashes caused by apps were common because the task scheduler and memory model were created with scarcity in mind - developers at Apple and MS knew better ways to do things, but were locked in by those descisions made based on earlier hardware capabilities.

      --

      [Set Cain on fire and steal his lute.]
    2. Re:It's Gordon Moore's Fault by Dixie_Flatline · · Score: 2, Interesting

      I half agree. The complete lack of regard that most programmers have for the amount of system resources that they have is in most cases, entirely tragic. There are a lot of programs that could have a smaller memory footprint or run much faster if any time was taken to make these things fundamental to the design.

      That said, I've never really heard anything good about the code that developers have to write for systems like the PS2 that simultaneously have a wealth and a lack of resources. The PS2 has a lot of processors to work with, and that's great! Well, it's great until you realize that the abundance of processors just makes things really hard to synchronise, and you're doing all sorts of hacks to make things work. On the other hand, the PS2 barely has any memory to work with at all, and that's ALSO problematic, since you're always cutting corners, and getting data off the disc in a timely fashion is a pain in the ass. (The PS2 developers that I know have all had to write their own memory managers just to make things even pretend like they're working.) Both those things contribute needlessly to high complexity. Managing complexity well is the TRUE mark of a good programmer, but nobody wants to deal with more than is absolutely necessary.

      By comparison, both the XBox and GameCube are purportedly easier to program. Both of them have hard and fast limits on memory and CPU speed, but both of them provide enough of each to make managing the complexity easier. Programmers still have to be careful with their resources, but they don't have to resort to as many dirty tricks to get everything to work.

      So, just because a system has limited resources doesn't mean that the code coming out the other end is going to be clean and the programming is going to suck any less. You just end up with a different kind of sucky programming.

    3. Re:It's Gordon Moore's Fault by _|()|\| · · Score: 1
      Moore's Law is one reason why software still stinks. ... If people design software with the assumption that it will be totally obsolete and replaced in 18 months, they create software that is so badly designed that it must be replaced in 18 months.

      Software is obsoleted by a relative lack of features, not by a doubling of processor speed. Moore's law increases programmer productivity by making it feasible to use higher level languages and tools. Software really would stink if computers never got faster, because time spent optimizing would take away from time spent fixing bugs and adding features.

    4. Re:It's Gordon Moore's Fault by k_head · · Score: 0, Troll

      Programming sucks because languages suck. Programs suck because languages suck.

      every programmer has their own toolkit. Code that they wrote themselves to accomplish routine tasks. Every time they learn a new language the first thing they do is to translate their library.

      What a collasal waste of time and effort. The only real exception to that rule are PERL programmers who have a wonderful tool like CPAN. All perl programmers know to look there first to see if somebody else has done it before.

      Every language needs a CPAN.

      --
      The best way to support the US war effort is to continue buying American products.
    5. Re:It's Gordon Moore's Fault by Brandybuck · · Score: 1

      Locks and crashes caused by apps were common because the task scheduler and memory model were created with scarcity in mind

      Only to a small extent. The major reasons for the ubiquitousness of crashes in these systems was pervasive backwards compatibility, and to a lesser extend, the market pressure to release a product before it's ready.

      --
      Don't blame me, I didn't vote for either of them!
    6. Re:It's Gordon Moore's Fault by dvdeug · · Score: 1

      Instead of perfecting systems within the confines of a limited amount of resources,

      If you're working with a system that is fast enough and has enough memory to handle every problem you through at, you write code like

      for I in Board_Rows'Range do
      Row (I) := foo;
      end loop;

      for I in Board_Column'Range do
      Column (I) := bar;
      end loop;

      But if you need that extra ten percent, you write

      for I in 1 .. 8 do
      Row (I) := foo;
      Column (I) := bar;
      end loop;

      It becomes more complex to simply reason about it; the first one covers every possible row and column, obviously. The second may or may not. It certainly isn't better code, though it may run faster.

    7. Re:It's Gordon Moore's Fault by Anonymous Coward · · Score: 0
      for I in Board_Column'Range do
      Column (I) := bar;
      end loop;
      What language is that? Or is it some sort of pseudo-code?
    8. Re:It's Gordon Moore's Fault by cscalfani · · Score: 1

      I disagree.

      The problem is that Moore's Law hasn't gone through enough iterations yet.

      If you look at how the Universe solves problems, it does it by killing the problem with numbers.

      At the risk of producing fodder for subsequent joke posts, take the problem of impregnation:

      If a programmer where to solve the problem of impregnating a woman, he would build and super smart egg-seeking sperm with AI for recognizing an egg. The shell of this uber-sperm would be impervious to the acids in a woman's body and it would be turbo charged to get to its destination in a matter of milliseconds.

      But how does the universe solve this problem. It kills it with numbers. To impregnate a woman takes millions and millions of stupid little sperm each swimming aimlessly. They have zero intelligence. They simply swim. And as unlikely of a solution as this may sound, it clearly works.

      Programming in its essence is simply solving problems. We need to learn more from the universe. We need to have thousands to millions of really simple processors all working on very, very simple (read provable) algorithms to solve problems. We need memory at the PENTA level. We need to "grow" solutions via Genetic Engineering practices of the survival of the fittest (in business this might be the fastest solutions, or least expensive).

      But what we have is MEGABYTES of data and a single really, really smart CPU. Our programs have at most half a dozen threads running instead of millions. Our systems are so complex that no one person can understand them. In nature, this is not a problem since the mechanism for maintenance and upgrades is automated.

      And to build complex systems, we need to understand emergent behaviors. This fascinating subject has no discovered laws that we can apply to complex programming systems yet. Then there is GP (Genetic Programming). Another subject that is not studied enough. Emergent behaviors and GP are not the full solution but contain small gems of the solution.

      We should learn from nature, the most sophisticated problem solving machine that we have at our disposal. From this knowledge, we can build systems that will build systems that will build systems... that will solve problems.

    9. Re:It's Gordon Moore's Fault by Rich0 · · Score: 1

      Hmm - sounds like a great algorithm for finding Bin Laden...

      Send 500 million drunk GI's into the desert of afganistan with no provisions and a gun with one bullet with a picture of the guy. Hope that one gets lucky...

      In all seriousness though you have a good point - for problems which can be parallelized.

    10. Re:It's Gordon Moore's Fault by dvdeug · · Score: 1

      If that last "do" were changed to loop, it would be valid Ada.

  20. Close Enough by Anonymous Coward · · Score: 0

    I think what they MEANT to say is "Why Programmers Still Stink"

  21. Physical vs Digital Creation... by gilmet · · Score: 4, Insightful

    The two are remarkably similar. As time goes on, analagous roles to those found in the production of physical machines/structures (such as concept artists, architects, engineers, construction workers) will be defined for digital creation. Actually, this has already happened. Perhaps what's lagging behind is the partitioning of education that leads to these professions?

    --

    Every time you read this, I am going against my principles.
  22. Programming as a ends in itself is factory work by xtal · · Score: 4, Insightful

    I agree with you, but only partly. Another problem is that some people are interested in programming applications as a ends in itself - e.g. their whole life revolves around implementing solutions to other people's problems. The guy from cox probably couldn't care less about Knuth - it's just what he's being told to do. Perhaps this isn't so much a problem as it is a side-effect of the need for programming services.

    That's because business has a need to get their problems solved, and finds the most effective tool to do it - in this case, generic problem solvers or programmers. This is work that is easily outsourced.

    Back in the day, the guy programming was solving problems to make -his- life easier. It's not a stark distinction, but one that needs to be made. My formal training is as an EE, I I took MANY more advanced mathematics courses than the CS people at least at the undergraduate level. We did a grand total of three programming courses, all of them offered by the CS faculty, and when I was there, we were taught Modula-2. It's since moved to Java. They don't start out teaching the virtual machine or bytecode, either. Pointer? Eh?

    Anyway, back to my point - I used Matlab, C, Assembly, you name it in my digital systems courses. We were not taught those things; we were expected to know them or learn them on our own to solve the problem at hand.

    Using a calculator to solve a problem and making the calculator are different things.

    --
    ..don't panic
  23. Building code from specification by JordanH · · Score: 5, Insightful
    From the article:
    Simonyi believes the answer is to unshackle the design of software from the details of implementation in code. "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer."

    Giving the former group tools to shape software will transform the landscape, according to Simonyi. Otherwise, you're stuck in the unsatisfactory present, where the people who know the most about what the software is supposed to accomplish can't directly shape the software itself: All they can do is "make a humble request to the programmer." Simonyi left Microsoft in 2002 to start a new company, Intentional Software, aimed at turning this vision into something concrete.

    It's difficult to believe that Simonyi could be ignorant of the many many years of development of CASE tools and AI projects that have promised to build software systems from specifications.

    In 1980, a Professor told a lecture hall of Sophomore Computer Science students, myself included, that almost none of them would have jobs in programming, because in just a few years we would have AI systems that would build software systems from specifications that subject specialists could input.

    I don't think we are even a little bit closer to that dream today than we were 24 years ago.

    Maybe I'm confusing things here, though. Specifications aren't exactly the same as design. I know that I've sat through some CASE tool presentations where they implied that the work was all done when the design was done, but they were doing some pretty fast hand waving. I believe that those tools did not live up to the promises of their marketing.

    Am I off-base here? Has Simonyi cracked this problem with something entirely new?

    1. Re:Building code from specification by gcaseye6677 · · Score: 3, Insightful

      Anybody remember parameterized programming about 15 years ago that was supposed to replace the need for programmers? Gotta love how that worked out.

    2. Re:Building code from specification by timeOday · · Score: 1
      Am I off-base here? Has Simonyi cracked this problem with something entirely new?
      No, of course he hasn't. This is just a whinging session. Some people have some fantasies and every once in a while they like to complain about how reality doesn't live up to their fantasies. Like when people say, "AI is a failure" (because it hasn't lived up to the baseless expectations we once had).
    3. Re:Building code from specification by primus_sucks · · Score: 1

      Has Simonyi cracked this problem with something entirely new?

      Well based on his track record of writing the core Windows code and inventing some fucked up, unreadable way of naming variables, I'd say no.

    4. Re: Building code from specification by Black+Parrot · · Score: 3, Interesting


      > I don't think we are even a little bit closer to that dream today than we were 24 years ago.

      The problem, IMO, is that providing a specification that is detailed enough and correct enough to generate a correct program from is just as hard as writing the correct program in the first place.

      OK, maybe only as hard as writing it in a slightly higher-level language, but if so, just huse the HLL.

      --
      Sheesh, evil *and* a jerk. -- Jade
    5. Re:Building code from specification by Anonymous Coward · · Score: 0

      Thanks for the info, I just had a resume from a Sophomore CS student that looked good, but now I'll just throw it in the recycle bin and save an interview.

    6. Re: Building code from specification by Stinking+Pig · · Score: 1

      Exactly. Maybe it's just that I'm a bad coder, but the devil is in the details. While fleshing out the details of HOW it's going to do WHAT I want rarely changes the high level spec, it frequently does lead to redesign of the low-level module-type stuff.

      gather data
      validate data
      notify user
      preprocess data
      and then a miracle happens
      present data

      --
      "Nothing was broken, and it's been fixed." -- Jon Carroll
    7. Re:Building code from specification by k_head · · Score: 1

      He is not thinking about the problem the same way that you are.

      What he is talking about is your regular business guy being able to write business rules himself instead of asking some programmer to code it for him.

      My guess is that he is looking at how the naked objects people are solving problems and then extending it somehow, perhaps with a scripting language perhaps with a gui thingie.

      What he does not realize however is that the business people don't even know the rules they want nor do they have the ability to articulate what their needs are. Most also don't want to spend even one minute writing a request for change so they are certainly not going to spend an hour wrangling with some sort of a rule engine.

      --
      The best way to support the US war effort is to continue buying American products.
    8. Re:Building code from specification by bobbozzo · · Score: 1
      There's obviously a conspiracy by the computer-programming industry to ensure job security.

      :p

      --
      Nothing to see here; Move along.
    9. Re:Building code from specification by jhoger · · Score: 1

      For the historically challenged this was called "COBOL."

      It deserved its fate. Unfortunately there still seem to be a few remnants of it around... and I doubt any of it was written by the PHBs it was intended for.

    10. Re:Building code from specification by Brandybuck · · Score: 1

      I don't think we are even a little bit closer to that dream today than we were 24 years ago.

      The attitude of that professor is still with us as well. A couple of years ago I attended an overview session on Syngo (Siemen's medical software framework). According to the presenter, programmers were obsolete, because all you needed was to write a set of configuration files. Only a few weeks ago a CA Unicenter (systems management) salesman said my project didn't need any developers because all you needed to do was to write some templates.

      --
      Don't blame me, I didn't vote for either of them!
    11. Re: Building code from specification by eraserewind · · Score: 1
      The problem, IMO, is that providing a specification that is detailed enough and correct enough to generate a correct program from is just as hard as writing the correct program in the first place.
      Exactly. Job ads for programmers in the future will contain the line "Must have 10+ years experience of MS Visual Specification.NET", and Salon.com will be writing articles about how programming in Specification stinks, and how it's all going to be solved by DoWhatIMeanNotWhatISay++, OpenMindReader or somesuch.
    12. Re:Building code from specification by cmorriss · · Score: 1
      It's difficult to believe that Simonyi could be ignorant of the many many years of development of CASE tools and AI projects that have promised to build software systems from specifications.

      Read the quote from the article again. He never mentions anything about code generation. He's talking about having a clear separation between what a program does and how it does it. Today, specifications are written in narratives and do not fully capture what a program should do. This then leaves the programmer to fill in the gaps. If the SMEs were to create a specification that included the high level operations with clear pre and post conditions, the programmers could focus on implementing the architecture and underlying design that would satisfy the specification.

      --
      10 minutes working on a sig. What a waste.
    13. Re:Building code from specification by JordanH · · Score: 1
      • Read the quote from the article again. He never mentions anything about code generation.
      Well, he does talk about subject experts "shaping" software. But, I think I can see the distinction. He explicitly refers to the role of designer and software engineer.

      If I can infer what he's getting at here, it seems he's suggesting that software engineers will code up generic services and modules to meet generic needs and the designers will fit these together into specific needs. Sounds interesting.

      I was wondering how automatic code generation from specification could handle the thornier problems of containing the resources necessary to solve a specific problem. I think the point is that software engineers will be involved to make sure that a given design is implemented in an efficient manner.

      If I've captured any of this, it does sound new and interesting. I wish him luck.

    14. Re:Building code from specification by k_head · · Score: 1

      THis is an industry which delights in re-inventing old technologies over and over again. It would not surprise me one bit if he re-implement COBOL.

      --
      The best way to support the US war effort is to continue buying American products.
    15. Re: Building code from specification by Pfhreakaz0id · · Score: 1

      Indeed. most people don't understand there processes. Most organizations don't really have a process. I work on a workflow project. After 3 failures, we're the fourth contractor. We spent six months doing interviews and documenting (this is before I got here) writing the spec. Only to change a lot of stuff once we got in beta. One year later, we rewrote the app (and the workflow) entirely.

      I'd say 2/3 of this was due to the users not listing out like 15 "assumptions" to us. Even watching them do there jobs and document it for several weeks (which they all HATED and said wasn't necessary), we still didn't get it right (because all the special cases didn't come up in that small amount of time) and will be changing it again. We have joked that this software ulitmately is meant to replace the physical passing of large envelopes of information from one person/group to another.

      What we should have done is just put RFID tags or something in the packets for a year or so, track them nationwide, put them in a database and ask questions based on that. "So, why did you send packet 2517 back to Bob in Chicago if you said that type XXX always goes straight to the home office? OH, that was an XXX-extra special with GRAVY, so it goes to chicago for gravy certification. I forgot those!"

      My favorite saying in this busines is "we can't automate a process for you until you have a process."

      The cololary to this is: "If you're saying you want to reengineer your process by automating parts of it with software tools, I think you're putting the cart before the horse."

  24. Programming sucks because it's in its infancy by Anonymous Coward · · Score: 2, Insightful

    When we have the power to build highly generalized, evolutionary programs we might start to approach the reliability levels seen in nature. We will look back on all these fancy programming metaphors we have now as barely better than hunter-gathering. We haven't even had our programming agricultural revolution, let alone our industrial one.

  25. these people have had their chance by hak1du · · Score: 3, Interesting

    Sorry, I don't think any of those people have much credibility left: they have been in the business for decades, they have had enormous name recognition. We have seen the kind of software they produce. If they knew how to do better, they have had more opportunities than anybody else to fix it. I think it's time to listen to someone else.

  26. Mechanics and programmers have similar problems. by rice_burners_suck · · Score: 4, Interesting

    I admittedly haven't read the article (yet), but I'd like to include a few reasons of my own that programming stinks. As you might guess, I am a programmer.

    My friends and I compare a lot of computer things to car things. Most likely, we do that because we are enthusiasts of both. Fast cars and fast software are very similar in many respects.

    A little background information on cars is necessary to gain the full effect of my argument about programming. Although the next three paragraphs may seem unnecessary at first glance, I assure you that I am a careful writer and that you should read them.

    Car enthusiasts fall into quite a few categories. For example, people who restore classic Mopar or Chevy cars enjoy making everything look like "mint" condition. Usually, every part of the car is so spotless and beautiful that you could eat off the engine. On the other end of the classic car spectrum, there are those who will tub out the entire car and concentrate only on performance features. These cars may not look like much, but they'll break your neck if you push the gas too hard. And of course, there is an entire spectrum of prefenences between these two ideals.

    In most of these categories, the hard core enthusiasts like to do the ENTIRE job themselves. They won't let anyone else touch their cars. The wanna be's will usually contract out nearly everything, because they want the glamor of showing up at car shows and showing off their machine, but can't hold a screwdriver and don't know the difference between a 6-point wrench and an Allen wrench. And of course, there is an entire spectrum of car knowledge, experience, and do-it-yourself levels in between these two extremes.

    Somewhere in the middle of the two extremes are people like my friends and I. We do a lot of work ourselves, but when it's a complex or high-risk job, or if we don't feel like doing it because it's boring and time consuming, we'll have a professional do it. There are auto mechanics who do pretty much any job. And there are mechanics who specialize in a specific area. For example, I have my radiator guy, my transmission guy, my engine rebuilding guy, my chrome plating guy, my carpet guy, my headliner guy, and the list goes on and on. I use each specific person for the job he excels at because I understand thoroughly what I am about to explain.

    Programmers are a lot like the car enthusiasts that I am and whom I describe above. Some prefer to do EVERYTHING, like that guy who wrote 386BSD and wouldn't insert other peoples' code improvements. (The project got forked and now you've got the *BSDs, and that guy is no longer involved as far as I know.) Some prefer to concentrate only on a specific area of software, such as graphics, numerical algorithms, kernel schedulers, assembly optimizations, databases, text processing, and the list goes on and on forever. Even an area such as graphics can break down into a plethora of categories, such as charting software, user interfaces, etc.

    The biggest reason that software sucks, in my opinion, is the very same reason that the automotive repair industry sucks. I wouldn't be surprised if programmers are just as hated as car mechanics. The programmer's boss is just like the old lady who takes her car to the mechanic. Neither knows anything about the job at hand. The only thing they know is that it costs them big and the results suck.

    For the programmer's boss, the software contains bugs, is difficult and confusing for the customer to use, and takes much too long to develop, so the market window closes, the project goes over budget, and maybe higher management cancels the project altogether.

    For the little old lady, the car broke down. The mechanic wants to fix it properly. But doing so will take weeks (believe me). The symptoms are caused by one or more problems, which require several new parts and quite a lot of labor to repair. The parts may be hard to find. The old ones may need to be rebuilt. And generally, people don't like renting a car for t

  27. Programming Programming by Anonymous Coward · · Score: 0

    If they don't care enough to read their own copy, I sure as hell am not going to read it.

    Jeesh, whatever happened to quality control?

  28. Interstitial Ads v. "have to pay" v. reg-only ... by timothy · · Score: 4, Insightful

    Ads can be (are not always) annoying, in any medium, but they make the content possible.

    Radio ads drone on seemingly forever, but they pay for me to listen to Coast to Coast a.m. once in a while, or NPR (whose ads, in the form of begging, are even worse, but whose content is better). Television ads, on programs not caught to TiVo, can be obnoxious, too.

    The Salon article *can* cost money (that is, you can subscribe to Salon to read it), but you can also watch an ad (or you can click on the ad and carefully look away from it) and then read the article for free. That's what I do. Sites not run as charities need to pay for their content somehow: Even some commercial websites don't make money per se, but are justified by other means (goodwill, information spreading leading to sales, etc), and some are free to read and make money with banners. Salon, unlike some sites, has provided two ways to read their stuff, meaning (I hope) that they stay in business, since I like some of their original stories. Note that reading Salon by the watch-ad/get-daypass means doesn't require you to give them demographic information, answer surveys, surrender your email, click checkboxes to avoid (yeah right!) spam, choose a password, or pay any money.

    Probably someone will come up with a way to block the content of the interstitial Salon ads: the arms race continues. But I prefer their approach to the increasing number of news sources that require registration and / or a paid subscription. The New York Times is annoying but hard to ignore as a news source, enough so that we link to it from Slashdot despite the required registration process; other papers, barring unusal circumstances, we won't link to because it's annoying to keep so many username / password combinations and have to login to read their content.

    And that it's someone from Salon who submitted ... Na und? An editor or writer with a publication or website can submit just like anyone else; I'm glad when they're up-front about it. Would you rather A. Leonard have submitted more sneakily from a throwaway hotmail account? :)

    Cheers,

    timothy

    --
    jrnl: http://tinyurl.com/c2l8yr / foes: http://tinyurl.com/ckjno5
  29. Have you looked at the ads? by Anonymous Coward · · Score: 0

    They are really short and you get a free day pass if you view it... I just leave the ad running and look at someting else until it finishes (except for the click through ones). It really is a nice solution for a site that needs revenue and isn't a major news site like cnn.com.

    1. Re:Have you looked at the ads? by Anonymous Coward · · Score: 0
      Yeah, I watched the ad. It was for some home re-fi deal... Why don't they ever show ads I might actually have a use for like perhaps practical mainstream consumer goods. I'd like to see ads for Burger King or Sony or something else I might actually consider. Refinancing my home is not something I'm going to consider from an unsolicited sales-pitch.

      I'm a red-blooded American consumer here. I have immediate needs, and it's advertisers' responsibility to enlighten me to those needs. When they miss the mark, they've failed in their end of the bargain.

      Yeah, yeah... -1 off topic, but the conversation touched a nerve, and that's just how I feel about it.

      As for the article, it was pretty dry reading. Then again, I'm not a programmer either.

    2. Re:Have you looked at the ads? by Anonymous Coward · · Score: 0
      For years car ads on TV annoyed me. Then one day I needed a new car, and suddenly the car ads became interesting.

      Advertisers aren't mind readers. For any ad campaign, there's probably only a small percentage of people interested. I imagine that perfectly targeted advertising is the holy grail of most advertisers. But, in the meantime, they do what they can. If they keep advertising their refinancing deals, that means they are probably getting the response they want.

    3. Re:Have you looked at the ads? by The+Snowman · · Score: 4, Insightful

      If you think this post had alot of obscenities, you should have seen the email I sent to salon.

      Salon writes good articles for the most part, and they have had rough financial times. If ignoring an "internet commercial" means they get money to keep writing articles such as this one, so be it. I do not like it, but I understand they are just playing the system. I understand economics well enough to know that this is a necessary evil.

      Now, as to your comment, please try to be constructive. I communicate with companies and my Congressmen on a regular basis, both email and snail mail. Some of the issues are very dear to me, such as the letter I wrote to Dell berating them for laying off American call center employees to outsource to India. Not once in my letter did I swear or come across as uneducated, unintelligent, or uncaring. Swearing and other vulgar language does nothing to help your cause. Be constructive. Do not just say "ads suck," provide them with a solution to your perceived problem. I think you will be hard pressed to do this, however. Their solution is very good for their company and not too intrusive to their readers, although it is intrusive.

      --
      24 beers in a case, 24 hours in a day. Coincidence? I think not!
    4. Re:Have you looked at the ads? by arkanes · · Score: 1, Insightful
      Try actually reading what he's pissed off about - the ad he got required his interaction before he could continue.

      You should also remember that this isn't a letter to his congressman or any other such thing, it's a pissed off rant on slashdot, and as such swearing is just as acceptable as it would be if he were blowing off steam in a pub.

    5. Re:Have you looked at the ads? by stephanruby · · Score: 1
      "This ad now requires you to "Select your mortgage rate here." I don't own a home, and I'm not going to click their stupid flash ad just to make their marketing people feel worthwhile.

      The beauty of commercials is that you don't have to watch one. But now some advertiser wants me to play the game he designed. Pretty soon we'll be having to play crossword puzzles with advertising slogans just to read the article."

      I hope someone mods up the parent up. I realize the parent is angry and obscene, but he's also pretty informative.

      Hopefully, Salon people are watching. Accepting to watch a "brief ad" is one thing. Being forced to click on a flash animation is another. And being forced to click on a flash animation that's not even relevant to you, that's one more annoyance still. I can understand why the poster is venting.

      The least Salon could do is do like Slashdot and make us chose the kind of advertisements we'd like to watch. People want to watch ads that are relevant to them. It would be in the self-interest of Salon to do this and I'm sure it would take some of the edge off the animosity some of their readers will have toward them.

    6. Re:Have you looked at the ads? by Anonymous Coward · · Score: 0

      No. I'd rather spend a few more minutes finding a link around the ads than watch stupid ads.

      I'm old enough on the net (online since 1988) to remember the time when things on the net worked without ads. They still can - and will - if we boycot and thus kill off all those stupid sites that still haven't given up on that visual spamming.

      If you feel like me, use highly configurable software like The Proxomitron to effectively filter out all ads (they don't even get loaded) and thus ensure both a much more pleasurable surfing experience and that you don't provide any income to the ad-filled sites from your visit. Hopefully they'll learn - or simply die off and let their ad-free competitors take over the market share.

    7. Re:Have you looked at the ads? by sonamchauhan · · Score: 3, Insightful


      > > > If you think this post had alot of obscenities,
      > > > you should have seen the email I sent to salon.

      > > Now, as to your comment, please try to be constructive.

      > Try actually reading what he's pissed off about - the ad
      > he got required his interaction before he could continue.

      So? It's a *Slashdot* slip-up, not a Salon one. If he was angry, he should have berated "timothy" (the Slashdot editor of this story) for wasting people's time pointing to the Salon article without stating it wasn't free (this probably means timothy subscribes to Salon.) And then, maybe, also scold the story submitter (who was quite probably another Salon subscriber.)

      Instead this guy blows up, spews profanities on Slashdot, *and* sends a (much worse) attack letter to ... Salon!?! He is an idiot.

      > ...pissed off rant on slashdot, ...as acceptable as ... in a pub ...
      To be angry on somebody for no reason is not acceptable - anywhere.

    8. Re:Have you looked at the ads? by Random832 · · Score: 1

      And then, maybe, also scold the story submitter
      How does his letter to Salon not accomplish this?

      (who was quite probably another Salon subscriber.)
      Yeah, that's one way of saying it.

      --
      We've secretly replaced Slashdot with new Folgers Crystals - let's see if it notices.
    9. Re:Have you looked at the ads? by stephanruby · · Score: 1
      It's Salon's fault as well.

      They said it's only a brief ad. They don't tell us how long it is. They don't tell us it's a Flash animation that you are required to click on. And they don't tell us that the ad is only for a subset of the population and that we have to lie by clicking on our home's interest rate in order for the ad to progress.

    10. Re:Have you looked at the ads? by sonamchauhan · · Score: 1

      > > And then, maybe, also scold the story submitter
      > How does his letter to Salon not accomplish this?

      If I wanted to say something to you, would I write to an entity you *possibly* are a customer of?

      Would I not rather write to you direct, especially if I had your email address?

    11. Re:Have you looked at the ads? by Random832 · · Score: 1

      > > > And then, maybe, also scold the story submitter
      > > How does his letter to Salon not accomplish this?
      > If I wanted to say something to you, would I write
      > to an entity you *possibly* are a customer of?

      that's not what happened... i think that what the poster did was improper enough to justify the great-grandparent poster writing to the poster's _employer_.

      --
      We've secretly replaced Slashdot with new Folgers Crystals - let's see if it notices.
    12. Re:Have you looked at the ads? by sonamchauhan · · Score: 1

      As I pointed out earlier, the main fault is with Slashdot, only slightly with the submitter (and hence even less with Salon unless you *know* Salon is at fault.)

      So if Salon is in fact Andrew Leonard's employer (and isn't just handling out free emails to its subscribers) then sure, writing a ___polite___ letter to the employer is fine if you wrote to Andrew first he admitted to no wrongdoing.

      However, the guy we are talking off did not do this - he just jumped straight on Salon with filthy language.

    13. Re:Have you looked at the ads? by Random832 · · Score: 1

      but everyone knows slashdot sucks - Salon shouldn't be taking advantage of that... and anyway, had you googled, you'd know that he's a writer for salon with (to date) 171 articles

      --
      We've secretly replaced Slashdot with new Folgers Crystals - let's see if it notices.
  30. What Works by soloport · · Score: 1

    Peer reviews only work when you, the one who authored the code, explains it to a group of peers (even one will do). And a "peer" can be the night janitor. You'll be shocked when you see your own mistakes -- only when you're explaining it to someone new to it.

  31. Kind of disappointed by Comatose51 · · Score: 2, Interesting

    The article doesn't provide much of the actual discussions so it's really hard for me to decide if I agree with the experts. From the article, it seems to imply that there are problems with software. That much is nothing new. Software is fragile and implemenation is difficult. However, the article doesn't really seem to get at the reason, other than to say we lack the necessary tools. So, while I agree with that much, it's nothing shocking or particularly insightful. It's disappointingly shallow for a Salon article.

    The only real shocking part to me was the Bill Gates quote. He's an Open-Source man at heart or just a hypocrite. :P

    --
    EvilCON - Made Famous by /.
    1. Re:Kind of disappointed by srichand · · Score: 1

      Correct me if i'am wrong, but i believe Bill Gates is the most open man at ms. Its mostly Balmer and his bunch of hoodlums who talk all the rot...

    2. Re:Kind of disappointed by Anonymous Coward · · Score: 0

      Makes me sick when people try to rewrite history and fabricate stuff to fit whatever suits them.

      =P

  32. So how can this be done? by miu · · Score: 3, Insightful
    From the article:
    "Making programming fundamentally better might be the single most important challenge we face -- and the most difficult one." Today's software world is simply too "brittle" -- one tiny error and everything grinds to a halt: "We're constantly teetering on the edge of catastrophe." Nature and biological systems are much more flexible, adaptable and forgiving, and we should look to them for new answers. "The path forward is being biomimetic."
    This is easy to say, but what to do about it? A CPU is controlled by a set of registers and the contents of a stack, even if you virtualize those things (JVM, smalltalk, .NET, ...) and give them access controls you still have a system that is subject to massive failure once a single part of the system falls.

    So for this biomimetic approach to work would require a dramatically different machine architecture from what we have now. Of course this would also require the rewrites of all existing Operating Systems and lots of existing application and library software. So 'emulate biological systems' is a nice easy answer that does not really answer anything in the near term.

    --

    [Set Cain on fire and steal his lute.]
    1. Re:So how can this be done? by politicalman · · Score: 1
      I don't think it can be done or that we would want it.

      The brittle nature of software is exactly where its power comes from.

      One little logical variable stops or starts entire systems (like launching a rocket or stopping a car). People joke about this when they say "If the world were built like software, one woodpecker would destroy civilization".

      Exactly(!) - think of the power that woodpecker would have! Natural/bio systems that are flexible, adaptable and forgiving remove that power. The rocket is ready to go but the system is sure the user couldn't have wanted to launch it on a Monday so (with its capacity for flexibility) it ignores the offending logical variable as it changes from false to true. In the example of using anti-lock brakes - it may decide to skip putting on the brakes because they're a little hot already (at the same time forgiving the user for trying to shorten the life of the brake pads). Something more classic might be the system providing some numerical answer to a division by zero just to avoid an application crash. Have fun with those results.

    2. Re:So how can this be done? by melatonin · · Score: 2, Interesting

      one tiny error and everything grinds to a halt

      This is easy to say, but what to do about it?

      Simple, you don't make programs so stupid. Here's what a program does. "OH SHIT! THAT WASN'T SUPPOSED TO HAPPEN! EXCEPTION! Oh shit, there's no exception handler. CORE DUMP!"

      The problem comes down to 'that wasn't supposed to happen.' It reminds me of my 2nd year CSC course when my prof said "assume all your input is correct." WTF? They never teach you about error handling in university (not in any curriculum that I've seen anyway).

      The problem is that 'errors' aren't talked about much; we just all agree that they're bad and throw an exception (or SIGTERM) when one happens. We're also told to write programs that are correct, and that programs are either correct or not. There's confusion there.

      Programs are either faulty or not, in that they either do what they're told or not. A correct program does what it's expected to do.

      The problem is when you confuse faults with errors. Faults must not happen. Errors are expected to happen! You can't assume that all your input is correct. You can't just bury your head in the sand and throw an 'i/o error' exception.

      You have to keep things simple and design your systems to follow certain rules. In this case, code should do what it was asked to do or not do it. That second option has to be considered as part of the design. You can't design code that will work if everything happens as expected, and will throw some kind of exception (caught by who knows what) if something unexpected happens. If you let everything have a simple chance to succeed or fail, errors can cascade cleanly to some other code that cares to handle it.

      For example, say a library is using some other library to write data. Library #2 tells lib #1 that it can't write the data asked. Lib #1 tells the code that calls it that it can't write a PNG file. The user application tells the user that it can't save the document as PNG. If exceptions were used, it would have to be caught. And by which part of this system? What if one part expects another part to catch the exception?

      The only thing missing in that example is why the failure occurred. In OOP systems it is easy to communicate between components - communication between 'black boxes' is the whole point in OOP. The way I do it is that if an object is unable to perform a requested action it returns a basic 'no' response, and the reason can be queried from that object later (model objects wouldn't have this ability and they shouldn't - but controller objects would).

      Anyway, the point is that 'errors' (which are really just things you didn't plan for but should have) do happen and you have to design your systems for it.

      Here's some food for thought, Objective-C vs. Smalltalk. In Smalltalk, every method returns 'self' (this) as a result unless you explicitly return a different object in the code. This allows you to chain messages (method calls) together,

      mailbox messages lastObject description.

      my Smalltalk's a bit rusty, but mailbox is an object, messages is a method that returns an array object, which responds to the lastObject message. This expression evauluates to the description object for the last email in the mailbox. In Objective-C, you'd write it like this,

      [[[mailbox messages] lastObject] description];

      Which does pretty much the same thing. There's one difference between Smalltalk and Objective-C, which has been debated for some time. Let's say that the messages array had a count of 0. In both Smalltalk and Objective-C code, you'd expect that lastObject return a nil value. The difference between the two languages is their concept of nil. In Smalltalk, nil an another object that raises a DoesNotUnderstand exception to any message that's sent to it. In Objective-C, nil is treated like a black hole, and sending messages to ni

      --
      Moderators should have to take a reading comprehension test.
    3. Re:So how can this be done? by Salamander · · Score: 1
      A CPU is controlled by a set of registers and the contents of a stack, even if you virtualize those things (JVM, smalltalk, .NET, ...) and give them access controls you still have a system that is subject to massive failure once a single part of the system falls.

      Not really. The only potential for system failure should be if the entity - e.g. an OS kernel - controlling and coordinating the others fails. For that very reason, that entity should be as simple and bulletproof as possible, providing nothing but virtualization and communication between the virtualized parts of the system. If any of those other components fails, it should at the worst cause a partial loss of functionality (ideally it should be recoverable) and should not be capable of killing the whole system. That's the basis for microkernel architecture. Microkernels are in disrepute right now, primarily because of performance concerns that some (e.g. Linus Torvalds) have made out to be far worse than they really are. Sure, there were some slow microkernels Back In The Day, but only a fool dismisses an idea based on a flawed implementation and that's what seems to have happened in this case. It's possible to implement a fast microkernel-based system. Put a bunch of them together in a network (microkernels are also more inherently compatible with transparent distribution BTW) and you'd have a system that's much more robust than one based on monolithic kernels. Even if you did lose a little bit of performance in the process, it's always worth remembering that your performance is zero while a critical resource is down. Count transactions per month, not per second.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    4. Re:So how can this be done? by SlashdotStu · · Score: 2, Insightful

      And who says that a program that experiences fundamental errors but limps along anyway is a good thing? Is it going to hose my data?

      I cite the Rule of Repair (Repair what you can -- but when you must fail, fail noisily and as soon as possible.) from "Basics of the Unix Philosophy".

    5. Re:So how can this be done? by miu · · Score: 2, Insightful
      I agree with the philosophical point, the problem is that highly configurable systems are subject to a wide variety of fundamental errors. I've caught flack on several occasions for implementing "early verbose" failure, the powers that be want systems to deal with the error and "figure out what to do". This often results in some pretty heinous code, but the servers must roll.

      So a desire for "self-healing" is motivated more by the bottom line than any sort of engineering principle. (The question of good engineering being a necessity for good business has been fought and lost too many times for me to care any more)

      --

      [Set Cain on fire and steal his lute.]
  33. Shoveling Data by nycsubway · · Score: 4, Interesting

    That sounds like most IT jobs. I've found that IT is different from research and academia. Where I work, at an insurance company, I started referring to what I do as shoveling data. Because my entire job can be summed in one flow chart. Begin, open file, read file, process data, end of file? no. read file. end of file? yes. close file. end of program.

    It's mindless. The problem with programming today is that yes, it has become a commodity. Something that people expect you to be able to sit for 8 hours a day and do continuously, without thinking or having any input of your own whether WHAT your doing is really worth it.

    There is no creativity in the corporate world, I think thats why so many people choose to work on open source software.

    1. Re:Shoveling Data by Anonymous Coward · · Score: 0

      I agree 100% with your post. Just replace 'insurance company' with 'bank' and you have accurately described my current job as well.
      Too bad 1999 is a distant memory - we made exciting new things in those days that actually made a difference. Now the companies just milk the work we all did from 5 years earlier. These comapnies have an uncanny knack for sucking the soul out of a project and turning the interesting into the mundane and boring.

  34. Charles Simonyi? by Anonymous Coward · · Score: 2, Insightful

    Charles Simonyi, former MS Chief Scientist and inventor of the horror that is Hungarian Notation? I guess they picked him as an example.

  35. Programming stinks because programmers stink by Anonymous Coward · · Score: 0, Troll

    Perhaps linear, logical, engineering geek-types are the wrong type of people for the job. We haven't made the computers smart enough so the people with real design skills can use them properly.

  36. Why Programming Still Stinks: by sudohnim · · Score: 0

    Because Programmers don't bathe.

    --
    Its pretty sad when a commercial OS ships a debugger with their system but no compiler.
    1. Re:Why Programming Still Stinks: by sholden · · Score: 1

      Your sig:

      su - -c "while :;do kill -9 $RANDOM; done"

      is silly since $RANDOM will be interpolated by the shell executing the su command, and hence the same process ID will be killed over and over.

      You need to use 's instead of "s, or escape the $.

  37. ragged individualists by Black+Parrot · · Score: 1


    No wonder I was always so square; I spent all my time cultivating an image of rugged individualist.

    Got to change with the times, I suppose.

    --
    Sheesh, evil *and* a jerk. -- Jade
  38. And Here's the Google Cache to the Article by myownkidney · · Score: 0
    1. Re:And Here's the Google Cache to the Article by JPriest · · Score: 5, Informative
      Here is the same link without the annoying highlighted words.
      just remove all+the+search+terms

      The same link here with extra words highlighted.

      --
      Saying Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
    2. Re:And Here's the Google Cache to the Article by Anonymous Coward · · Score: 0

      Free karma point to the person that makes the best sentence with the "These search terms have been highlighted" portion at the top.

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

    "editors made the choice to post it here"
    What're you, new?
    They got paid to post it, or my name isn't Bipperton Fusslebeak.

  40. Simonyi stating the obvious? by sashang · · Score: 4, Interesting

    "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer."
    Funny chap talking about how design and implementation should be separate. Seems a bit ironic considering he was the one who create Word docs where the layout and content are all packed into one file. Most decent solutions separate the layout from the content (eg: Latex, HTML/CSS). If Simoyi was a web programmer he'd be laying out his html with tables.

    1. Re:Simonyi stating the obvious? by dustmite · · Score: 1

      Uh, or perhaps he just learned from his mistake? The person who understands something the best is often the person who has made the mistakes.

  41. Re:Mechanics and programmers have similar problems by starm_ · · Score: 1

    Hehe this would make a good base for a philosophy or sociology paper. Anyone taking a class? you could steel it!

  42. Re:Copyright by Anonymous Coward · · Score: 0

    now i've seen everything

  43. Why this article stinks... by slamb · · Score: 4, Insightful

    The article is crap. A typical snippet:

    "There's this wonderful outpouring of creativity in the open-source world," Lanier said. "So what do they make -- another version of Unix?"

    Jef Raskin jumped in. "And what do they put on top of it? Another Windows!"

    "What are they thinking?" Lanier continued. "Why is the idealism just about how the code is shared -- what about idealism about the code itself?"

    This is similar to many articles before disparaging the WIMP (Windows, Icons, Mouse, Pointer) model. A bunch of "visionaries" who see that we've used this same model for some time and therefore are convinced it is horribly limiting, and that we are using it solely because the people who actually make systems have less imagination than people who write these kinds of articles. [*] They never have any but the most vague suggestions of a better model. They certainly never take the time to explore its limitations longer to ensure it really is workable (much less actually an improvement).

    In fact, this article is so vacuous that I'm not sure what they think stinks about software, much less why. And certainly not how to fix it.

    [*] In fairness, this article mentions people who have done some impressive work in the past (and is thus atypical of the genre). But still, I do not see any suggestions for a fundamentally better model or even any concrete problems with the existing one.

    1. Re:Why this article stinks... by transient · · Score: 1

      I take it you don't know much about Raskin. He has real reasons to criticize "another Windows" as he puts it, reasons that go far beyond "we've used this same model for some time."

      --

      irb(main):001:0>
    2. Re:Why this article stinks... by bcrowell · · Score: 1
      article: Why is the idealism just about how the code is shared -- what about idealism about the code itself?"
      parent: This is similar to many articles before disparaging the WIMP (Windows, Icons, Mouse, Pointer) model.

      It's always fun to see closed-source people criticize open-source software and vice versa. As long as you're speaking in generalities, you can probably support every positive or negative statement using either a closed-source or an open-source example.

      • very innovative: the original MacOS (closed-source); the original World-Wide Web (open-source)
      • not innovative at all, just reimplementing old ideas: Windows; Linux
      • bloated: Word; OpenOffice
      • etc.
    3. Re:Why this article stinks... by Anonymous Coward · · Score: 0

      And these reasons are.....?

    4. Re:Why this article stinks... by slamb · · Score: 1
      I take it you don't know much about Raskin. He has real reasons to criticize "another Windows" as he puts it, reasons that go far beyond "we've used this same model for some time."

      That may be true, but my point stands. The article mentioned that he thinks they're implementing "another Windows" but doesn't answer two immediate questions: (1) why he thinks that is true and (2) why he thinks that is bad. It's poor journalism.

      If you'd care to do what Salon did not, please feel free to post (or link to) a summary of his reasons. I have read a little of his work but not much. (And surely others have seen none at all.) I'm sure people would love to discuss them...

    5. Re:Why this article stinks... by soft_guy · · Score: 1

      You really need to check out Raskin's book "The Humane Interface" and the information on his website. He is working to buld a new paradigm for software interfaces based on information that has been discovered in the field of human factors/human computer interaction since 1984.

      Raskin *is* a visionary (he's the guy who started the Macintosh project at Apple), and does have specific ideas.

      --
      Avoid Missing Ball for High Score
    6. Re:Why this article stinks... by nathanh · · Score: 4, Interesting
      I take it you don't know much about Raskin. He has real reasons to criticize "another Windows" as he puts it, reasons that go far beyond "we've used this same model for some time.

      Ignoring your snide attack on the previous guy's knowledge - do you really think anybody on /. doesn't know who Raskin is? - I agree with the previous guy that it's unfair to blame open-source coders for producing "more of the same". Let's look at the comments:

      "There's this wonderful outpouring of creativity in the open-source world," Lanier said. "So what do they make -- another version of Unix?"

      Jef Raskin jumped in. "And what do they put on top of it? Another Windows!"

      "What are they thinking?" Lanier continued. "Why is the idealism just about how the code is shared -- what about idealism about the code itself?"

      They say that "Windows" (meaning WIMP) on top of "UNIX" is a bad idea. Why? It's exactly what Raskin's former employer is currently doing. And Windows is essentially WIMP on top of VMS. Where is the innovation coming out of the leading two desktop OSs? They too are just rehashed versions of decades old ideas.

      I don't think it's the open-source community's responsibility to be free R&D for the entire computer industry. Isn't it enough that they are producing free software? Do they have to research it as well? What an onerous task! R&D should be in the domain of researchers and academics. It took 40 years for WIMP to progress this far. Does Raskin think open-source can turn that around over night? If so, then he has more unrealistic expectations about open-source than all the /. cheerleaders combined.

      To put it bluntly, I don't think it's fair for Raskin and Lanier to demand such a high standard from the money-poor open-source community when the ultra-rich closed source companies aren't doing any better. Microsoft pumped how many billions into their R&D department and what they did get? A ripoff of J2EE and a ripoff of MacOS X. Apple pumped billions into their own R&D and they've produced Display Postscript... I mean Display PDF... only 20 years after Adobe did it. Colour me unimpressed.

    7. Re:Why this article stinks... by Anonymous Coward · · Score: 0

      Erm.. Jef Ranskin is developing the The Humane Environment (THE). Think MacOsX mated with VIM ...

    8. Re:Why this article stinks... by roskakori · · Score: 1
      A bunch of "visionaries" who see that we've used this same model for some time and therefore are convinced it is horribly limiting[...]. They never have any but the most vague suggestions of a better model. They certainly never take the time to explore its limitations longer to ensure it really is workable (much less actually an improvement).

      i don't know about the others, but at least jef raskin guides some coders into implementing the humane environment (THE). so far, it is an open source pything editor thingy, so it actually has some practical use.

      nevertheless keep the warning from the homepage in mind:

      Important observation: You cannot make an interface better without making it different (that's obvious). If it's a lot better, it will be a lot different. This means that it will feel unfamiliar to anybody familiar with present interfaces. Therefore, it has to be used for a while (after you read the manual) before you unlearn your present habits and can begin to appreciate it. You are in a worse position for learning it than a novice who has only to acquire new habits and has nothing to unlearn!

      personelly, i haven't figured it out, and rarely use python. still i think that it adds a lot of credibility to raskin's claims.

    9. Re:Why this article stinks... by Anonymous Coward · · Score: 0

      do you really think anybody on /. doesn't know who Raskin is?

      Er, are we talking about the same Slashdot here?

    10. Re:Why this article stinks... by Anonymous Coward · · Score: 0

      "They say that "Windows" (meaning WIMP)"

      Uh, no. It's pretty clear that what was meant was MS Windows.

      "Apple pumped billions into their own R&D and they've produced Display Postscript... I mean Display PDF... only 20 years after Adobe did it."

      Actually, Display Postscript was co-developed by NeXT and Adobe. NeXT certainly didn't spend billions on it.

    11. Re:Why this article stinks... by TheInternet · · Score: 1

      Microsoft pumped how many billions into their R&D department and what they did get? A ripoff of J2EE and a ripoff of MacOS X.

      BTW: J2EE is a ripoff of Objective-C and Cocoa (called OpenStep back then).

      - Scott

      --
      Scott Stevenson
      Tree House Ideas
    12. Re:Why this article stinks... by orasio · · Score: 1

      They say that "Windows" (meaning WIMP) on top of "UNIX" is a bad idea. Why? It's exactly what Raskin's former employer is currently doing. (emphasis mine)

      And that's one of the main reasons why it is a former employee. He didn't want a mouse, he wanted a powerful keyboard (maybe by now we cuold have found a better way to use the mouse than to select from menus, which is most efficiently done with a LEAP-enabled keyboard) He had many differences with the MAcintosh project, and just now we are starting to use his better ideas (Incremental search (kind-of-LEAP) is to me the best thing since sliced bread, or bread of any kind, in any case). In his project, he explains his ideas, which he implemented many years ago, but with which we are just starting to catch up.

    13. Re:Why this article stinks... by nathanh · · Score: 1
      And that's one of the main reasons why it is a former employee. He didn't want a mouse, he wanted a powerful keyboard (maybe by now we cuold have found a better way to use the mouse than to select from menus, which is most efficiently done with a LEAP-enabled keyboard)

      On folklore.org, Raskin himself disputes this myth about his preference for keyboards. Andy makes the comment that Raskin opposed the mouse and wanted a LEAP interface. Raskin writes in the comments at the bottom that LEAP didn't even exist back then, and although he did oppose the mouse that was because he wanted some other form of pointing device (eg, light-pen). He vigorously denies that he wanted a keyboard alone.

      Given that I prefer touchscreens instead of mice and trackpads, I have to agree with Raskin. It's better to just point to the screen than to have a seperate device with a "mental link" joining the two.

      Wouldn't it be an interesting world if Raskin had got his way. I know why Apple went with the mouse (cost) but light pens were decades old even when the Mac was being built. Early CGA cards for IBM PCs had light pen inputs. If the Mac used a light pen instead of a mouse it would have been a seamless transition first to magnetic pens, then to touchscreens. The Mac interface would have been fully prepared for the "tablet revolution" (which still hasn't happened). Microsoft wouldn't have released their Mouse+Windows package; they would have released a Pen+Windows package. PenWindows wouldn't have come after the event. Handwriting recognition would have been more advanced than it currently is, purely due to increased interest by hobbyists and professionals in exploiting the pen.

      Mac wasn't the first GUI to market, and they weren't the only pioneers (Amiga came out at roughly the same time which meant they must have been working on their GUI in parallel), but there's no denying that Mac had a huge influence. Microsoft basically copied Mac word for word. Wouldn't it be a strange world if Microsoft had copied a light pen interface instead.

  44. so who's gonna design the new computers for the by Anonymous Coward · · Score: 0

    new designers? eh?
    and for that matter, who can you design something if you don't have a logical, linear thought process?
    intuition? yeah, that'll fly... or rather, i'd rather not fly in an aircraft designed in such a fashion. ;-)

  45. You are an idiot by Anonymous Coward · · Score: 0

    ...and more than that, totally ignorant regarding matters of US Law. Please STFU.

  46. From the soapbox by DaveAtFraud · · Score: 4, Insightful

    I have been working professionally in software development for not quite 24 years with experience in aerospace/defense, established commercial, "dot com", and a post dot-com startup companies plus I dabble in Linux. This still means this is a series of single data points taken in different industries at different times so take what I have to say with a grain of salt.

    The worst programming problem is unrealistic expectations on the part of management. What it really will cost and how long it will take is always too much and too long so budgets and schedules get cut. At least aerospace/defense makes an attempt to figure this out and bid the contract accordingly. The commercial world looks at when the next trade show is or something else equally irrelevant and then says it has to be done by then with the staff that's available. They end up getting what they paid for and blaming the programmers when it crashes (See my sig. Yes, I do software QA). Established commercial companies aren't quite as bad but there is still a tendency for making the sale to somehow trump in the determination of what can be developed with the time and resources available. The resources may be there but there is a tendency to try to produce a baby in one month by getting nine women pregnant and then wondering why there is no baby after the month is up in spite of publishing detailed schedules.

    In contrast, I think one of the primary reasons free/open source software tends to be of significantly higher quality is that these factors don't come into play. A feature or program either is ready or it is not. If it is not, it stays as a development project until it either dies of apathy or enough people are attracted to it to make it into something real. For established projects, you have people like Linus who "own" the project and ensure that contributions only get incorporated if they pass muster.

    I find it amusing that one of the criticisms of FOSS is that the schedules are unpredictable but the reality is that software development schedules ARE somewhat unpredictable* but at least the FOSS development process recognizes this and instead focuses on the quality of the program rather than pretending it doesn't exist and coughing up something that isn't really done based on someone else's absurd schedule.

    * If someone develops the same sort of software over and over again (think IBM) they will eventually gain enough experience to have a reasonable shot at scheduling and resourcing a project correctly. The fewer data points you have, the less likely you are to get it right.

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
  47. Growing up is hard to do. by Anonymous Coward · · Score: 0

    You should be getting an insightful along with the funny. Programming as a field is trying it's utmost to be an engineering field and failing badly. Just imagine if bridges and skyscrapers were built by the same process software was? The first woodpecker would bring civilization down. From the start, the gaining of insight into the problem is a laborous, error prone process. Then there's the misjudging of resources. Followed by the scrambling of an overworked, undereducated workforce (a technological sweatshop). Then there's the final push to get out something that would never pass inspection by an independent agency. There's an overall lack of discipline to the whole process. Oh yes! There are people trying to bring order to this chaos, but who's going to motivate the people running the show to impliment them? At least in engineering people die, and the government finds out what went wrong and issues edicts that foster change. There's no such process in software creation. There's also the issue of inertia. How many times have we heard "this is the way it's always been done"? Or the better way will cost too much (funnily the airlines use the same excuse). No we'll grow up when the pain get's to be unbearable, and everyone's on the same page of desperation.

    And to last the "fun" aspect. Is engineering "fun"?

    1. Re:Growing up is hard to do. by 10am-bedtime · · Score: 1

      engineering w/o management is art, so it is said. art is certainly fun for the artist...

  48. i got it man, i got it! by Anonymous Coward · · Score: 0

    instead of shitty WIMP interface we need to move towards a more personalized interface. imagine: the user can now "raise" his own applications the way he wants. all applications start out with the same code and state (virtual DNA) and over the course of time the user can gently steer his application in the right direction. if the application starts crashing, the user can virtual "spank" the program so it learns not to engage in such behavior. and if the app is preforming excellent, the user can reward it by giving more resources to eat. hey man, this is some good shit isn't it/ it bet nobody though this shit up before. damn i'm a mofukin genius, like that elite mofo who posted about Perl threads earlier... damn this is some good shti man.
    damn i'm hungry now, gonan eat somethin

  49. Keep it simple, stupid. by melatonin · · Score: 2, Insightful

    Uh, I haven't read the salon article.

    I think it comes down to a matter of discipline. One of the things that made Unix such a success is KISS. Unix is built around the philo that you should focus on one thing and do that one thing well. Tools in Unix don't re-invent the wheel to get stuff done; they rely on other tools.

    Another thing that comes to mind is what Apple's VP of hardware engineering Jon Rubenstein said in an interview. He said that engineers get too creative when they do work, and end up engineering things that do not need engineering - the rote work, as he put it. You have to get engineers to be creative in the non-rote work.

    IMO, Java is too complicated and easily gets in the way (I'm not going to touch C++ here). At least with C you can start off with a one-line Hello World program. I've seen first-year CS students trying to understand the many lines of code that constitutes a Java Hello World program (there are so many elements to a typical Java HW example; the class declaration, the static main declaration, the exception handler, System.out, etc. Every token except for "Hello, world!" is gobbldygook to newbies). In the case of C, it can go either way. To a well disciplined programmer, C programs can be extremely elegant. On the other hand, you can end up with some really fug-ugly code. However, a Pascal programmer is more likely to use C in an elegant way because Pascal is simple enough to make a programmer focus on the task, restricting the programmer's freedom to do stupid things.

    Although many argue that type-safety is incredibly important, that you can get really weird behaviour if you don't have type-safety, and that it's important that languages restrict programmers by being type-safe. Uh, no. Type-safety is like training wheels. If your program is well structured, 'types' in the program are for the most part irrelevant. What matters is what the code is doing, and knowing what the general flow of the program accomplishes. In a well-structured program with a well-defined execution flow, the data that moves around should always be well defined anyway.

    Here's another way to look at it (something an old professor brought up). What useful program has no input and produces no output? There is no such thing. Your job as a programmer is to transform your input sources to your desired output products. And the path to get that done should be as simple as possible. Unfortunately, we've got languages with templates, boxing/unboxing, exceptions, RTTI, etc as our main tools, that often provokes us to design systems that are more complicated than they should be.

    Really, it's like an artist trying to make a painting, and going out and buying a self-cleaning, featherweight, self-balancing $1K paintbrush. That's way beyond the point, isn't it? An artist needs to envision their artwork and realize it in their medium of choice. Similarly, a programmer needs to understand the problem they need to solve and then efficiently implement it on their target system (be it a PC or an automated toaster oven). Language features don't make programmers write better programs; discipline does. I can't remember the example perfectly, but it's something like, if you give a team 20 tools to do the job, they'll try and use all 20 tools. If you give a team 4 of those tools that they really need, they'll find a solution too - and a more efficient one.

    Anyway, KISS. You need to focus on what execution paths your program takes and what affects those execution paths (and note that exceptions throw a wrench into that. I avoid them). Don't get too creative with the language you're using. The best thing for a programmer to do is to learn how to program non-trivial projects in several different languages (Java and C++ don't count as different languages). And then hopefully more programmers will demand cleaner programming environments that aren't just souped-up C++ clones, and programming will stink less. (Take a look at Smalltalk some time).

    --
    Moderators should have to take a reading comprehension test.
    1. Re:Keep it simple, stupid. by Anonymous Coward · · Score: 0

      I've seen first-year CS students trying to understand the many lines of code that constitutes a Java Hello World program

      Huh? That's like 10 lines of code. Any student could learn the basics behind it in one lecture.

    2. Re:Keep it simple, stupid. by modder · · Score: 1

      A student should learn C before they learn java. I have always firmly believed this. Probably also C++. They will then be able to fully appreciate what Java is providing them.

    3. Re:Keep it simple, stupid. by slamb · · Score: 1
      Another thing that comes to mind is what Apple's VP of hardware engineering Jon Rubenstein said in an interview. He said that engineers get too creative when they do work, and end up engineering things that do not need engineering - the rote work, as he put it. You have to get engineers to be creative in the non-rote work.

      That advice may apply well to hardware, but I think it's a Bad Idea for software. My attitude is generally that if I'm doing rote work, I've screwed up. I should make the computer do it; it will do it more more quickly, without possibility of error or boredom. So if I have redundant code, I attempt to restructure it so that work is done by the computer. Ideally at compile-time (so it's faster for the user) but at run-time if necessary. (Quality over performance.)

    4. Re:Keep it simple, stupid. by melatonin · · Score: 1

      The idea is that you would put that work into a library, and to use tools that work, rather than re-invent them.

      --
      Moderators should have to take a reading comprehension test.
    5. Re:Keep it simple, stupid. by Anonymous Coward · · Score: 1, Insightful

      If you are serious about the C++ part, the problem is that he'll have gotten the diploma, raised a family, watched his children grow, retired and dead before he can start learning Java that way.

      Weren't you advocating simplicity?

    6. Re:Keep it simple, stupid. by Chris_Jefferson · · Score: 1

      You say "type safety is like training wheels". I would say type safety is more like having brakes. In theory you can get away without them, and if you were the perfect driver you'd never need them. However we all make mistakes occasionally and thats when we need them.

      If you are a "perfect programmer" who gets everything right first time, surely your code would compile in a type-safe language anyway? And in a LARGE project, knowing what the correct type of the inputs and outputs of a function are is vital to keep the code correct.

      Also, you argue that "Java and C++ don't count as different languages". Yes they do look similar, but they are very, very different in use (for a start Java has memory corruption protection features here, there and everywhere".

      I like smalltalk, I think it's a good language. I also think it is not suitable for very-large-scale programming projects.

      --
      Combination - fun iPhone puzzling
    7. Re:Keep it simple, stupid. by MythMoth · · Score: 4, Informative

      I think you're over stating your case.

      In pure line count a minimal Java Hello World would only have one additional line.

      It is crammed with keywords, and it contains the notion of Objects and Classes.

      But I see that as a good thing - you can concentrate on the mainline code and introduce the student to control flow and so forth, but when you come to the concepts of classes you've got a nice immediate example to point to.

      It's so much easier to teach a language when a common reaction to new information is "oh, I wondered what that was for" rather than "why would I ever need that ?"

      Finally I have to completely disagree with you about type safety. A perfectly written and comprehended program does not need type safety. A real world program will never be either, and type safety will prevent some of the nastiest bugs from occurring and keep your data intact.

      I have no problem with C in its place, but its place is not as a learning language or as a business language.

      D.

      --
      --- These are not words: wierd, genious, rediculous
    8. Re:Keep it simple, stupid. by dvdeug · · Score: 1

      Really, it's like an artist trying to make a painting, and going out and buying a self-cleaning, featherweight, self-balancing $1K paintbrush. That's way beyond the point, isn't it?

      No, but a painter isn't going to use the same paint brushes that come with your Intro to Painting class, and may have a $1K brush if it's made of just the right material to paint like the painter wants.

      Language features don't make programmers write better programs; discipline does.

      If you're talking about memory leakage, then language features do make programs less leaky. Language features can turn root holes from buffer overflows into denial of service attacks, and can often discourage writing the code that produces buffer overflows. Lisp programers don't tend to have buffer overflows, because the language makes it simple to just add it on to a list. C programers do, because the language encourages the use of fixed-width arrays and discourages lists (by not including them in the base language, and making it hard not to leak memory.)

      Java and C++ don't count as different languages

      Then you aren't using them right. There's a lot of superfical similarity, but also a lot of difference at the cores.

    9. Re:Keep it simple, stupid. by Anonymous Coward · · Score: 0

      you argue that "Java and C++ don't count as different languages".
      Yes they do look similar, but they are very, very different in use


      To add to that: one of the big differences is that Java is type-safe, while C++ isn't!

    10. Re:Keep it simple, stupid. by melatonin · · Score: 1

      It is crammed with keywords, and it contains the notion of Objects and Classes.

      But I see that as a good thing - you can concentrate on the mainline code and introduce the student to control flow and so forth, but when you come to the concepts of classes you've got a nice immediate example to point to.

      The extra keywords tell the student nothing about object-oriented programming, nor serve as an example of object-oriented programming. A student needs to learn about conditionals, loops, basic algorithm techniques such as bubble-sorts, and computational-complexity. All this really means is that Java's not a great student language (Turing and Pascal are better), not that Java is a bad language. But I use this to serve as an example of language complexity.

      As for type-safety, try programming in Python, Smalltalk, and Lisp. Types are irrelevant. In an object-oriented or functional system, you really don't care about the type of anything, just as long as objects (which are supposed to be anonymous black boxes) respond to the messages (have method implementations) you need them to respond to, or that functions transform data the way you need them to. Type-safety is overrated. Strong type-safety is a product of bad C code, where you can cast anything to anything and just start programming with pointer arithmetic. Type-safety should not be the focus of an object-oriented program; messages should be.

      --
      Moderators should have to take a reading comprehension test.
    11. Re:Keep it simple, stupid. by melatonin · · Score: 1

      Ok, type-safety can be more like crutches than training wheels. Take a look at Smalltalk or Objective-C, which don't have multiple inheritance or templates. This is not a limitation in those languages, because the types of objects in those languages don't dictate what methods they implement. In those languages, an object can dynamically re-route messages (method calls) they don't implement to another object that does, or understand (by parsing) the message at run-time to do something appropriate. You can't do that if you force types and thus statically enforce functionality on objects. That's just an example of what you can do without type-safety. The compiler, by enforcing type-safety, can't validate what you're doing, it can only limit your actions. As I said, you have to try programming in different languages, and true to the nature in those languages, before you can understand what removing type-safety can do.

      In Smalltalk, every 'type' is a pure object. In C++, every object is designed to behave like a built-in type (like int). In Smalltalk, you don't really need to worry about the types of anything, so long as each object can respond to messages you send to them.

      Also, you argue that "Java and C++ don't count as different languages". Yes they do look similar, but they are very, very different in use (for a start Java has memory corruption protection features here, there and everywhere".

      Smalltalk, C++, Lisp, and Python are all completely different languages. Java is far more like C++ than it is to any of the other languages I mentioned; I consider it to be a cleaned up C++ more than anything, removing the C from C++ (no pointer arithmetic, well, no pointers even). You can convert a Java program into a C++ program with zero effort just by implementing classes needed, and garbage collection (C++ allows you to implement your own memory management by overloading the new and delete operators. You wouldn't need to implement delete by implementing a garbage-collecting new).

      I like smalltalk, I think it's a good language. I also think it is not suitable for very-large-scale programming projects.

      Yes it is, and there are many people with incredibly high salaries who use IBM VisualAge Smalltalk that would disagree with you.

      --
      Moderators should have to take a reading comprehension test.
    12. Re:Keep it simple, stupid. by melatonin · · Score: 1

      To add to that: one of the big differences is that Java is type-safe, while C++ isn't!

      You really don't know how to use C++. You can use C++ like C, which makes it not-typesafe. But in pure C++ you have to use dynamic_cast, static_cast, const_cast if you're going to do any kind of non-typesafe functionality, otherwise the compiler forces type-safe. Casting to (MyObject*)foo is inherited from C, and is not supposed to be used in C++.

      --
      Moderators should have to take a reading comprehension test.
    13. Re:Keep it simple, stupid. by melatonin · · Score: 1

      If you're talking about memory leakage, then language features do make programs less leaky. Language features can turn root holes from buffer overflows into denial of service attacks, and can often discourage writing the code that produces buffer overflows. Lisp programers don't tend to have buffer overflows, because the language makes it simple to just add it on to a list. C programers do, because the language encourages the use of fixed-width arrays and discourages lists (by not including them in the base language, and making it hard not to leak memory.)

      The reason is because C is a low-level procedural language, designed back when systems had 16 K of RAM. You can write C code and not use any built-in arrays by making proper use of libraries that provide arrays (such as CoreFoundation), and thus achieve buffer overflow protection easily. The reason why most C programs don't do that is because the standard library doesn't offer that, as it has an ancient heritage. If people are having so many problems of coding wrong in C, use glib! You won't have any such problems.

      --
      Moderators should have to take a reading comprehension test.
    14. Re:Keep it simple, stupid. by OnanTheBarbarian · · Score: 3, Insightful

      How does this get modded "insightful"? I'm sort of tired of people parading around their ignorance about programming disguised as 'good design sense'.

      "Type-safety is like training wheels."

      Yeah, right. One day you graduate to the level of Supreme Programming God, with the power to effortlessly remember the exact types of all the "void *" pointers they left lying around. And of course, you don't need type safety when interfacing to other people's code, because you're just so damn intelligent, you instantly understand everything about their code and don't need those 'training wheels'. Because lord knows we all understand exactly what the other programmers mean and don't need no steenking type system to communicate what should and shouldn't be legal.

      "Unfortunately, we've got languages with templates, boxing/unboxing, exceptions, RTTI, etc as our main tools, that often provokes us to design systems that are more complicated than they should be."

      I love Slashdot for these kind of broad-brush statments. Which language uses exceptions or RTTI as its 'main tool', exactly? And who the hell thinks exceptions and templates are more complicated than implementing the same features _without_ exceptions or templates.

      My guess: someone who has never written a large program* or a program that actually requires generic programming or sophisticated exception handling (yes, sometimes it is OK to just print an error message and quit). The stuff about type safety also suggests near-total lack of experience with programming large systems with portions of the system written by other people.

      Also, absent turning newlines into spaces, how do you write a properly formatted 1-line "Hello World" program in C? If you're going to complain about Java's main declaration and System.out, you should at least take into account C's main declaration, and the equally inscrutable (to a first-year student) '#include' line.

      * Pre-emptively: to the people that always post about how you don't actually need to ever build large systems, because you can always build elegant collections of small, gem-like, perfect tools, please close your Web browsers and finish your sophomore CS homework.

    15. Re:Keep it simple, stupid. by melatonin · · Score: 1

      Yeah, right. One day you graduate to the level of Supreme Programming God, with the power to effortlessly remember the exact types of all the "void *" pointers they left lying around.

      Only an idiot would use void* everywhere. C is not a language that lends itself to not being typesafe.

      And of course, you don't need type safety when interfacing to other people's code, because you're just so damn intelligent, you instantly understand everything about their code and don't need those 'training wheels'.

      In an object oriented system types are meaningless. What matters is what functionality other objects provide. OO systems have foundation classes that have well defined behaviours (lists, strings, dictionaries, etc). They define a common language that every other object can use to communicate with others. As long as you know you're getting a list, you don't care what type it is. You only care about what kind of model object you have. That's the whole point of MVC.

      Because lord knows we all understand exactly what the other programmers mean and don't need no steenking type system to communicate what should and shouldn't be legal.

      Good systems have good documentation and non-cryptic structure and method names. Calling a function apls24() is not helpful.

      I love Slashdot for these kind of broad-brush statments. Which language uses exceptions or RTTI as its 'main tool'

      STL requires you to deal with RTTI if you're going to do anything dynamic with it. Python requires exceptions for any error handling. So does Java.

      exactly? And who the hell thinks exceptions and templates are more complicated than implementing the same features _without_ exceptions or templates.

      With templates you spend more time programming the language than you do programming your system. Templates are a pain in the ass to code properly because you have to handle every case for every kind of object (for example, ~int() is valid in C++). Every time you use a template with a new type (like vector<int>, vector<char>, vector<object*>), the compiler generates code to implement the template class. Every time you want to use the template you need to declare the type (aren't containers generic?). If you want you can typedef that away. Either way you're programming the language and not your program. Have you tried writing an implementation of the STL? I have, and it proves how idiotic templates are (tell me, how do you create a template that constructs pointer objects (new Object()) and stack-based objects (object())?). C++ didn't have templates to begin with. When the language designed added it, someone else started the STL. Then they modified C++ templates as needed so the STL will work, and objects behave exactly like C's built-in types. To quote Alan Kay, "I invented the term object-oriented, and I did not have C++ in mind."

      And you only want templates in a strongly-typed environment. A container shouldn't care what kind of object is stored in it, like Java and Python containers. Try using an object oriented language like Smalltalk or Python that doesn't have templates -- they don't need them.

      My guess: someone who has never written a large program

      You've obviously never used more than a handful of languages, and would probably use lisp like a procedural language. My guess is that you don't know the difference between functional and procedural programming. Someone who has written large systems knows the level of complexity those 'features' provide. Exceptions aren't a magic bullet; they just move error handling responsibility elsewhere, and blur the line between fault handling and error handling, which is more dangerous than code that doesn't use exceptions. Everyone agrees that jumping around a function using gotos are bad, but somehow dynamically jumping around the program at runtime to undefined places is all ok.

      Compare writing CORBA code in Python and C++. CORBA is fairly transp

      --
      Moderators should have to take a reading comprehension test.
    16. Re:Keep it simple, stupid. by Anonymous+Brave+Guy · · Score: 1
      one of the big differences is that Java is type-safe, while C++ isn't!

      I love this one. The language that forced everyone to cast for years (with its advocates frequently claiming that templates were just bloat, no less) and where everything derives from Object is type safe, but the language which has provided safer casts, typesafe templates and no universal root type for years isn't?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    17. Re:Keep it simple, stupid. by Anonymous+Brave+Guy · · Score: 1
      Smalltalk, C++, Lisp, and Python are all completely different languages. Java is far more like C++ than it is to any of the other languages I mentioned; I consider it to be a cleaned up C++ more than anything

      You don't know much about either Java or C++, do you? :-)

      You can convert a Java program into a C++ program with zero effort just by implementing classes needed, and garbage collection

      That's hardly zero effort. And besides, I can write FORTRAN in OCaml if I try hard enough, but it wouldn't give as good a result as using OCaml's own features well.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    18. Re:Keep it simple, stupid. by Anonymous+Brave+Guy · · Score: 1
      In an object oriented system types are meaningless. What matters is what functionality other objects provide.

      I think I know what you're trying to say, but I'm pretty sure it's not what you've said. OO basically implies explicit interfaces via inheritance, and in that respect, types are everything. You can program very powerfully using generic techniques instead, but then you're not doing OO.

      STL requires you to deal with RTTI if you're going to do anything dynamic with it.

      I'm sorry, you lost me there. How does using the STL require any more RTTI to achieve dynamic binding than any other version of the same code?

      To quote Alan Kay, "I invented the term object-oriented, and I did not have C++ in mind."

      I don't care who invented the word, I care who invented the concept, and the C++ community has collectively contributed more to the OO concept over the years than just about any other. Hell, Bjarne Stroustrup invented the term C++, and I'm guessing he didn't have today's C++ in mind, either. That doesn't mean today's C++ isn't an improvement on his original vision a couple of decades ago.

      Everyone agrees that jumping around a function using gotos are bad, but somehow dynamically jumping around the program at runtime to undefined places is all ok.

      Firstly, not everyone agrees that. It's common practice, because we have an alternative (structured programming) that many people prefer.

      Secondly, exceptions are a natural complement to functional decomposition and structured programming, and the places where they can be handled are typically very well-defined. To date, no-one's managed to popularise a more effective system for controlling failure in a large application, so that's why we use them.

      Take a look at page 7 of K&R. You write code in procedures. main is the procedure you start in. You call other procedures to do work; printf prints stuff. stdio is the standard input/output library that defines printf. Is that so hard to comprehend?

      You're letting what's second nature to you as an experienced programmer cloud your judgement. Having taught several non-programmers some basic C, I can tell you that your explanation above would probably result in something like the following:

      • What's code?
      • What's a procedure?
      • What do I call other procedures? That didn't make sense!
      • Nothing came out of the printer when I said printf!
      • What's the library got to do with anything? Can't the system explain it without me having to go and borrow a book?

      Teaching is all about recognising what you understand but somebody else doesn't. The more you understand, the harder that gets, and the more your own preconceptions and ideas get in the way.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    19. Re:Keep it simple, stupid. by melatonin · · Score: 1

      I think I know what you're trying to say, but I'm pretty sure it's not what you've said. OO basically implies explicit interfaces via inheritance, and in that respect, types are everything. You can program very powerfully using generic techniques instead, but then you're not doing OO.

      Inheritance is really only a convenience when implementing systems. It shouldn't be used to decide what objects can respond to what messages, but in C++ you don't have any other tool. Java has interfaces, which allows that. In C++ you'd have to use multiple inheritance, but you can only get away with that pattern if objects subclass from parent classes using the virtual keyword.

      Types then aren't what's best for defining what an object does. In non-type based languages you'd simply query if your target object responds to a message if you need to (easy in Python or Objective-C). You can do it in Java, but it's more of a pain and it's a bit rare that you'd need to (since types/interfaces define what objects implement).

      The confusion comes when you don't understand how to design a system in a non-type oriented environment. I mean really, if you've only used strong typing systems you can't really comment. In such an environment, the names of methods are the most important. A method called 'setObjects:objectList' or 'objects' are methods that take a sequence object and return a sequence object, respectively. Sequence objects respond to messages such as count, objectAtIndex:number, etc. Well defined and standardized method names are what's important in such a system. In strong typed systems you typically don't bother with proper method naming because it's the type that's important.

      Strong typing limits you in ways that don't help. If you've only used languages that enforce it, you really won't see the problem with it. But if you take code written in a non-type enforced language such as Python, objective-c, smalltalk, ruby, etc, that takes advantage of that (or rather, implements code in the freedom provided by dynamic 'typing'), you'd be hard pressed to convert that code into a strong typing system; you'd have to redesign it. My point in saying that is that you lose something by using a strong-typing system.

      I'm sorry, you lost me there. How does using the STL require any more RTTI to achieve dynamic binding than any other version of the same code?

      The only way you can correctly make an object do something that its type doesn't define is to typecast it to another type that does define it, which means using dynamic_cast. RTTI is also the only method for object introspection. Like I said before, if you want to you can define 'interface' classes for multiple-inheritance that you can use to dynamically test, but it ends up failing on a large system because of the virtual base class problem.

      If it looks like a duck, sounds like a duck, walks like a duck, it's a duck. It's actually not a duck, but you don't care. It does what you want.

      The other way to get dynamic code is with a superclass defines a basic method interface, and a subclass defines a different implementation, which may be what lost you with my comment...

      I don't care who invented the word, I care who invented the concept, and the C++ community has collectively contributed more to the OO concept over the years than just about any other.

      They only contributed to the C++ concept :-/ C++ is a kind of programming in itself, with the goal of being strongly typed, and making all objects act like C's built-in types. The biggest benefit to OOD/OOP is abstraction, with black boxes working with other black boxes. But you don't have black boxes if you know the type of everything! Try taking two C++ libraries with different designs and make them work together. For example, CORBA's C++ system and anything you wrote. It's a royal pain, if not impossible. In the case that it is impossible, the only thing you can really

      --
      Moderators should have to take a reading comprehension test.
    20. Re:Keep it simple, stupid. by OnanTheBarbarian · · Score: 1

      I'm just going to ignore the usual rubbish you trot about how anyone who prefers the C/C++ way of doing things has obviously never tasted the joys of the lambda calculus, LISP, Scheme, ML 2000, object-oriented Welsh Left-Handed Haskell and so on. Uh, no.

      You're just describing your favorite languages with some handwaving so that it sounds like you've unearthed overarching principles about how programming languages could be so much better. But all you're doing is reeling out a long list of arbitrary preferences. Enjoy them; if nothing else, they obviously give you much to write about on Slashdot.

    21. Re:Keep it simple, stupid. by Anonymous+Brave+Guy · · Score: 1

      Inheritance is really only a convenience when implementing systems. It shouldn't be used to decide what objects can respond to what messages, but in C++ you don't have any other tool. Java has interfaces, which allows that. In C++ you'd have to use multiple inheritance, but you can only get away with that pattern if objects subclass from parent classes using the virtual keyword.

      That doesn't really make sense. Everything you can do with interfaces in Java you can also do with abstract base classes in C++. Moreover, C++ does allow generic programming via templates, where the interface methods are all that matters, regardless of base classes.

      Types then aren't what's best for defining what an object does. In non-type based languages you'd simply query if your target object responds to a message if you need to (easy in Python or Objective-C).

      It's a different approach, and each has pros and cons. For example, in your typeless world, if you're going to depend on multiple methods to achieve your goal, you have to check for all of them being present and you have to assume that they interact in the ways you expect. If I'm using a type that guarantees (enforced by the language) to support a particular interface, I need only write my code to work with that interface. Some strongly OO based languages even provide explicit support for preconditions, postconditions and class invariants, providing an extra guarantee about the relationship between various methods on an object. That removes a whole potential class of errors in strongly typed systems.

      The confusion comes when you don't understand how to design a system in a non-type oriented environment. I mean really, if you've only used strong typing systems you can't really comment.

      May I respectfully suggest that you make fewer assumptions about who you're talking to? You've consistently played the "You just don't understand" card in this thread, to me and others, and that isn't a very convincing argument to those of us who've been familiar with the tools or techniques in question since forever.

      The only way you can correctly make an object do something that its type doesn't define is to typecast it to another type that does define it, which means using dynamic_cast.

      And the problem with that is...?

      Even in a typeless system, you can't just apply any old algorithm to any old data and expect an meaningful result. You have to know what an algorithm does, and what the rules are for how it manipulates data. In C++, you can use dynamic_cast to test whether an object supports a certain interface at run time, but even then you already know something about the object because of the static type system.

      If it looks like a duck, sounds like a duck, walks like a duck, it's a duck. It's actually not a duck, but you don't care.

      What if it looks like a duck, sounds like a duck, walks like a duck, but is poisonous when cooked crispy aromatic style and served with pancakes?

      I haven't seen a C++ system that made programming any better than a C system.

      I have. In fact, I've worked on a fairly large (MLOC) project in C++ that was essentially a reimplementation of a previous project that was written in C. (It was being rewritten as a Windows application, compared to the DOS-based predecessor.) This offers a fairly direct comparison, except that the C++ version was so much easier to work with that there really was no comparison possible, and a lot of that was due to a decent overall design using a lot of OO, exception-handling and generic features that simply aren't available in C.

      Actually, I'm not going to risk discussing your take on exceptions too much. It seems so far out of my own experience with them -- indeed, almost diametrically opposed in places -- that I'm

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    22. Re:Keep it simple, stupid. by Anonymous Coward · · Score: 0

      Also, absent turning newlines into spaces, how do you write a properly formatted 1-line "Hello World" program in C? ... you should at least take into account C's ... '#include' line.

      You could include the function definition directly ("extern int printf"...) to eliminate the #include line. But you still won't get a properly formatted program - you'd have to replace newlines with spaces, and the program would look pretty obfuscated.

  50. I already sent this letter in response.... by ciggieposeur · · Score: 5, Insightful

    Quoting the article: "Giving the [software architects] tools to shape software will transform the landscape, according to Simonyi. Otherwise, you're stuck in the unsatisfactory present, where the people who know the most about what the software is supposed to accomplish can't directly shape the software itself: All they can do is 'make a humble request to the programmer.'"

    As a programmer who recently stopped working for a very very very large computer firm that sells both hardware and software, let me say that Simonyi's point makes zero sense. Tools already exist to "shape software," and they are known as programming languages like Visual Basic, C, C++, C#, Java, Perl, PHP, Python, etc...

    I'm frankly sick of architects (that's the term for people who say they design software but don't actually design software) who bemoan the gap between their glorious visions and the real products their teams end up producing. These people need to click "Close" on their UML models and go get their hands dirty by writing parts of the production code. Then they'll understand the real-world constraints that their codeless design didn't account for, like internationalization, performance bottlenecks, user authentication, heterogenous networked environments, and ACID transaction support (to name the first few).

    Oh yeah, and the reason open-source developers wrote a Unix-like operating system (Linux) and put a Windows-like interface on top of it (X11 + GNOME/KDE) is because these are both very reasonable and mature solutions for a variety of computing needs. If any of you architects out there want something besides Linux that conveniently abstracts away 99.9% of the hardware interaction yet also provides an easy-to-learn interface for general users, you are more than welcome to write it yourself. Or you can model it in UML, click some buttons, and hope it compiles.

    Why do I think software sucks? Because market droids and architects who forgot how to program get together and promise their customers AI in only six months.

    1. Re:I already sent this letter in response.... by Salamander · · Score: 2, Insightful
      I'm frankly sick of architects (that's the term for people who say they design software but don't actually design software) who bemoan the gap between their glorious visions and the real products their teams end up producing. These people need to click "Close" on their UML models and go get their hands dirty by writing parts of the production code. Then they'll understand the real-world constraints that their codeless design didn't account for, like internationalization, performance bottlenecks, user authentication, heterogenous networked environments, and ACID transaction support (to name the first few).

      While I generally agree with your point and have spent a great deal of my own time and energy over the years ranting in much the same way about reality-free architects, I think you also need to consider the other side of the story. Just as you get tired of architects who stay up at the 30,000 foot level and never come to earth to code, architects get tired of programmers who are grubbing around in the dirt and refuse to look at how their little piece affects the whole. Any project of significant complexity needs people working at both high and low conceptual levels. A message-formatting module might be important, for example, but still a small part of the overall design. It shouldn't consume huge amounts of (human or machine) resources, or drive interface definitions throughout the rest of the system, but all too often the guy writing the message-formatting module acts like it's The Only Thing That Matters. It's an architect's job to remind such people that there are other things that matter too. There are other modules, and other considerations, and of course the features that users need and developers occasionally forget. Some of those considerations, like security or performance, are of immediate concern to developers, while others involve different constituencies.

      No you can't do it that way, the architect has to say, because it complicates recovery or doubles the number of scenarios QA has to test or requires an overhaul to the documentation or leaves our support people hanging as they try to explain a weird program limitation to an unsympathetic customer. Of course the person who just wants to get their one piece done doesn't like to hear that, and they go off grumbling about architects who don't understand how hard it is to write a decent message-formatting module. Screw 'em. Somebody has to look out for how all the pieces will eventually fit together or else you end up with a dozen brilliantly-coded modules that don't work together. Been there, done that, seen projects and companies fail because of it. Yes, there are reality-free architects who spend way too much time with their nose stuck in the latest $10K piece of UML-diagramming junk and don't have Clue One about how anything actually works. Maybe they're even the majority of architects, and every one of them should be shot (except that shooting's too quick). However, there are also architects who can code as well as anyone else on their team in any of a half-dozen languages, and who would love to prove it day in or day out, but who end up being architects because they're the only ones on their team who can do anything but code. More projects fail due to a lack of architecture than due to an excess of it.

      --
      Slashdot - News for Herds. Stuff that Splatters.
  51. Hungarian Notation by Speare · · Score: 4, Informative

    The linked page didn't mention that Charles Simonyi is the Hungarian for whom the term, Hungarian Notation is named.

    Hungarian Notation is that Microsoft Windows programming naming strategy where the first few characters of a variable name should hint to the reader as to its data type. So hToolbox tips you to understand that it was a HANDLE type, even without scrolling your editor up a couple pages to find out; papszEnvironment would likewise tell a Win32 devotee that it was a Pointer to an Array of Pointers to Zero-terminated Strings.

    It's not the first such instance of binding data type and name, and it won't be the last. For example, FORTRAN compilers have long had implicit variables; any variable not otherwise declared that started with I, J, K, L, M, or N would be assumed to be an integer, where most other variables would assume a real (floating-point) type. So FORCE(LAMBDA) directs the code to a real scalar from a real array, given an integer index. Many programmers start a routine with IMPLICIT NONE to disable this assumptive behavior, as mistakes are easy to make when you let the machine decide things for you.

    BASIC would use sigils at the end of the variable names (NAME$, COUNT#, and scripting languages like Perl use sigils that precede the name %phones, @log, $count).

    --
    [ .sig file not found ]
    1. Re:Hungarian Notation by jcr · · Score: 2, Insightful

      The linked page didn't mention that Charles Simonyi is the Hungarian for whom the term, Hungarian Notation is named. ..which notation is nothing but an irritant when code is well-structured.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Hungarian Notation by PopCulture · · Score: 3, Insightful

      which notation is nothing but an irritant when code is well-structured

      which happens how many times when you buy software from anybody.

      which happens how many times when your own development team is faced with insane deadlines and unrealistic specs.

      Which happens how many times in the post dot com boom?

      --

      Here's to finally giving Bush his exit strategy in November
    3. Re:Hungarian Notation by jhoger · · Score: 4, Insightful

      It makes variable names butt ugly.

      The farthest I am willing to go is to end my pointer variable names with the letter p, and pointer-to-pointers with pp. Array names don't get a suffix, since they're not really pointers.

      It makes the code leaps and bounds clearer without the hideous ugliness of Hungarian notation. And pointers is where the bad errors are, so it's the bang-for-the-buck here...

    4. Re:Hungarian Notation by arkanes · · Score: 4, Insightful

      It's usefull for what it does, but it does make code damn fugly (and near-unreadable, for me), and theres far better tools now for figuring out what a variable is.

    5. Re:Hungarian Notation by pipacs · · Score: 5, Insightful
      It makes variable names butt ugly.

      Another problem is that if you change types, you have to change the names, too. Or if you don't, you end up with a completely misleading code.

    6. Re:Hungarian Notation by prockcore · · Score: 4, Insightful

      even without scrolling your editor up a couple pages to find out; papszEnvironment would likewise tell a Win32 devotee that it was a Pointer to an Array of Pointers to Zero-terminated Strings.

      No it wouldn't. It would tell a win32 devotee that it started out that way.. it may not be that way now.

      Look at how many "lp" variables are in the win32 headers.

      Hungarian Notation is the most horrible concept ever because it always ends up lying. I bet that's why MS is so slow to fix buffer overflows.. in order to change a variable from an int to a long is an arduous process.

    7. Re:Hungarian Notation by fforw · · Score: 4, Funny
      The linked page didn't mention that Charles Simonyi is the Hungarian for whom the term, Hungarian Notation is named.

      my first thought was :
      why should I listen to what m_plzstrSimonyi has to say about programming?

      --
      while (!asleep()) sheep++
    8. Re:Hungarian Notation by Anonymous Coward · · Score: 2, Interesting

      Grandparent failed to mention that it is equally irritant when the code is badly structured as well. Actually it might be even worse, since the notation is possibly also lying then ("hey, I'll just change this to unsigned without touching the name").

    9. Re:Hungarian Notation by AndrewHowe · · Score: 1

      This kind of argument pops up all the time. I don't speak Hungarian*, but that's no fault of the Hungarian lanugage, I just haven't learned it. Hungarian notation isn't a whole language, it's something like grammatical agreement, but I find it very readable and helpful. I respect your right not to use it, but I expect you to show me the same courtesy...

      * Actually that's a bad example, as I know a few words (I met my wife in Budapest [but she's Romanian {but her mother is Hungarian}])

    10. Re:Hungarian Notation by AndrewHowe · · Score: 1

      That's not a problem in practice. It's actually more useful for denoting scope than type, anyway. And yes, sometimes you change the scope of a variable. But not often, really, and I'm sure you know how to use search & replace. Newer refactoring tools make it even easier. Having said that, its usefulness does depend on the language you're coding in.

    11. Re:Hungarian Notation by Jugalator · · Score: 1

      Array names don't get a suffix, since they're not really pointers.

      If you're programming C, I don't really understand what you're trying to say here. Array variables points to the first element in the array. Trying to make them something else, well that would be misleading to me.

      I personally like the hungarian notation, but I think it's taken a bit to the extreme. I prefix variables but try to keep it to the minimum. I've found that usually it's enough with p (pointers), i (integers), f (float or double), and s (strings). Since I usually use the same kind of string, I find it pretty useless to be as detailed in whether it's zero terminated or not when it always is in the entire application, etc...

      --
      Beware: In C++, your friends can see your privates!
    12. Re:Hungarian Notation by arkanes · · Score: 2, Insightful

      I don't care if you use it or not, but I thought we were talking about the relative merits of it. I prefer descriptive and readable variable names, and I rely on automated tools and an IDE to show me the type if my memory fails. Note that I'm familiar with Hungarian notation and I still think it fails the readability test - it's messy and distracts from the variable name which is where the real meaning is.

    13. Re:Hungarian Notation by EachLennyAPenny · · Score: 1

      I only use a "m_" prefix for class attributes and "s_" for static class attributes. You will find this convention throughout most Open Source projects.

      Making the variable name represent the variable type makes the code very ugly. And what do you do when you make up your mind and change and int to be a double? Touch each and every line using it? Bah.

      With tools like JavaDoc, Doxygen and (put your favorite IDE here) this is moot anyway. They have better ways to tell you about your code.

    14. Re:Hungarian Notation by Master+of+Transhuman · · Score: 1


      If I ever meet him, I'll mention how much I HATE such methods.

      I'm not even happy with v_variablename, c_cursorname in PLSQL - but I'll live with it.

      Typing every variable in a program? Jeez...

      This is the sort of person who embeds "useful" information in what is supposed to be a completely meaningless unique database key.

      Morons. In fact, there should be a whole new classification of morons: Geek Morons.

      --
      Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
    15. Re:Hungarian Notation by AndrewHowe · · Score: 1

      Sure, we're talking relatively. I and many others are fluent in H.N. and you and many others aren't. It has merit to me, not to you.

    16. Re:Hungarian Notation by Ed+Avis · · Score: 2, Insightful

      I feel that if you want to use a notation where the type of a variable determines part of its name, then this should be checked by the compiler. Furthermore, it should be easy to strip off the type prefixes when editing code (for those who don't like them) and add them back, since they can be automatically determined from the variable's type.

      Manually prefixing each variable name with redundant information is the kind of extra work that I'd rather have the computer do for me.

      --
      -- Ed Avis ed@membled.com
    17. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      How embarrassing for "most Open Source projects". All the expert-level C++ books (Alexandrescu for example) use only a trailing underscore for data members, and Sun's sample Java code uses no prefix at all. "m_" is pretty much unique to M$ and their victims.

    18. Re:Hungarian Notation by Anonymous Coward · · Score: 0
      The linked page didn't mention that Charles Simonyi is the Hungarian for whom the term, Hungarian Notation is named.

      Maybe because everyone's trying really hard to forget that such horrors ever existed?

    19. Re:Hungarian Notation by AndrewHowe · · Score: 1

      I agree. Clearly this is a religious issue, like so many others, but one that can be solved with technology. One of the features I'm looking forward to in Visual Studio Whidbey (amongst many, many others) is a much enhanced auto-formatting system. Currently you can select a bunch of code and auto-format it but it doesn't have a lot of options. The new one sounds like you'll be able to tell it exactly how you lay out your code. Then, you can easily get VS to auto-format a source file when you check it out from source control, and reformat it back to some common standard on check-in. Of course this leaves a religious argument as to what the common format is, but it doesn't really matter, as no-one has to read it.
      This could certainly be extended to things like Hungarian notation. I'd like to see something like this. I hate reading other peoples' code, and they probably hate reading mine. They don't want to change their style, and nor do I. Often the proposed style is a third party's that we both hate. For example I'd eat my own colon before I'd use K&R braces.
      The solution is to recognise that not everyone speaks the same dialect, and to provide translation tools.

      ps. Is /. being DOS'd? I'm getting 500 errors all over the place.

    20. Re:Hungarian Notation by negacao · · Score: 0


      bet that's why MS is so slow to fix buffer overflows.. in order to change a variable from an int to a long is an arduous process.


      select region, then:
      M-%, oldname, newname [emacs]
      C-H, oldname newname [vc++]

      yummy troll bait.

    21. Re:Hungarian Notation by pipacs · · Score: 1

      You are ignoring the context of this "invention". Hungarian Notation was invented to add some kind of type safety to a language (C) which doesn't have much.

      But not often, really, and I'm sure you know how to use search & replace.

      Search & replace can cause much bigger disasters - consider the case when you have variable names with similar starting/ending.

      Newer refactoring tools make it even easier.

      Refactoring tools? Man, we are talking about the era of Windows 1.0.

    22. Re:Hungarian Notation by AndrewHowe · · Score: 1

      Well, I'm sorry to hear that you can't use your tools properly. Like I said, I'm fluent in H.N. and it doesn't seem to cause me any of the problems that anti-H.N. people think it must have. Since I actually use it, perhaps my opinion on the matter is slightly more valid. It's not as if I'm trying to force you to use it.

    23. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      > How embarrassing for "most Open Source projects".
      > All the expert-level C++ books (Alexandrescu for
      > example) use only a trailing underscore for data
      > members, and Sun's sample Java code uses no prefix
      > at all. "m_" is pretty much unique to M$ and their
      > victims.

      Spoken by somebody who's never worked on a real-world C++ project in thier entire life.

    24. Re:Hungarian Notation by bloo9298 · · Score: 1

      Arrays and pointers are distinct in C. It's the implicit coercion from array types to pointer types (in covariant contexts) and the ability to use the ".[.]" operator on both arrays and pointers that makes them look similar. But you can't use an array as an lvalue. Also a compiler has to emit very different code depending on whether an external object is an array or pointer.

      If that's unclear, I'd recommend "C: A Reference Manual" by Harbison and Steele, and "Expert C Programming: Deep C Secrets" by Van Der Linden.

    25. Re:Hungarian Notation by dustmite · · Score: 2, Informative

      Hungarian Notation is not a "Microsoft thing". If you've ever bothered to read the original Charles Simonyi paper, it has nothing to do with Windows, and the original seemed more tailored for e.g. physics concepts than window and process handles. Microsoft later adopted an adapted version of this for their own coding. It's not a "Microsoft thing" or a "Windows thing", sheez, if I had a cent for every time someone repeated that bit of misinformation.

    26. Re:Hungarian Notation by dustmite · · Score: 1

      The point of Hungarian is you don't need to "figure out" what the variable type is. You just look at it and you ALREADY KNOW. There are no better/faster tools than that in existence, nothing beats the speed of interpretation. Mouse float-overs and other such things are helpful, but certainly slower than the 'instant' decoding available from reading a 'Hungarian-compliant' variable name.

    27. Re:Hungarian Notation by john.r.strohm · · Score: 4, Informative

      Hungarian notation was originally developed as a band-aid (tm) for the near-complete lack of type checking in C. When all ints are created equal, and may be freely assigned to each other, and pointers must routinely be type-coerced to something else, and the compiler refuses to help the programmer keep things straight, something like Hungarian notation becomes necessary.

      Hungarian notation declined after Stroustrup added strong typing to C++. It is worth noting that Stroustrup never even considered NOT doing strong typing in C++. (Read his book on the design and evolution of C++.) Distaste on the part of hard-line C programmers for strong typing also declined, after C++ forced them to eat their broccoli, and they discovered it actually tasted pretty good (by catching errors that would otherwise not have been found nearly as easily).

      It is also worth noting that Hungarian notation never caught on in any language other than C. In particular, Ada programmers never bothered with it: the Ada type system was rich enough that it could do everything that Hungarian notation pretended to do, and enforce it, by requiring compilers to refuse to compile type-incorrect programs.

      (Somewhere, recently, I saw something about a commercial satellite project that was forced to use Ada, because there was no C/C++ compiler available for a recently-declassified microprocessor. Their programmers screamed bloody murder at the idea. The screams stopped when they noticed that the Ada compiler was catching errors for them.)

    28. Re:Hungarian Notation by SnapShot · · Score: 1

      A development team I was on used to get into the same arguments on spaces vs. tabs, brace placement, etc.. We solved it with Jalopy.

      Now we just need a "Jalopy for variable names". You check your files out of CVS, run a JFVN script and all the Hungarian notation that you want can automatically get appended or prepended to your variables. When you're ready to check your files back in, simply run the standard script and all the Hungarian decorations get stripped back off...

      Sound like a good SourceForge project?

      --
      Waltz, nymph, for quick jigs vex Bud.
    29. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      No, the fact that you obviously are a Windoze Programmer(?) means that your opinions are null and void.

    30. Re:Hungarian Notation by pipacs · · Score: 1

      Since you asked... I started Windows programming (with Hungarian Notation) when it was at 2.0. I wrote Windows applications for a living for long years, and I'm glad I don't have to do it anymore.

    31. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      Good for you - as long as you realise that your experience isn't the only one, we're done.

    32. Re:Hungarian Notation by yrch93 · · Score: 1

      > Hungarian Notation is the most horrible
      > concept ever because it always ends up lying.

      In English, are the words used in a lie responsible for that lie?

      It's slacker jackasses misUSing Hungarian notation, whether by code rot (not updating the name when the var type changes) or intentional obfuscation, that makes it treacherous.

      Upside: In a team without slacker jackasses (see above), H.N. makes it painfully obvious when you're relying on compiler-provided type conversion.

    33. Re:Hungarian Notation by humblecoder · · Score: 2, Funny

      This has got to be the perfect troll!!

      This post immediately leads to an (off-topic) flame war about the relative merits (and lack thereof) of said notation, AND at the same time it gets modded up to 5!

      I bow down before your superior posting skills...

    34. Re:Hungarian Notation by Arkaein · · Score: 2, Interesting

      This is true if you explicitly append a character for the type of every variable. However, there are other uses of Hungarian notation that imply more intent than explicit types.

      In my C++ code I tend to use the following conventions:

      m_ = member variable
      sm_ = static member variable
      g_ = global

      These will not change unless the variable is moved to an entirely new scope.

      Actual type annotations:

      p = pointer (not likely to change unless all code using it changes)
      n = integer counter (usually int, but long or char could work also)
      str = string (not always used, and I know MFC/Win32 uses sz, but pretty clear)

      Combine these, and I know that m_pObject is a pointer to a object of some sort which is a member of the current class.

      That's basically it. A few characters that help convey intent, which is I believe the purpose of a good variable name. These examples are invariant to minor changes in type, such as switching float to double.

      I would agree there are bad emples of Hungarian notion, notably by Microsoft. I really hate the lp* notation. Only microsoft would feel the need to declare a whole new type that is simply a pointer to another type.

    35. Re:Hungarian Notation by Greyfox · · Score: 1
      Interestingly enough, every piece of code I've ever looked at that used hungarian notation was atrocious. They were either awkward in their flow, badly designed, poorly documented, just plain wrong or all of the above. In at one case, a programmer using hungarian notation apparently did not understand that in C, strings are null-terminated. I don't know how exactly you code pszStringName without understanding "pointer to zero terminated string" but she did it.

      I'm not saying that all programmers who use Hungarian notation are piss poor coders, just that all the ones that I have ever encountered have been.

      --

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

    36. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      Isn't that Charles Petzold, are you sure?

    37. Re:Hungarian Notation by AndrewHowe · · Score: 1

      Yeah, that's pretty much what I use only for some reason I used to use G for globals rather than g_ (I add a _ if the object has no other prefixes, so GpObject or G_Object), and it's sort of a bad habit I never bothered to shake off. Also L for file scope stuff (static [deprecated] or in an anonymous namespace). I always use _ with m and sm, which is inconsistent I guess, like one of my colleagues uses mpObject and it drives me crazy. Oh well. Maybe I'll change... I've changed my indentation style over the years.
      The worst thing about the Microsoft lp thing is the l. Originally it meant "long", as in a far pointer (32 bits). 'f' was already used for float. They should have knocked that one on the head way earlier.
      Yeah, when I see LPDIRECTDRAWSURFACE I just write IDirectDrawSurface*.

    38. Re:Hungarian Notation by GooberToo · · Score: 4, Insightful

      I remember reading DD mag years ago. They had a series of articles on why HN sucked. For me, the ones that really stuck in my head were:

      o When properly used, it created many ambigious meanings, which defeated the whole purpose of using it. Most of these ambiguities centered around various pointer constructs, which is supposedly one of the major areas which it attempts to address. Basically, HN is broken right out of the gate.

      o It often required more typing, which slowed development and increased typo error rates. Which, in turn, required another round of typo fixing and compile attempts.

      o While HN provides "instant" type information, it's often harder to read, especially for complex types, requiring much longer than an "instant" duration to comprehend or extract the information that it's attempting to provide.

      o Maintaining code is very problematic. Changing the type of a variable may result in changes in countless files. This increases development time. It also causes a lot of garbage to be created in RC logs, which may of otherwise required changes in as little as one file.

      Long story short, the disadvantages of HN do not justify what is basically a single reward, when it actually works. Basically, there are smart programmers that use good names which help convey the same types of "instant" type information and then there are bad programmers that insist on using HN.

    39. Re:Hungarian Notation by slamb · · Score: 1
      it should be easy to strip off the type prefixes when editing code (for those who don't like them) and add them back, since they can be automatically determined from the variable's type.

      That's a good idea. More generally, I think we should be using editors (or IDEs) which know more about the code we are editing. In addition to the completion features (that Eclipse has, for example), they can add annotations like this. We can remove the implicit assumption that what we see, type, and store should be exactly the same.

    40. Re:Hungarian Notation by Ed+Avis · · Score: 1

      Of course, if everyone were using an intelligent editor, then moronic conventions like Hungarian wouldn't be necessary, because your editor could instantly tell you the type of any variable and perhaps display it in small letters above the variable name at all times.

      --
      -- Ed Avis ed@membled.com
    41. Re:Hungarian Notation by AndrewHowe · · Score: 0, Flamebait

      Dr. Dobbs is a cool mag, but I try not to let it do all my thinking for me... On to your points:

      Ambiguous meanings? I think you will find that the (pretty small) subset of HN that most people use has an unambiguous grammar.

      More typing? In fact with Intellisense it often requires less typing, because the scope is narrowed down within the first character or two.

      "Harder to read"? Subjective. Like I said it's something like grammatical agreement. If I say a verb "frobbed" you know I'm talking in the past tense (loosely speaking :). It doesn't take you any longer to read and understand than "frob". HN takes advantage of this innate linguistic skill. Honestly, when I say I'm fluent in HN, that's exactly what I mean. I'm not saying it's definitely a skill everyone should learn, just that I and many others find it useful. It's also more useful in some languages than others, just as different human languages use different inflection schemes.

      Maintaining code is very problematic? That may be some peoples' experience but I have to say it hasn't been mine. Changing the type of a variable often has effects that need to be dealt with anyway, and of course modularisation helps to reduce the scope of the problem.

      Therefore I respectfully reject your first conclusion. Your second is just unsustainable hand-waving and generalisation, and isn't worth addressing, save to say that you have left out two categories of programmers.

    42. Re:Hungarian Notation by Tony+Hoyle · · Score: 1

      Actually sz = Zero terminated string (or pointer to char), and str = STL string (object).

      Integer is usually 'i', unless you're using it as a counter then it becomes 'n' (this is unrelated to type - an size_t nCount is the same as int nCount).

      The problem with hungarian notation though is nobody can really agree what to use... We had a war between two developers once changing all the ints to 'n' and another one changing them all back.

    43. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      Or perhaps just to the side? Oh yes and in a nice unambiguous but condensed form. Oh wait...

    44. Re:Hungarian Notation by slamb · · Score: 1
      Of course, if everyone were using an intelligent editor, then moronic conventions like Hungarian wouldn't be necessary, because your editor could instantly tell you the type of any variable and perhaps display it in small letters above the variable name at all times.

      That's what I mean by annotations. Are you saying that you know of an existing editor that does this? Hmm. I'm still using vim. Maybe I need to look around at other editors again. I'd like one that:

      • is relatively lightweight. I like to go to the commandline and type "vim blah" and have it instantly pop up. I don't like the emacs attitude that you do everything within the editor.
      • Can decouple what I see, type, and store in interesting ways. (Which requires knowledge of the languages I edit: C++, Java, Python, XML (XSLT, XHTML), SQL, etc.) Ways like syntax highlighting, smart indentation, folding, completion, annotations, etc.
      • has some economy of movement like vim. I love that it doesn't require me to move between the keyboard and mouse often, and that it doesn't require me to contort my fingers in bizarre ways (emacs)
      • supports collaboration features (like SubEthaEdit).
      • is configurable: I can tell it style conventions for various projects, templates for new files in those projects, etc.

      I've yet to find anything that does all of that. vim is the closest I've come.

    45. Re:Hungarian Notation by Anonymous Coward · · Score: 1, Insightful

      If you change the type of a variable, you should look at every place where that variable is used and consciously confirm that the code is still valid. This is true whether you use Hungarian or not. It is not a good thing to be able to change a variable type in a header file and leave it at that. Every module that is changed then has a newer date and will be flagged for a new round of testing. Facing all this may make you decide that you don't want to change a variable type and make you think a bit harder about the original decision.

    46. Re:Hungarian Notation by arkanes · · Score: 1
      I'll give you a handy example of the ambiguity. Take the Win32 API, which is probably the primary source of Hungarian notation. There's a whole slew of handle data types, most of which are imcompatable. For example, the HWND (handle to a window) and the HDC(handle to a device context). These are often used in the same places, but are created and released using different functions, and mixing them is Bad(tm). Nevertheless, they both (always!) have the same prefix(h), and exactly what handle you're using is referred to using the variable name (generally hWnd and hDC). The h is totally redundant and provides _no_ information here.

      As for me personally, I've never seen the need for hungarian. I generally write short functions, its exceedingly rare that the declaration of a variable is not on the same page that I'm using it. It's also conceptually close, so I can easily keep all the variables in the current scope in my head. I've got automated tools that provide both mouse hovers and a dynamic list of symbols in scope, so I'm a click away (at most) from the correct type on the off chance that I become confused. In all honesty, I don't think this has ever happened to me, at least when working on my own code. Similiarly, even when working through other peoples code, having an accurate type definition handy instead of relying on the notation, which is subject to error just seems vastly more reliable.

    47. Re:Hungarian Notation by AndrewHowe · · Score: 1

      Right, hDC is a DC and hWnd is a window. There's no ambiguity. Not sure what your point is? It's not supposed to completely encode the type of the variable. It's a little sugar just like syntax colouring. Obviously you need domain-specific knowledge to stop yourself from passing hWnds as hDCs, but C++ can help here by offering stronger typing (eg. MFC's CWnd, CDC wrappers). But you would know something was wrong if you were trying to pass a pointer instead of a handle. You say the 'h' is redundant, well excuse me but duh, that's the whole point. I mean, you could go and look up the declaration, right?
      If you don't see the use for it, don't use it. We're done.

    48. Re:Hungarian Notation by Arkaein · · Score: 1

      I agree that it's important for consistent notaion to be used throughout a project, but as long as someone declares the conventions for the project and enforces them, there shouldn't be a problem.

      The two developers you mention shound like they just needed a manager or project leader to slap them both down, delare that THIS is the way our variables will be named, and tell them to stop wasting their time on petty games. This kind of thing could happen any time certain coding conventions are used that are not actually enforced either way by the language, and is not a problem with Hungarian notation.

    49. Re:Hungarian Notation by Matchstick · · Score: 1
      Basically, there are smart programmers that use good names which help convey the same types of "instant" type information


      This is the spirit of HN. It gives you an unambiguous grammar for constructing those "good names". This is similar to having coding conventions that standardize verbs and nouns (eg prefer "foo_num" to "foo_count")

      The "type changes" argument is rather ridiculous -- it's like complaining that refactoring makes you touch a lot of files. A type change isn't a trivial operation and shouldn't be treated as such. One could also ask what is so special about a name chosen by a smart programmer that makes it somehow more resistant? Perhaps because it specifies semantic information instead of raw type information. IMHO this is a smart thing to do in Hungarian. Instead of "int iNumFoo" and "Foo* pFoo", use "nFoo" and "aFoo".

      The reward of HN is that it gives you a consistent way to encode common sorts of semantic information, while separating it from the more useful content of a variable name. It is similar to the sort of thing as what we used to do with function names in the days before we knew we were being object-oriented:

      naive:
      ReadTexture(T*)
      DownsampleTexture(T*)

      hungarian:
      Texture_Read(T*)
      Texture_Downsample (T*)

      Long story short, there are smart programmers who actually think about why they do the things they do, and there are bad programmers who are parrots.
    50. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      btw I was wrong about 'f', it used to mean 'flag' (i.e. boolean) in the really old days. Now people tend to use 'f' for 'float' and 'b' for 'bool'. 'b' used to mean 'byte' but now that's 'c' or 'ch'. Yeah I know char!=byte. Like I said, it's not really so much about types, more about scope and semantics.

    51. Re:Hungarian Notation by B.D.Mills · · Score: 1

      It makes variable names butt ugly.

      Especially the single-character variable names.

      --

      The only thing necessary for the triumph of evil is for good men to do nothing. - Edmund Burke
    52. Re:Hungarian Notation by lifeless · · Score: 1

      And you missed it being completely unusable with any 'generic' programming - i.e. c++ templates. Just what class is 'subject' again? Oh, and there is also a rather annoying aspect where you are using class names like VehicleComposite (or vehicle_composite for you CamelCase allergic folk). Hungarian notation is IMO only useful for code too simple to need it.

    53. Re:Hungarian Notation by Ed+Avis · · Score: 1

      No, sadly I don't know of any editor that can tell you the type of any variable straightaway. I suppose for strongly typed, interpretable languages (eg Haskell) you could run the interpreter in a subprocess, make sure it is up to date with the program text, and send it commands like ':type expr'. Or perhaps the editor could have the language's typing rules built in. But that gets really hairy for something like C++. The answer is maybe to have the editor and compiler in the same program, as if Emacs were not bloated enough already. (Emacs has good Lisp support, of course, but Lisp variables don't have a type - values have types but variables do not.)

      FWIW, if you use gnuclient then Emacs can pop up instantly; there is a single editor which stays open and you can load files into it from the command line. Also look at the various vi emulation packages like viper, which let you have the hjkl key movement and other vi features. (Some people even recommend learning Emacs+viper as your first editor, although I think this is a bit batty.)

      --
      -- Ed Avis ed@membled.com
    54. Re:Hungarian Notation by Ed+Avis · · Score: 1

      The point is that since the prefix can be mechanically determined from the type then this is work the computer should be doing. I'm not that bothered about where it is displayed or the aesthetics of having 'lpsz' prefixes (although there are arguments against that, of course). More that I would prefer the computer to do this kind of work. At a minimum, there should be some checker program which reports cases where a variable's type differs from the prefix used.

      --
      -- Ed Avis ed@membled.com
    55. Re:Hungarian Notation by Rick+and+Roll · · Score: 1

      Yeah, but in Perl they do more than just serve as a reminder. They actually have different meanings ($_ and $1 are related, but they mean different things)

    56. Re:Hungarian Notation by Barryo_Stereo · · Score: 2, Insightful

      Since I haven't yet seen my main objection to HR posted, I'll add it in for the archives: What do you do first and most when reading code? Try to figure out what is happening at that point. The first thing you should run into is a variable name that is descriptive and will help this out. After all else fails, when debugging, you would check the type. However, HR is backwards in that the type appears prominently first and slows down the normal understanding of the purpose of the code. Not a big deal, but one more thing to make debugging more difficult.

    57. Re:Hungarian Notation by Anonymous Coward · · Score: 0
      I really hate the lp* notation. Only microsoft would feel the need to declare a whole new type that is simply a pointer to another type.
      I know this is probably too late for the anyone to notice, but I feel the need to respond anyway. There a couple of good reasons for making pointer typedefs:
      • They help you avoid mistakes with multiple declarations. (e.g. the newbie mistake "struct foo* x, y;" instead of "struct foo *x, *y;")
      • It's easier to search for a single identifier than an identifier and an asterisk. (e.g. LPFOO is easier to find than "struct foo *". There's no telling where the asterisk will end up -- it could be on another line, or it could be in something obscure like "struct foo bar, *tmp;".)
      Note: I personally prefer "foo_ptr_t" to Microsoft-style "LPFOO".
    58. Re:Hungarian Notation by GooberToo · · Score: 1

      Exactly!

      Welcome to the clue train!

      When HN isn't ambigious, you more than likely already have everything in scope and the code in question is very simplistic. So what did it buy you? A merit badge saying that you're good at using worthless concepts. Heh. Extra typing?

      I'm sorry, I'm really not balking at you, it's just that it constantly amazes me that so many brain-dead programmers insist there is value when it's obvious, there isn't any. The really sad thing is, it's usually brain-dead MS programmers that have no clue to begin with that insist there is value in using HN. Oh well. Most will grow up. Many, assuming they actually have some skill, will figure out that MS is a horrible development platform anyways, a lookg to move to another platform, if possible.

    59. Re:Hungarian Notation by GooberToo · · Score: 1

      Except that a type change often is a trivial operation. HN forces it to never be a trivial operation. Spoken as someone that is so deep in HN-BS, you can no longer see where realiity begins.


      naive:
      ReadTexture(T*)
      DownsampleTexture(T*)

      hungarian:
      Texture_Read(T*)
      Texture_Downsample (T*)


      Or, as a real programmer with even half a brain would of done. And, it even makes sense:

      TextureRead( T* )
      TextureDownsample( T* )

      So how is your example holding water? Seems to me, I added an "_" for no return. Looks like classic HN worthlessness. Typical. Extra typing for no return.

      Long story short, there are smart programmers who actually think about why they do the things they do, and there are bad programmers who are parrots.

      I assume you stated this because you're wanting a cracker?

    60. Re:Hungarian Notation by GooberToo · · Score: 0

      I wish someone had a reference to the series of articles they did. They did an excellent job of highlighting the stupidity that is HN. How, you might ask? Well, they took complex code and converted it, to the letter, to HN. They then gave it to HN experts and asked them to decipher the types, without actually giving them the types. In pretty much every case, the wrong type information was obtained. Why? Because HN is very ambigious for complex constructs. When HN isn't ambigious, the code and the constructs are usually so simple, they add no value. Furthermore, there is no value in using HN where the variables are completely in scope and visible to the programmer.

      There just is not a good reason to use HN unless you just love extra typing, never suffer from typos, enjoy reading longer variable names which provide little value, or just use it as a form of obfuscation.

    61. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      lol, stop mastrubating.

    62. Re:Hungarian Notation by sorak · · Score: 1
      o When properly used, it created many ambigious meanings, which defeated the whole purpose of using it. Most of these ambiguities centered around various pointer constructs, which is supposedly one of the major areas which it attempts to address. Basically, HN is broken right out of the gate
      1. As for point number one, hungarian notation may create ambiguous meanings with pointer to pointer constructs, but how would a well named variable get around that without violatng rule number two.
      o It often required more typing, which slowed development and increased typo error rates. Which, in turn, required another round of typo fixing and compile attempts.
      2. Good point, but if you plan to put any identifying information in the variable name, then you're going to run into the same problems mentioned under your first and fourth bullets.
      Also, is it that time consuming to have to fix a few typos and then recompile? Your compiler will probably direct you to the line where the typo occurred (unless you're using one of the languages that does not require you to declare variables)
      o While HN provides "instant" type information, it's often harder to read, especially for complex types, requiring much longer than an "instant" duration to comprehend or extract the information that it's attempting to provide.
      3. I agree with you 100 percent on this point.
      I remember reading DD mag years ago. They had a series of articles on why HN sucked. For me, the ones that really stuck in my head were: o Maintaining code is very problematic. Changing the type of a variable may result in changes in countless files. This increases development time. It also causes a lot of garbage to be created in RC logs, which may of otherwise required changes in as little as one file.
      4. I agree with you, but if your variables are to have any "type identification information" in their names, then this problem will occur regardless of the standard (or lack thereof).
      Also, a decent IDE, or even a decent word processor will provide you with a replace function. You're talking about a fifteen minute job at most.
    63. Re:Hungarian Notation by svott · · Score: 0
      I make it a point to never change the type of a variable. If you do, you're going to break something somewhere. Instead use a different name for the new type. Then the compiler will tell you about every usage of that variable where you forgot to verify the impact of your type change.

      And hey, if you're using Hungarian Notiation, just change the wart and you're set!

      scott (unashamed Hungarian Notation supporter)

    64. Re:Hungarian Notation by llefler · · Score: 1

      Hungarian Notation is the most horrible concept ever because it always ends up lying. I bet that's why MS is so slow to fix buffer overflows.. in order to change a variable from an int to a long is an arduous process.

      Sweet, Hungarian Notation is responsible for buffer overflows. And here I thought it was because they were using a compiler that doesn't enforce bounds checking (after all, that's a feature) and the programmers were too lazy to do it themself.

      Of course, maybe it's taking so long because the programmers are trying change ints to longs. They should learn what it is they are trying to fix first.

      Buffer Overflow

      --
      It is amazing what you can accomplish if you do not care who gets the credit. -- Harry Truman
    65. Re:Hungarian Notation by drakaan · · Score: 1

      I'll give you a handy example of the ambiguity. Take the Win32 API, which is probably the primary source of Hungarian notation. There's a whole slew of handle data types, most of which are imcompatable. For example, the HWND (handle to a window) and the HDC(handle to a device context). These are often used in the same places, but are created and released using different functions, and mixing them is Bad(tm). Nevertheless, they both (always!) have the same prefix(h), and exactly what handle you're using is referred to using the variable name (generally hWnd and hDC). The h is totally redundant and provides _no_ information here. Uhh...maybe you like not knowing which window handle is which in your code, but generally, hWnd and hDC would *be* the prefixes I would use..."hWndToolbar" is an example of such a name. I know that it's a handle to a window that has something to do with toolbars...how is that ambiguous? If you ever have to write code in vi or notepad, you'll be less irritated about well-named variables and hungarian notation. Redundant? Well, if you are the only person who will ever see your code, and you know what you meant when you named that same handle "tBar", great...I just have the feeling that I'd have to do some serious investigation to be familiar with what's what in your code if I were looking at it (me not being assured of having the benefit of the automated tools you mention). What exactly are you bitching about, or are you just voicing the underdog side of the argument?

      --
      "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
    66. Re:Hungarian Notation by AndrewHowe · · Score: 1

      What part of "the subset of HN that people tend to use can be described with an unambigous grammar" don't you understand? I wish, too, that someone had a reference to the FUD that you mention, so I could thoroughly debunk it.
      Extra typing? Nope. Never suffer from typos? Nope. Etc. Etc. You fail. Next!

    67. Re:Hungarian Notation by GooberToo · · Score: 0, Flamebait

      LOL!

      Very, very sad.

      Hopefully one day you'll wake from your coma. In the mean time, we all pity you. Well, not true. Not all of us. Some of us will just laugh and point.

    68. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      LOL, so uhh, you've run out of arguments and it's time for the ad hominem phase. Oh and trying to make it look like I'm all alone and you have all the support. Nice try, but you fail again. Wanna quit now?

    69. Re:Hungarian Notation by spongman · · Score: 1
      while not strict hungarian, a common variant is to use the 'c' prefix for counts. for example:
      int cThings = 42; // 'count of Things'
      or
      int cchName = strlen (szName); // 'count of chars of Name'
      and i tend to reserve 'i' for indexes. for example:
      for (int iThing = 0; iThing < cThings; iThing ++)
      ProcessThing (rgThings [iThing]);
    70. Re:Hungarian Notation by ahdeoz · · Score: 1

      Hungarian Notation doesn't "force" anything (unless someone wrote a preprocessor to do it, which somebody probably has.) That's the problem! Hungarian Notation is ambigous, error prone, and entirely up to the programmer to enforce.

    71. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      Instead of using prefix characters to help me remember the type of my variables, I just declare all of my variables to be void pointers, so that I'll know what they are.

    72. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      o Maintaining code is very problematic. Changing the type of a variable may result in changes in countless files. This increases development time. It also causes a lot of garbage to be created in RC logs, which may of otherwise required changes in as little as one file.

      Yeah. It's too bad there aren't any utilities which can easily substitute the name of a variable with another across multiple files. And, dude, get with the program already. RC comes in bottles, not logs.

    73. Re:Hungarian Notation by Trejkaz · · Score: 1

      But with those newer refactoring tools, they also present you enough information in the user interface that you don't need to use stupid Hungarian notation to figure out if something is a String.

      If you hover over a variable called "name" and it says "type: String", it's pretty obvious what it's called without having to rename it to "lpszName".

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    74. Re:Hungarian Notation by Trejkaz · · Score: 1

      It's pretty ironic that people use variable names like m_var, sm_var and g_var, and then whinge about Ruby having var, @var and @@var.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    75. Re:Hungarian Notation by Trejkaz · · Score: 1

      consider the case when you have variable names with similar starting/ending.

      Consider using the "Match whole word" checkbox.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    76. Re:Hungarian Notation by GooberToo · · Score: 1

      Yes, I do want to quit. When idiots like you ignore facts and common sense, it's impossible to make forward progress. I clearly stated facts and opinions. You fired back with crap opinions. I fired back with what you deserved. I have a very, very short temper when it comes to dolts, idiots and morons. People that make an effort, I'm happy to engage in debate or conversation. Idiots, dolts and morons, on the other hand, I'm happy to hand them what they deserve. When people, such as your self, are mired in stupidity, it's impossible for people like you to ever see anything else but stupidity. At least you eat your own dog food.

      You then go on to mod me as flamebait.

      You really are a real loser. I'm can honestly say I'm glad I don't know you in real life. Simply pathetic.

    77. Re:Hungarian Notation by GooberToo · · Score: 1

      You are so full of crap!

      What an obvious troll and general moron you are.

      Get a life and grow up your turd.

    78. Re:Hungarian Notation by Anonymous Coward · · Score: 0

      I'm not an idiot. You think my opinions are crap, well it's up to you to show that they are crap. You can't just call them crap and expect that to stick. You need to formulate an "argument".
      You need to start realising that not everyone else in the world is stupid. Get over yourself. Other people have different ways of doing things and you are never, never, going to have everything the way you want. The way you're criticising the way I and many others code is just childish, frankly.
      I had nothing to do with modding you as flamebait. Perhaps you just deserved it.
      Hehehe, more ad hominem arguments. If you want to debate the issues properly, go ahead. I don't give a crap about your stupid namecalling. I'm secure enough in my life that I don't need to worry about such trivialities.

  52. Building code from specification-Distillation. by Anonymous Coward · · Score: 0

    Well as I pointed out elsewere. Software unlike engineering is more open-looped. First internally there's not enough feedback to correct most of the errors (usually because of money). Second when it leaves the place of it's production there's no review process for fitness of purpose. this is one of the reasons OSS works in that no matter how imperfect the original design is. There's a constant review and refining process going on the bring it in line with community standards. Also maybe software creation could learn something from book creation. War and Peace wasn't created fully formed, but through a refining process from a general description to the final manuscript. And last we need to get the trees from our sight, and gaze over the forest.

  53. Programming = Art by HarveyBirdman · · Score: 4, Funny
    Oh it *is* an art.

    Sadly it's the type of art where they paint with feces.

    --
    --- Ban humanity.
    1. Re:Programming = Art by 1iar_parad0x · · Score: 1

      No, that kind of art gets grants.

      --
      What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
  54. SCO Press Release by kallisti777 · · Score: 0

    LINDON, Utah, Mar 20, 2004 -- The SCO Group, Inc. (Nasdaq: SCOX), the owner of every operating system dammit and a leading provider of Linux-based solutions, today announced a lawsuit to be filed against Microsoft Corporation for its alleged violations of its UNIX software agreement with SCO.

    President and CEO Darl McBride addressed reporters from outside his bunker in Provo: "We have reason to believe that all existing versions of Microsoft Windows contain SCO intellectual property, and that this information was obtained by illicit means from the garbage cans at the Computer Science Center".

    Bill Gates was too busy laughing to be reached for comment.

    (This is only funny if you RTFA, and maybe not even then).

    --
    Vanya's Law: "In any culture without irony, fart jokes will be the highest form of humor."
  55. Kind of disappointed-Sand Castles. by Anonymous Coward · · Score: 0

    "Software is fragile and implemenation is difficult. "

    I've stated elsewere that our software will be tolerant when our hardware is. If our software is fragile, it's because we've built upon a bed of sand.

  56. Unrealistic expectations (Re:From the soapbox) by BobaFett · · Score: 2, Informative

    Unrealistic expectations? Yes. Of the management? That's the least of our problems. The "common sense" expectations for software are vastly unrealistic. Modern software tools are incredibly complex systems, both in the number of internal "degrees of freedom" and in their interaction with the environment. Yet they are expected by the public at large to function properly under circumstances which could be more different from what it was designed for than, say, driving a Ford across the lake (why is nobody complaining that Ford was lax in their testing because they only tested their cars on roads, which, after all, cover a tiny fraction of Earth surface?)

    At the same time, software is perhaps the only industry where everyone is a friggin expert. Most people (in the US anyway) happily pay someone $25 to change their oil. How many are willing to pay someone $25 to install a new sound card in their PC and load drivers? And, if you look at the complexity of interactions between parts of the system and open-endedness of the interface with the environment, oil change is downright primitive compared to sound card change. But no, for some reason it should be "easy". Look at everyone who enables "expert mode" on their software, while even "novice mode" presents more controls than a smal airplane.

    And the only people who actually understand the complexity of the software, the software engineers, somehow let themselves become convinced that software really should allow millions of users to do thousands of things they want, the way they want, all at once, and be "easy" at the same time.

    1. Re:Unrealistic expectations (Re:From the soapbox) by secolactico · · Score: 1

      At the same time, software is perhaps the only industry where everyone is a friggin expert. Most people (in the US anyway) happily pay someone $25 to change their oil. How many are willing to pay someone $25 to install a new sound card in their PC and load drivers?

      With the newer systems and OS, installing a sound card is a simple plug and play affair, and still, I know many people who prefer to pay someone to install it.

      An oil change, on the other hand, sometimes involves tools the user might not have, and a mistake might mean a 30K car seriously damaged (sometimes with damages to third parties).

      Plus, some people just don't like to get their hands dirty (I still haven't managed to get that damned filter out without splashing myself).

      --
      No sig
  57. how fucking ironic by Anonymous Coward · · Score: 0

    the article is called "programming stinks" and you can't even read the article unless you have Flash-root-my-computer-Media installed.

  58. reinventing the wheel by Anonymous Coward · · Score: 0

    It's not sexy, but a fact of life is that much of what programmers do is maintain code that somebody else wrote. By now, a lot of very smart people have worked out the details of how a wheel should be designed. If everybody uses that standard wheel, then anybody can put a new tire on it. But, if you think you know better, go ahead and make yours non-standard. Just get used to people who come behind you saying unkind things about you.

  59. allow me to "drop some science" on this mofo by Anonymous Coward · · Score: 0

    DO

    NOT

    USE

    PERL

    THREADS

    thank you, and good night!

  60. So....God's eye view of code. by Anonymous Coward · · Score: 0

    Maybe a close coupling between code and higher-level representation? So how does a memory leak look in UML? What about an undeclared variable? Or the code block that never gets executed?

    A representation of code that harnesses the strong points of our visual system. Maybe even audio. "Hey Bob! Does this code sound odd to you?"

    1. Re:So....God's eye view of code. by stephanruby · · Score: 1
      Maybe a close coupling between code and higher-level representation?

      Yes. One doesn't even UML. Having the person who wrote the code explaining it is usually enough.

  61. Things not mentioned in the article by Anonymous Coward · · Score: 0

    1) User expectations for software are a lot higher than they were when the fossils in the article were in their prime. Give me a break, what wasn't better than DOS 3.1?

    2) Software companies need to keep Wall Street happy by making their deadlines, which means they are willing to ship buggy code. Does that mean programmers aren't as good as they used to be?

    1. Re:Things not mentioned in the article by Anonymous Coward · · Score: 0

      Give me a break, what wasn't better than DOS 3.1?
      Well, I can think of a couple... Windows 1.0, 2.0, 3.0, 95, 98, ME, NT, 2K, XP, and so on. You see, good ol' DOS didn't crash very much... (sure, buggy programs did, but the OS was stable enough that DOS was used in some nuclear power plants). Stick any version of 'doze around something nuclear and see if you don't end up with a Chernobyl...
      I agree with point #2 anyway. Back in the day, research computer scientist (the only guys who really coded) didn't worry much about market windows and such.

  62. You're right. And yet... by moviepig.com · · Score: 1
    Sooner or later somebody doing this - anonymous or not - is going to get Slasdot sued ... It's a copyrighted piece of work

    Yes, but the suit would ask for damages. At this point in Salon's evolution, I suggest that reprinting this (fairly entertaining IMO) article serves only to enhance Salon's reputation as a quality publication.

    Illegal and arrogant by the reprinter? Sure. Damaging? Less sure.

    (Of course, when Salon can argue that its site-admissions are materially down because of rampant infringement, then the horse trans-chromatizes...)

    --
    Seeing bad movies only encourages them. Watch responsibly
  63. You have to pay $35 for crossover by Anonymous Coward · · Score: 0

    The ads require you to have the crossover plugin for flash support, so yes you still have to pay to visit the site, either to salon or codeweavers.

    1. Re:You have to pay $35 for crossover by Anonymous Coward · · Score: 0

      This is bullshit. Isn't there a working native plugin for Linux, from Macromedia?

  64. Why an old C64 hack thinks programming sucks by MagikSlinger · · Score: 5, Insightful

    I hate programming now. I loathe the thought of it. Not because I hate the act of programming, but the systems I have to work with.

    Sure, in the nice old days, the C64 and IBM PC were fairly easy to code for, but they also gave you very little bang for the buck. The nice thing was a couple hours of programming could get something nice out.

    Now, it can take me a couple hours to do even a simple notepad application from scratch. I'm forever spending lines of code to fill in structures or respond to all the events an API wants.

    The computers got more powerful, and the APIs also got more powerful, but now I spend so much time filling out basic structures that I don't need. I'd rather a lot of that stuff was user configurable or stored in an XML file somewhere. I don't want to have to know about allocating & positioning fonts! I just want to dump it in a nice scrolling box.

    It's like a bureacratic nightmare writing code now. Sure, there's MFC, etc., but that's like the "easy" tax form. The moment you want to do just one thing different, you're back to square one. And the learning curve, sheesh!

    That's why I like projects like XUL. We've made the APIs so programmer centric, that I can't breathe anymore. I just want to code the important stuff then let someone else make the GUI pretty.

    --
    The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
    1. Re:Why an old C64 hack thinks programming sucks by Anonymous Coward · · Score: 0

      hells yeah. fuck all that bull shit. that's why i stick to Perl: coding is fun again. and just like you could peek and poke in basic back in the day, now you can write some .xs C code to do whatever perl can't do (or do well). fuck all that java bull shit or whatever the fuck they try to cram down your throat now so you can fit in their neat little pigeonhole.

    2. Re:Why an old C64 hack thinks programming sucks by soft_guy · · Score: 4, Interesting

      From your post, it sounds to me like you are doing win32 programming. It also sounds like you are trying to use a bunch of those calls that Microsoft has that end in "ex".

      You're right. Those damn calls have so many goddamned parameters and complicated structures to fill out, it feels like you're going on a snipe hunt every time you want to make a system call.

      Try Qt. Its not quite as efficient as win32, but for GUIs, it generally doesn't matter. For other things, the key is to make as few system calls as possible and instead rely on the C/C++ standard libraries.

      I'm lucky. I get to write commercial software for MacOS X using Cocoa. Still, the bugs I have are mostly due to having to make system calls. When I'm writing code to hold and manipulate data using the STL, I have very few bugs. Where I run into trouble is when I want to use something like Quicktime or other system APIs where I don't really know what the calls are doing and there are a lot of undocumented gotchas.

      --
      Avoid Missing Ball for High Score
    3. Re:Why an old C64 hack thinks programming sucks by HeghmoH · · Score: 1

      Jeez, you need to find some new APIs, they did get more powerful, you just somehow missed the boat!

      A couple of weeks ago, I got back from a trip and had a bunch of digital photos I wanted to sort out. None of the program I have did exactly what I wanted; I just wanted to be able to quickly go through all the photos and delete the ones I didn't like, and be able to rotate them. So I wrote a program to do it for me. Using Cocoa on Mac OS X, it took about 40 minutes. Cocoa is very well designed and extensible, so it doesn't suffer nearly as much from the problem you describe where wanting to do something different puts you back to square one. It certainly makes it easier to do things "the right way" (i.e. the way Apple intends you to do it) but it has plenty of facilities for doing things the wrong way, too.

      Cocoa is somewhat unique in this aspect, but not completely; I don't think it is the only API that doesn't suck, by far.

      --
      Mod down posts with a "Free Mac Mini/iPod" sig, they're spam!
    4. Re:Why an old C64 hack thinks programming sucks by Anonymous Coward · · Score: 0

      It is situations such as this, where you find
      that you are writing the same thing again and
      again with only certain parts changing that
      Lisp macros really shine.

    5. Re:Why an old C64 hack thinks programming sucks by Arkaein · · Score: 1

      Qt is good. Also, the above poster should try an actuall HLL like perl or python. These definitely fit the mold of "a couple hours of programming [can] get something nice out".

      I've done my share of Win32/MFC programming, and will attest that it's not a lot of fun. Look to some of the modern languages and toolkits, and you may find a happy merger of the productivity of C64 programming and the polished results expected of modern software.

    6. Re:Why an old C64 hack thinks programming sucks by MagikSlinger · · Score: 1

      Cocoa maybe nice, but I don't get a choice about what I use at work. Although, if it is anything like NeXTStep (which was very pleasant to program in), I can believe you.

      --
      The bitter lessons of a veteran coder: http://bitterprogrammer.blogspot.com
  65. Last bastion of the tired/lazy/stupid/damned.... by MagicDude · · Score: 2

    One reason I believe that programming is bad these days is that the market is flooded with poor programmers. At my school, many freshmen come in with lofty goals about being computer systems engineers, or electrical engineers, or something like that, but they get their little freshmen butts kicked by the carriculum and end up dropping engineering. Most people I've seen this happen to end up switching to Computer Science or IT. Combine these people with those who came into college to do CS or IT, and you have a glut of people entering the market trying to score programming jobs. And some of these people are those who kinda just fell into it with no real interest other than to graduate college. I think CS carriculums should be more intensive so as it isn't used as a fallback major for those who can't hack it in other fields.

  66. In some cases, getting better and better... by BrianMarshall · · Score: 2, Interesting
    I love to program - it is a craft and I love to do it well. I started with BASIC and FORTRAN in a high school computer club (with time donated by the local technical college), and I wrote FORTRAN for most of the '80s.

    The thing was, even in the late 80's, to mention that a particular approach would be 'elegant' was the kiss of death; it meant that you were amusing yourself at the company's expense rather than doing your job. There was still a strong desire in big companies to control programming with methodologies and basically attempt to do things in such a way that talent was not required. It was like the military - they don't/didn't want talent; they wanted interchangeable programmers that could be put onto any job.

    This is undoubtedly still true today in many cases.

    But, more and more, companies want senior talented people. And more and more, companies realize that when a talented programmer claims to have an elegant solution, it means simple, reliable and fundamentally sound.

    More and more, companies are realizing that any idiot can write complicated software; it takes a really good programmer to write a simple, sound solution.

    Of course, I am talking about real programming here, not dragging boxes around on a form and putting 2 lines of code behind a button.

    --
    "When the going gets weird, the weird turn pro" -- HST
  67. Simonyi's Intentional Software Explained by Vagary · · Score: 3, Informative

    If anybody else goes to Simonyi's company and still can't figure out what they're talking about (mostly because it's vapourware at the moment, I believe), may I direct you to this Wiki. It turns out that he thinks source transformation tools will change the world.

    I'm told that my university is one of the leading source transformation research centres in the world, but the only interesting things they're producing right now are for understanding legacy systems. So yes, there's probably a lot of money in source transformation, but it's also boring as hell.

  68. No Silver Bullet by SewersOfRivendell · · Score: 1
    Probably not. This is the man whose chief prior programming innovation was Hungarian Notation, one of the best code obfuscation tools ever devised.

    Fred Brooks said it best: There is no silver bullet. Programming is hard. If Simyoni can come up with a tool to write kernel drivers for users based on a general English description input of the task given by voice command, I'll be more than happy to take off my badge and go write screenplays or something.

  69. that is the longest vapid post I've seen recently by Anonymous Coward · · Score: 0

    Seriously, it says almost nothing. What does this have to do with programming sucking?

    There are two kinds of people in this world, those who divide people into groups, and those who don't.

  70. Re:Interstitial Ads v. "have to pay" v. reg-only . by Stinking+Pig · · Score: 1

    Let's not forget that the folks at Salon use and develop the open source CMS system Bricolage (homepage, Salon tech notes on their choice, Linux Journal article, Another).

    They're not exactly the bad guys around here.

    --
    "Nothing was broken, and it's been fixed." -- Jon Carroll
  71. and this is why I hate copyright by Anonymous Coward · · Score: 4, Insightful

    Admittedly it was outside of the letter of the law to post this outside of its home site. But this is the internet. The expectation is to be able to link to another part of someone else's site so that we have this inter-related "web" of information. The commercialization of the internet with broadcast paradigm limitations destroys the peer-to-peer web-like nature of the ... of the web. Linking was supposed to be the proper attribution format for the web. The salon web site (and several other web sites) don't really allow this any more. The are definitely resources available through the internet, but they are no longer really part of the web, as they have chosen not to play by the rules and guidelines of the medium. If they don't want to play by the rules, they can leave.

    As for copyright: Copyright was meant to limit copying with copy presses. The world wide web is not what the provision was designed for. I haven't visited Salon since they went with this advertising scheme. I would not have gone to their site if this hadn't been posted here. I'm reading web pages for news, and if I wanted to mindlessly watch ads as I was told to by my corporate masters, I'd be watching TV instead. If salon wants to force ads, they should be on TV or Radio. This is the wrong format for that crap. I don't think this loses them anything, as many other people here feel the same way and won't even go through the hassle of a free reg. to read NYTimes articles.

    After I lost my third slashdot username and just started signing my AC posts. If I couldn't post as an AC, I wouldn't post at all. I have better things to do than jump through someone else's hoops.

    Anyway, even the letter-ignoring law abiding slashdotters understand the bad karma of direct posting, but the impetus for doing so was that the submission of this article appeared to be an intentionally subversive advertising ploy. "Submit to a news site so that they will do the work of advertising for us so we don't have to pay for it, then force them to watch ads so that we get paid for it." Even if it wasn't like that, it surely fails to avoid the appearance of impropriety; and as cynical and paranoid as the techno-elite usually are, it was assumed that someone was trying to pull a fast one, so we pulled back.

    I'm glad I got to read it. It was nice. If it hadn't been posted, I wouldn't have read it. Salon gained from this by having content attributed to them that was of decent quality. I'd consider going back if it hadn't been made quite clear that they are still doing the crap that made me start my boycott of them to begin with. If they didn't want the article put up on slashdot, then someone from salon shouldn't have sent it in.

    I have no remorse for a commercial organization failing to reap the full financial rewards of exploiting a non-profit web site, just like I have no tolerance for SPAM or unsolicited phone calls hijacking a communications service for the purpose of advertising against the will of the audience. Not to mention leveraging laws well outside their intended boundaries to bully common citizens into compliance with unfair practices.

    - theed.

    1. Re:and this is why I hate copyright by Anonymous Coward · · Score: 0

      too bad nobody read your post theed. it was nice.

    2. Re:and this is why I hate copyright by Anonymous Coward · · Score: 0

      JFYI: Slashdot is not a non-profit website, it just has a marginally different business model.

  72. Why it really sucks by Hamster+Of+Death · · Score: 4, Insightful

    Nobody knows how it should be done. Plain and simple. Sure there are 50 different ways to shuffle 1's and 0's around to produce something that kind of solves a problem someone may or may not have (customers seldom even know the problem they are paying to solve).

    Add to that the string of phbs, development team, testing team. Then you end up with people who don't really understand the problem, solving it with tools that we don't know if they work or not, or which they might not even fully understand. (Have you proved GCC is correct lately? How about .NET?)

    So until we can get a method that ties programming to what it really is (problem solving) we get to poke about blindly in the dark to find our 'solution' and hope it shuts up the customer long enough for them to write the check. We're slowly getting there, but because programming is still a new thing it hasn't been remotely fully explored yet.

    There's lots of room to figure out how to make a computer solve a problem once it's defined. Finding the problem is a major portion of the battle. The rest comes in finding a repeatable, provable way to solve it.

    Until that happens youll need your blindfold and poking stick handy.

  73. Re:Copyright by js3 · · Score: 1

    Yep.. developing stinks.. spend hours on end writing free code, watch all your jobs leave for another country and finally pay to read a reporters rant on why your profession stinks. If you're developer you're probably wondering why you aren't a reporter instead

    --
    did you forget to take your meds?
  74. No Silver Bullets by BrianMarshall · · Score: 2, Interesting
    As Fred Brooks pointed out in the classic paper in 1987, there are "No Silver Bullets".

    Writing software is difficult because it actually is complex - a piece of software of any size has more "moving parts" than (almost?) any other thing people build.

    Things have gotten better over the last 50 years - high-level languages, object-oriented design and information-hiding to reduce interdependencies.

    But software is still one of the most complex things people make. Better tools and approaches help, but there are no silver bullets - software is complex because it is complex.

    --
    "When the going gets weird, the weird turn pro" -- HST
  75. Re:Mechanics and programmers have similar problems by _|()|\| · · Score: 1
    So what you're saying is: we have a failure to communicate. Much of The Mythical Man Month deals with the difficulty of communication within a programming project. Too many cooks spoil the broth, so why not make the smallest possible team as productive as possible?

    Bridging the gap between the producer and the consumer is the discipline of systems analysis. Regardless of how productive or gelled the team, is it building the right product?

    In the limit, I guess the ideal software is developed by an uber genius for his own use.

  76. Re:This is why I hate slashdot ---- FCC FINE by Anonymous Coward · · Score: 1, Funny

    Could you please refrain from using Foul Language on this site.

    If you continue I will file a complaint with the FCC and have you fined.

    Free speech in a public forum should be free of anything that may be offensive. Since /. has no age verification your comment post has surely caused damage to many young children who's lives will be forever ruined.

  77. The reason programing sucks... by rusty0101 · · Score: 2, Interesting

    ... doesn't fit on a bumper sticker, so no one is really concerned about it.

    Seriously.

    Physics is about finding the one inch formula. One of which is e=mc^2

    Accounting is about making sure that the accounts ballance. Profit is the difference between cost and revenue. Cost plus Profit equals Revenue. Accountants recognize that they are part of both the "Cost" and "Profit". Good business management recognizes that eliminating the Cost will also eliminate the Revenue, which will also eliminate the Profit.

    Programing is not currently about finding the least expensive way to solve a problem. It is about finding a usable way to help people accomplish their desires.

    Computer Science, such that it is, in most cases is a euphamism for Software Engineering. The goals of Software Engineering when I was going to school was to write "provable" software. "Provable" software is software that you can "prove" every line of it does exactly what the "engineer" who wrote it intended, nothing more, nothing less. If the developer writes to variable "n" in function "A", and the scope of the design is that variable "n" is only applicable to function "A" then when function "B" changes variable "n", it should not affect what function "A" expects it to be.

    That is a very simplified version of what Software Engineering is all about. Software development is supposed to be about using the tools that software engineers have used to build useful software. All too often it is about using tools other software developers have created instead, because other software developers have gone ahead and created something to work with, because they got tired of waiting on Software Engineers to get over being elietist, and actually putting together provable designs.

    A suspension bridge is a beautiful piece of engineering. It is also very often a very beautiful piece of hardware. The Tacomma Narrows disaster happens when a piece of engineering comes across a situation that the engineer was not expecting, and didn't design for.

    Likewise software developers are using unproven tools to acomplish various tasks. Then they are being asked to work arround the problems that come up when their tools encounter situations that the developers of those tools had no idea would ever be asked of those tools.

    As a result, we currently get buffer overflows, memory overruns, as well as hundreds of other problems that can best be described as anoyances, and at worst be described as security flaws.

    ------

    Alternatives to the WIMP design, as well as the Unix understructure.

    While Lanier bemones the fact that we have not "surpassed" the Unix and Windowing mode of computer archetecture and interface, at best he can be said to have waved his hands at a new direction, (VR). The only "improvement" I have observed is the time based document stream view that has come out of MIT, and even that can be considered a WMP view (minus the icons at the moment.) For some people this very well may be an improvement, though I think it is only useful to those people who look at time centric management of information. In other words, I think it's a great way to manipulate stuff like e-mail, but probably wouldn't be of particular use in managing a book store inventory.

    "Mind Mapping" seems to me to be a "better" way of managing information, but I don't know that it is a great idea as an interface for a computer. Perhaps that's based upon my own limitation as my input to a computer is a small set of serial interfaces, rarely used concurrently, and the output is a couple of serial interfaces, and a "screen" or "window" of data that I process as information.

    As long as that is what my interface to a computer is, I will probably run into limitations as to what I can expect from a computer. Those limitations are going to affect how I interact with the computer, as well as how I, and others, develop software for the computer.

    Rather than bemoning the current state of the art as being of the same

    --
    You never know...
  78. Resource is the problem by superpulpsicle · · Score: 1

    Despite a million programming and language books in the market, the code you're interested in using with is never in the books.

    Even online sources aren't always perfect. Visual Studio library CDs with a cazillion examples is actually one of Microsoft's better offerings.

    1. Re:Resource is the problem by jhoger · · Score: 2, Interesting

      Actually you are on to something.

      The thing that was supposed to make programming easier is reuse. The mystery to some is, that it never really materialized.

      On the hardware side of thing reuse is everywhere. Standard components are made which are unbelievably complex but have a simple interface and are cheap. The manufactures give away the parts for development, and reference designs which show exactly how to design them into a product. Drivers are often licensed for free.

      Why hasn't this happened in software? Proprietary software is the problem. There is no vast array of components that you can draw upon without having to pay for a license agreement for each and every one. The best answer so far is things like Java and .Net which come with a ridiculously gigantic runtime library. These will help.

      But I think F/OSS provides a compelling answer. If you're willing to comply with the GPL there is a vast amount of software ready to be reused in your design. I think it's going to work unless the government steps in to stop it.

    2. Re:Resource is the problem by groomed · · Score: 1

      The problem is that really flexible software is really hard to develop and really hard to audit for security and correctness, not to mention usability. It's like the flying car: the benefits of having a car that can fly are completely swamped by the problems it creates, technical as well as logistical as well as economical.

      Reuse doesn't make programming easier. It makes it harder.

    3. Re:Resource is the problem by jhoger · · Score: 1

      All software is hard to audit for security, correctness and usability. What's your point? And software need not be particularly flexible. It just has to do what it is supposed to do.

      Developing and debugging new components from scratch is harder than reusing them.

      You're saying you don't think software development would be easier if every developer could come to a project with a vast toolbox at his disposal, likely within a given problem domain? That experienced engineer will also have built up experience with the tools in the toolbox.

      >Reuse doesn't make programming easier. It makes it harder.

      That's pure tripe. With that kind of attitude we'll never move forward. Every time you use someone else's component instead of your own, that's a form of reuse. Does anybody really write their own database any more? Do you start a new project by writing an OS, or picking one? Do you write your own data structures every time? Or do you use what's in the available in the standard run time libraries (Java, C#, etc. have a wealth of data structures available).

    4. Re:Resource is the problem by groomed · · Score: 1

      Developing and debugging new components from scratch is harder than reusing them.

      Yes, because components need to be reusable. Code that doesn't need to be reusable is much easier to write than code that does need to be reusable.

      You're saying you don't think software development would be easier if every developer could come to a project with a vast toolbox at his disposal, likely within a given problem domain?

      The vast toolbox is only necessary because we need to interface with so many complex systems. You don't need an XML toolbox if you're not using XML. You don't need a malloc() library if you fix the number of objects that you're going to use.

      But we use XML and malloc() because it makes our programs more flexible. The fact remains that it also makes them more complex.

      Does anybody really write their own database any more?

      The real question is, why is everybody not using the same database.

      I think you misunderstood my point. What I'm saying is that writing (and understanding) highly flexible software is much harder than writing software which just performs a single task within carefully proscribed constraints. So even though highly flexible software may be desirable for all sorts of reasons, it is not always the best, the most advanced, or the most practical solution for any particular task.

  79. The difference is obvious (to me, at least) by jjohnson · · Score: 2, Insightful

    I think comparing the progress that software development makes to the progress of hardware development is a fundamental mistake. Moore's Law depends upon the properties of the materials we're using and our ability to exploit them--chip fabrication, heat conduction, power consumption--not upon our ability to design chips. It's not the chip layout that's improving, it's our ability to milk what's already in the materials, which yields exponential growth. We're not responsible for that growth curve, the materials are. Doubling the length of our lever gets us the ability to move four times the weight.

    Software, on the other hand, is all about design. Of course it's not going to double in power every 18 months--we're not doubling in design ability every 18 months. If the computing of our hardware were limited to our chip design abilities, it would be going just as slowly.

    --
    Anyone who loves or hates any language, platform, or manufacturer, doesn't know what they're talking about.
    1. Re:The difference is obvious (to me, at least) by oo_waratah · · Score: 1

      Why are we not developing Coding in exponential fashion. When I started you had to script everything from scratch. Now with a window manager you get the abilities of the manager with a little research in the API.

      Programming as an art has not leapt forward but the tools we use now are far advanced from the ones we had 25 years ago. Think of coding machine code and the order of magnitude of the assembler, then the order of magnitude of the high level language and the compiler. We are making those leaps however it is not measured in easy Mhz and Flops like hardware.

  80. Re:Mechanics and programmers have similar problems by toothfish · · Score: 1

    While I appreciate your points-- and could relate them to any number of trades-- I have to wonder if there will be any solution, ever.

    I mean, cars have been around for a while now, right? Mechanics aren't appreciated any more now then they were 5 or 10 years ago, as far as I know.

    For the record, I'm neither programmer nor mechanic-- I cut fish for a living. And your points apply there too.

  81. Re:Mechanics and programmers have similar problems by Anonymous Coward · · Score: 0

    sounds like you don't do anything for yourself... imagine how you will feel if you actually do some simple maintainance on your car... how does it feel to have someone own your vacation?

  82. The Solution to the Cable Guy! by Anonymous Coward · · Score: 0

    Just switch keyboard language to Dvorak or something. I did that and the guy looked at me funny and said "I'll, let you handle that one!" and promptly exited.

  83. People, not computers by Mr.Oreo · · Score: 5, Interesting

    This is coming from a game programming point of view, but I think it applies to all facets of software development. Programming sucks these days because of the communities it has created.

    I'm not going to be a Yancy and specify where these points aren't applicable. Take what you read here with a grain of salt, but I guarantee you can apply one of these to an experience you've had.

    - Zealot Trolls.Answering someone's question with a code solution that contains even the pettiest OO fault, even if it has nothing to do with OOP, will get you nothing but a bunch of OOP zealots on your ass, saying 'WRONG! That shouldn't be public' or 'WRONG. The destructor should be virtual' or 'WRONG. Should pass by reference'. You get the point. There are more and more trolls on boards these days looking to stroke their ego by posting extremely minor corrections to mostly correct solutions.

    - Wheel Engineers. Stop making 3D engines. Stop making WinSock networking wrappers. Stop making ray-tracers. Stop making things that have been done 1000x before unless a)It's for fun/educational purposes. b) You're going to do something someone else hasn't. Even if there's _one_ thing in your coding project that someone hasn't done before, it's definitly worth it to create. Red-Faction was the last game IMO that added anything new to the world of 3D engines, other than 'taking advantage of x graphics card feature'. Physics is another area to inovate with game engines. Please Stop Re-Inveting The Wheel and giving it some cheezy name.

    - Meatless Code. Anyone who has worked with the 3DS Max SDK knows what I'm talking about. Important data is fragmented everywhere, and accessed in 10 different ways. You spend more time reading the API docs than you do programming. I was reading through some ASP.net code the other day, and it took 45 lines to update a table with an SQL command. I read through it, and it could be done with 5 narrow lines of perl code. With C++, you could probably spend a solid two weeks writting generic 'manager' code that does absolutely nothing. Programmers need to learn to draw the line between 'productive' code and 'silly' code. Having a DataObjectFactoryCreatorManager class for 'ping' program, is a bit silly.

    If I could do the world a favour, it would be to send all coders a letter that simply said "You are not the best. Live with it.". If I read another reply to a simple question with some dork awkwardly throwing in that he's "A 20 year C programmer who wrote a compiler on a TSK-110ZaxonBeta when I was 11". No one cares about your background unless they ask, or it's relevant.

    Other than that, programming is fine. Except for Java.

    --
    - Mr.Oreo
    1. Re:People, not computers by damballah · · Score: 1
      Another thing is that programming is not some monolithic undertaking. There are diffrent techniques, and different languages to do different things. Like you said, writing something in ASP that would take less time in Perl is kinda dumb.

      I don't think that programming sucks that much compared to 10, 20 or some years ago. We are able to undertake more complex tasks now because of new languages. We are asking software to do more stuff (and better) now.

    2. Re:People, not computers by Anonymous Coward · · Score: 2, Interesting

      Sorry. I usually hack up my own wheel quicker than adapt to someone elses since that would:

      a) require learning the interface
      b) need glueing code
      c) generate a dependency problem

    3. Re:People, not computers by __aadkms7016 · · Score: 1

      > Stop making things that have been done 1000x
      > before unless a) It's for fun/educational purposes.
      > b) You're going to do something someone else hasn't.

      Sometimes, it takes a lot of almost-ready's to get
      to the one design that is ready for mass acceptance.
      Some examples:

      -- Hyper-text was a mature idea by the time TBL
      took his shot at it with HTML/HTTP. But he put
      the known concepts together in a nice way with
      some new ideas, and it (eventually) took off.

      -- C was not a language with oodles of brand new
      ideas, compared with the languages that preceded
      it. But again, it put known concepts together in
      nice way with some new ideas, and it took off.

      My point is, the old saw of "doing the same thing
      over and over again, while expecting a new result,
      is a sign of insanity" doesn't apply to design.
      Because, as the French say, in great matters,
      no detail is small. A few changes in the details
      can turn a "yet another" into the "next big thing".

    4. Re:People, not computers by Anonymous Coward · · Score: 0

      I'm not going to be a Yancy and specify where these points aren't applicable.

      This is completely off-topic, but as a Yanc(e)y, I'm curious about this phrasing. I've never seen anything like it before nor can I find similar on Google. Since I'm known to be somewhat of a perfectionist with regards to coding, I'm honestly curious. Please reply privately to kelly(at)nttmcl(dot)com. Thanks!

  84. It's not a state... by Anonymous Coward · · Score: 0

    It's a country. India.

  85. That AI exists by jhoger · · Score: 1

    I like to call it "India"

  86. Re:Mechanics and programmers have similar problems by krumms · · Score: 1

    I think you're looking for this article :P

  87. Programmers who do more are more valuable by oo_waratah · · Score: 1

    I am currently paid strictly because of my value to answer questions on a huge array of questions. I am not a brilliant coder, I am a horrible networker, I understand MS Windows only on a superficial basis. So what am I paid for my ability to answer the questions off the cuff, cut through the he said she said arguments between Networking and programming when there is a problem.

    There is a definite role for "intergration specialists" which are not integration specialists but computer generalists that understand a little about everything.

    Most important question is not what you know but whether you can apply that knowledge to the questions at hand.

  88. It helps to understand low-level stuff by Admiral+Burrito · · Score: 4, Informative
    You can learn as much from a data structures class taugh in Java as you can from one taught in $language_of_choice. The idea is to learn how things work fundamentally, and then apply those ideas practically. A linked list in Java works the same as a linked list in C.

    The thing is, Java is somewhat high-level. There are things that go on under the hood that you won't learn about, but once in a while pop up anyway. For example, being taught Java, you won't learn about the difference between memory allocated on the heap, and memory allocated on the stack. And yet...

    This does not work (it doesn't even compile):

    String x = "a";
    (new Runnable() { public void run() { x = "b"; } } ).run();
    System.out.println(x);

    There's nothing wrong with the code; the problem is that Java pretends to support closures but really doesn't. To use x in the anonymous inner class, you need to declare it final. But if you declare it final, you can't do the x = "b" assignment.

    I'm familiar with C, so I understand the difference between the heap and the stack. I can infer that x (the reference to the string, not the string itself) is allocated on the stack. It is not uncommon for instances of anonymous inner classes to outlive the stack frame they were created in, so the compiler doesn't know whether or not x (on the stack) will still exist when the object's run() method is called. So it makes a _copy_ of x, but in order to pretend that it is still x, the compiler wants you to declare it final so that the original and the copy can never get out of sync.

    Having experience with C, I know the heap is a safe place to put things that may need to outlive the current stack frame:

    final String[] x = new String[] { "a" };
    (new Runnable() { public void run() { x[0] = "b"; } } ).run();
    System.out.println(x[0]);

    It's ugly, but it works. The reference called x needs to be declared final (because it's on the stack) but the reference contained in the array does not need to be final (because it's on the heap).

    Because of my experience with lower-level stuff, I understand how Java is faking its support for closures, and how to work around the limitations. This is only one example; there are many other times when understanding things from a closer-to-the-metal perspective gives insights that would be lost if things were only understood from a high level. Joel Spolsky summed this up fairly well: Leaky Abstractions

    1. Re:It helps to understand low-level stuff by Hast · · Score: 1

      Yes that's all nice and so, but I must have to say that I fail to see the correlation between learning about data structures and doing some really abuse of the Java language. There are plenty of strange things like that in Java, I think a much more relevant example is how the .clone() function works. Or perhaps rather why you don't get a new copy of the object when you do it. (That one has bitten me actually, I can't really imagine why someone would put your example in "real" code.) The book "Thinking in Java" has an entire chapter about these kind of things IIRC.

      I'd say that having experience with the low level stuff is certainly a benefit. But for most situations it's not needed. It sure as hell isn't needed if all you want is to do some basic coding found in 99% of programs today.

      BTW I'd say your example is quite funky since you use multiple threads with the same variable. So the result could be either "a" xor "b" depending on real-time issues. I actually haven't worked with inner classes like that much, but I'd say that the "sane" way of handling the situation would be that the two "x" variables were in different scopes and thus completely independent. Due to the strange effects in large systems mentioned above I wouldn't be surprised if it didn't work that way though.

    2. Re:It helps to understand low-level stuff by Anonymous Coward · · Score: 0

      Why do you say Java is faking closures? I don't think I've ever seen the claim that Java supports closures. However, what it does support is this notion of an "Inner class" which is an entirely different beast.

      You only found an issue with it because you know what a closure is, and expected it to behave that way.

      My take on your example is I would naturally not expect it to work, because x is not accessible via the parent class's notion of "this". To me that's semantically different then a difference in whether a variable is located on the stack or on the heap, and more what is the scope of x.

      I can't think of an example in Java where the stack/heap difference is noticable. Certainly less so than C++ because all objects are allocated on the heap, and references are passed around. Only stack allocated data includes references and primative datatypes. Both of which are not passed by reference but copies instead.

      I guess in short, to a Java programmer, there are semantics that are important. Implementation is not as long as it obeys the semantics Java describes. By constructing an example like that, you are the one trying to "fake" continuations, not java.

    3. Re:It helps to understand low-level stuff by Anonymous Coward · · Score: 0
      BTW I'd say your example is quite funky since you use multiple threads with the same variable.

      No it doesn't. Runnable != Thread. It's just a plain old object that happens to have a run() method. It could be used in the case of multiple threads, and that was actually the real-world example I was thinking of (though didn't want to have to code for for a simple example). Instead of invoking the Runnable's run() directly, I could've passed the object to SwingUtilities.invokeAndWait, so as to access a Swing component's properties from outside the AWT/Swing event thread in a thread-safe manner. That's an actual example that I've needed to use in real-life.

    4. Re:It helps to understand low-level stuff by Anonymous Coward · · Score: 0
      Why do you say Java is faking closures? I don't think I've ever seen the claim that Java supports closures. However, what it does support is this notion of an "Inner class" which is an entirely different beast.
      [snip]
      My take on your example is I would naturally not expect it to work, because x is not accessible via the parent class's notion of "this".

      Try it, it certainly does work. And in most languages, the ability to access the x the way that code does (er, could, if the object had passed outside the normal scope of x (which is entirely possible to do)) is a closure. But in Java it's not really accessible; Java fakes it by making a copy accessible, while trying to pretend that it is the same variable. It forces you to declare the variable "final" in order to preserve the illusion. Which is why I say it is pretending to support closures, when really it doesn't.

      I'm not claiming that Java supports closures, only that it pretends to.

      That said, I'd rather have Java not-really-closures than not be able to access x at all. Real closures (as opposed to fake closure-like things that aren't really closures but sort of look like closures) would certainly be better, and would avoid the need for hackish workarounds like I demonstrated, but are not as easy to implement in the language itself.

    5. Re:It helps to understand low-level stuff by zooblethorpe · · Score: 1
      Quoth Hast:
      the two "x" variables were in different scopes and thus completely independent

      Hello Hast --

      I'm actually reading Thinking in Java right now, and your talk of threads has me confused. I'm a complete Java noob, so that may well be the issue. However, once you declare a variable to be "final", isn't there only one by default? Please, clue me in if otherwise.

      Cheers

      --
      "What in the name of Fats Waller is that?"
      "A four-foot prune."
  89. programming doesn't stink, it's in its infancy by morphage · · Score: 2, Insightful

    If one compares the industrial revolution with the so called "information age", we are somewhere in the early 1800's. The industrial revolution resulted from the experimentation of scientists with formal training and tinkerers with informal training. The information age is no different. During the first few decades of the information age, those who worked with computers were both scientists and engineers with formal training, as well as tinkerers with informal training.

    After the foundation of the industrial revolution was laid, two professions emerged, the engineer who designed the machines, and the mechanic who maintained them. Some of the previous posts noted with dismay the similarities between blue collar workers and graduates of technology programs and certificate holders. Computer science and engineering is still barely older than 40 years old. Since the demand for programmers is still very large (even if the demand is being met in India), simple jobs are being delegated to programmers with training lacking theory. These are the mechanics of the information age and they have their place.

    The "technician programmer", is on the same level as those technicians who obtain degrees in "engineering technology". The technician programmer is well suited for cranking out small system administration scripts, coding SQL, creating database front ends, and developing websites. Like machinists, they work with tools that are comparatively simple, and repetitive in nature. Occasionally, a complex problem requires a new method of applying the tool. A machinist can make engine parts, but can't design an engine in the same way a technician level programmer can create a database, but not the database engine.

    Unfortunately, the tech schools try to convince both their graduates and businesses that technician programmers are able to do more than this. In the current economy, businesses would much rather pay a tech school graduate to customize an off the shelf solution, than an unemployed programmer trained as a scientist or engineer. However, there will always be jobs for systems programmers and software engineers, as long as someone is willing to pay for new ideas. The difference between the "technician programmer" and computer scientist and engineer needs to be recognized, just as the difference between the appliance repairman and the electrical engineer, and the mechanic and mechanical engineer is recognized.

    We have not seen the true next generation of computers. Miniaturization and speed increases are the results of advancements in materials science and electrical engineering. Computer science and software engineering are still using ideas from the first generation of technology. The majority of computers (PC's) run a von Neumann architecture, with software written in languages that are procedural, even if support for classes and objects is included. Classes and objects simply create a method of abstraction to enable the problem to be approached in modular manner. Not that this is bad, but the models and techniques of computer programming are based on the limitations of hardware technology from the 1960's and 70's. The tradeoff between performance and ease of use are still issues in software engineering. The next generation of computers may eliminate the constraints of current methods, as well as introduce new constraints. It's all part of an ongoing process called technology. This is a good thing.

  90. Amen. by ishmalius · · Score: 1
    I absolutely agree. So many "systems" people design in vacuo, and have totally forgotten that the environment of the software is a critical component. It is just as important as their damn diagrams. They should dip into the code occasionally to get a reality check. I'm not decrying systems analysis and design. But totally separating the design from the implementation is insane. It is like building a dam, without requiring the architect to know about concrete.

    I'm frankly sick of architects (that's the term for people who say they design software but don't actually design software) who bemoan the gap between their glorious visions and the real products their teams end up producing. These people need to click "Close" on their UML models and go get their hands dirty by writing parts of the production code.
    The software world already has too many Idea Men. I wish that UML and other design tools had something like a taxi fare meter, to keep reminding them "it will cost you this much."
  91. tyranny of the majority by Anonymous Coward · · Score: 0

    most programmers are poorly trained. compiler makers need to cater to the largest market to get the most developer market share. Hence they write compilers that appeal to the majority, which is comprised of mostly poorly trained programmers. These compilers allow too much flexibility because bad programmers whine during the compiler's beta testing phase if they don't have all of these flexibilities to allow them to write quick hacks, no design, gotos, inefficient algorithms, etc.

  92. Folklore link by bonch · · Score: 1
  93. Try C++ Builder 5 by Anonymous Coward · · Score: 0

    Maybe you should try C++ Builder 5.

    It's as easy as VB and you don't
    have to mess with MFC.

    The auto-generated code is "CLEAN"
    and readable and looks a bit like simplified Java.

  94. who are today's programmers? by Anonymous Coward · · Score: 0

    Do today's programmers really have the identity they used to?

    How innovative are they? A bunch of IRC-loitering script-kiddies that spend all their time trying to take down other IRC-loitering script kiddies? And at the end of the day, what do they have to show for it?

    When I was 13 I was programming for a major university, at 14 working for a Fortune 500 company.

    When I was in high school, I faked my way into an ACM programming competition in the local college and got 2nd place against all the college kids. I would have had first place but I was so far ahead, I stopped and didn't realize that one college kid had waited until the last minute to submit his jobs for review..

    At age 23 I won Editor's Choice in PC Magazine for a Shareware program I wrote. I sold over 100,000 copies. I exhibited at Comdex and travelled around the world.

    I really don't consider myself that great of a programmer, or that anyone else couldn't have done this - I didn't have any special privilges - I just was passionate about what I did, but I do think if Grand Theft Auto, or TVLand had been at my disposal, none of that would have happened.

    Back in the days, programmers were obsessive about really creating things and doing new stuff that nobody said was possible. Nowadays, the "programmers" I run into (and I use that term loosely) are little more than shills for the lame-ass high-level, unstable development environment that allow them to get fleeting contract jobs. They take great pride in making sure nobody else understands their code, and they suck ass.

    Computers changed the world, but you'd never know it looking at this new generation of lazy, self-absorbed, pothead, ADD programmers on the scene now. If this offends you, you're one of them; if it doesn't, then you can probably relate regardless of what age you are.

    1. Re:who are today's programmers? by Anonymous Coward · · Score: 1, Insightful

      Somehow I don't believe this person at all...

  95. Why programming stinks today by Anonymous Coward · · Score: 1, Interesting

    1. When I was a kid our operating system was a programming language.

    Not to be confused with the "When I was a kid we walked a mile in the snow up hill both ways nude just to get a candle"

    Progression and "Computers sucked back then" aside we had easy access to a programming language and people didn't say "kids can't write code" well actually SOME people did but those same people think kids can't do anything.

    Even ferther back before home computers kids couldn't access computers but collage students could get access to the schools mainframe and before that...
    The point is that the notion that programming is something only profesionals should do is very new.

    For example: Script kiddies..
    Script kiddies is something new (well new as of 10 years ago).
    In the 70's and 80's children didn't download scripts, recepies or 0 days. Kids wrote there own programs.

    Today script kiddies have to rely on more experenced programmers to write simple scripts to get the job done.

    Profesionals think thats good. "Think how bad things would be if thies kids could write code?".

    You may think this comes with a userfriendly operating system. But this actually comes from Dos.

    The profesional PC software develupment tools were priced well outside the price rage of the avrage user let alone someone who just forked over over $1,000 for a home computer. (In the 1970's $1,000 was a lot for a home computer).
    Even today $100 is a lot to ask just to "mess around".

    As a result the PC discuraged non-profesional software develupment. I think this was IBM and Microsofts way of attracting profesional software develupment. You had no threat of compeating with public domain counterparts.

    In the 1970's video games were like a gateway drug to programming. But with the death of the "programming language as the os" systems a whole generation of tech savy kids grew up never knowing how to write code.

    I don't see how someone who learnned how to code in a Microsoft trainning session could keep pace with a programmer who wrote his/her "Hello world" before hitting puberty.

    I'm sure we can all find industreal practaces that contribute to the poor quality of code but quality control didn't exist 20 years ago so why is software quality taking a nose dive?

  96. Programmers.. not programming by mabu · · Score: 3, Insightful

    The problem is not the art, it's the "artists".

    Programmers are analagous to lawyers now. It used to be that passion and a genuine interest was why most people were in this business. Now most people arbitrarily pick CompSci because they think that will give them career stability, and really giving a damn about the art of programming doesn't matter much. So like lawyers, you have this new breed of people in the industry who are just there for the money and have no appreciation for the work and the accomplishment. You don't see lawyers trying to use their craft to change the world.. you see them chasing around ambulances. Likewise, you don't see programmers these days trying to make things better.. you see them promoting ASP, Java, PL-SQL, and a hoarde of other get-bys so they can collect their check and move on.

    1. Re:Programmers.. not programming by kobaz · · Score: 1

      whats wrong with pl-sql?

      --

      The goal of computer science is to build something that will last at least until we've finished building it.
    2. Re:Programmers.. not programming by Anonymous Coward · · Score: 0

      Career stability? You're so funny. There is no career stability here. Try being a doctor or a lawyer.

      But I do agree the computer industry is full of hacks who know only Java/JSP and just want to collect a paycheck. And it shows, too.

    3. Re:Programmers.. not programming by mabu · · Score: 1

      pl-sql is a classic example of a chaotic development environment. It works well, but you're at the mercy of Oracle and other corporations who change the nature of the development environment regularly and obsolete your knowledge base. With Java, you get stuck in the middle of a war betwewen Sun and Microsoft and have to preoccupy a significant percentage of your time towards sorting out incompatibilities which have nothing to do with you main objective.

      That's just my opinion though. I remember when I developed a large scale application using pl-sql, I spent as much time understanding the idosynchracies of the development environment as I did the actual application coding.

  97. Full text by Anonymous Coward · · Score: 1, Informative

    Why software still stinks
    Programming must change -- but how? At a reunion of coding pioneers, answers abound.

    - - - - - - - - - - - -
    By Scott Rosenberg

    March 19, 2004 | In some quarters today, it's still a controversial proposition to argue that computer programming is an art as well as a science. But 20 years ago, when Microsoft Press editor Susan Lammers assembled a collection of interviews with software pioneers into a book titled "Programmers at Work," the idea was downright outlandish. Programming had long been viewed as the domain of corporate engineers and university computer scientists. But in the first flush of the personal computer era, the role of software innovator began to evolve into something more like the grand American tradition of the basement inventor -- with a dollop of the huckster on top and, underneath, a deep foundation of idealism.

    It made sense that the people writing the most important code for the new desktop machines were ragged individualists with eccentric streaks. At a panel on Tuesday (sponsored by the SDWest conference and Dr. Dobb's Journal) that celebrated Lammers' book, seven of the 19 original subjects of "Programmers at Work" lined up on stage to talk about what's changed in software over the past two decades -- and demonstrate that they have lost none of their cantankerous edge.

    In "Programmers at Work," Lammers told the crowd, "I looked at the programmer as an individual on a quest to create something new that would change the world." Certainly, the panel's group lived up to that billing: it included Andy Hertzfeld, who wrote much of the original Macintosh operating system and is now chronicling that saga at Folklore.org; Jef Raskin, who created the original concept for the Macintosh; Charles Simonyi, a Xerox PARC veteran and two-decade Microsoft code guru responsible for much of today's Office suite; Dan Bricklin, co-creator of VisiCalc, the pioneering spreadsheet program; virtual-reality pioneer Jaron Lanier; gaming pioneer Scott Kim; and Robert Carr, father of Ashton-Tate's Framework.

    But for all their considerable achievements, this was not a group content to snooze on a heap of laurels. In fact, though the hour-and-a-half discussion was full of contention, one thing all the participants agreed on was that software today is in dire need of help. It's still too hard: not only for users struggling to make sense of poorly designed interfaces, but for programmers swimming upstream against a current of constraints that numb creativity and drown innovation.

    These veterans shared a starting-point assumption that the rest of the world is only slowly beginning to understand: While computer hardware seems to advance according to the exponential upward curve known as Moore's Law (doubling in speed -- or halving in cost -- every year or two), software, when it advances at all, seems to move at a more leisurely linear pace.

    As Lanier said, "Software inefficiency can always outpace Moore's Law. Moore's Law isn't a match for our bad coding."

    The impact of this differential is not simply a matter of which industry gets to collect more profits. It sets a maddening limit on how much good we can expect information technology to achieve. If computers are, as it has often been put, "amplifiers for our brains," then software's limitations cap the volume way too low. Or, in Simonyi's words, "Software as we know it is the bottleneck on the digital horn of plenty."

    Most successful programmers are at heart can-do engineers who are optimistic that every problem has a solution. So it was only natural that, even in this relatively small gathering of software pioneers, there were multiple, and conflicting, ideas about how we should proceed in order to break that bottleneck.

    Simonyi believes the answer is to unshackle the design of software from the details of implementation in code. "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The othe

  98. Copyright infringement questions by Quantum+Jim · · Score: 2, Interesting

    That's an interesting point. Somebody will often post a copy or mirror of an article or web site if the original has been slashdotted. The copy has been presented because the original is unavailable due to technical reasons: It is the author's intent to keep the page up, but there isn't enough bandwidth. Is that still copyright infringement if permission hasn't been obtained prior? What about Google's cache?

    --
    It is impossible to enjoy idling thoroughly unless one has plenty of work to do.
    - Jerome Klapka Jerome
  99. I've read this before by lokedhs · · Score: 2, Insightful
    Ever coupld of months some know-it-all, usually with a few degrees in CS come out saying that "programming sycks", "we haven't eveolved in 20 years", "we need better tools that can automate things" and usually finishes off with "this can't go on! We're working on a tool that will transform programming!".

    Then you usually don't hear from them again. Want to know why? Because they're wrong.

    The fact is that regardless of what methodologys used when developing software, in the end you are simply giving instructions to the computer what to do. No matter how many layers of tools you try to add on top of this, in the end you want to giveinstructions to the computer how it should solve the problem at hand. What it all boils down to is that the more complex the problem is, the more detailed must your instructions to the computer be.

    Allow me to give an example: If you have some calculations to perform you can do that in a spreadsheet app, but when your formulas grows more complex you start scripting the spreadsheet. After a while even that isn't enough and you write a separate VB (or other scripting language) app to do this for you. Again, the problem might grow to the level that even your scripting language can't handle it and you sit there with a full app implemented in Java or C++ which solves your original problem. If you happen to be a CS professor, you will start thinking: "why did I have to write this app so solve this simple problem? Programming sucks! We haven't evolved in 20 years! I'm going to write an app that takes the complexity out of programming!", you will publish an article on this, and then you'll spend the next couple of years trying to solve a problem that doesn't exist.

    Are you old enough to remember the craze about 4GL? The reasoning behind that is exactly the same as what Charles Simonyi says:

    Giving the former group tools to shape software will transform the landscape, according to Simonyi. Otherwise, you're stuck in the unsatisfactory present, where the people who know the most about what the software is supposed to accomplish can't directly shape the software itself: All they can do is "make a humble request to the programmer." Simonyi left Microsoft in 2002 to start a new company, Intentional Software, aimed at turning this vision into something concrete.

    Right. Brining programming to non-programmers. Think about it. Does it make sense? As soon as you start programming, you ARE a programmer. Why, then, do you want to limit yourself to a limiting point-and-click tool? This is where 4GL failed. While making it very easy to connect a few database tables together, the real business logic was hard or even impossible to create, and the resulting apps were extremely difficult to understand and impossible maintain.

    One of the best tools that helps programming in recent years is, in my opinion, IDEA. It's a Java IDE that doesn't assume that the programmer is stupid and doesn't understand programming, but rather automatically creates the boilerplate code for you while you write the code. You still work with the code, you just don't have to write all of it.

    There's an enormous difference between IDEA and the "4GL mindset". While IDEA acknoledges that the best way of writing code is by typing in the instructions that will actually run, the 4GL mindset assumes that people are incapable of learning this and need fancy icons instead. Allow me to clarify:"icons is not a good way of representing computer code.

    It feels to me that the people who claim these things have realised that they are not the worlds bet programmers. They realised that programming can be hard, but instead of acknowledging this and try to be better, they decide that it's the "state of programming today" that is at fault. That if they don't know how to write good code it's got be the tools fault. It couldn't possible be that some non-academics can be better programmers than them, now could it?

    So

  100. Oh, come on, stick your head outside the box by Knights+who+say+'INT · · Score: 1


    The fact is that regardless of what methodologys used when developing software, in the end you are simply giving instructions to the computer what to do.

    Blah. In imperative languages, you do.

    In pure functional languages like Haskell, you don't.

    And I really don't know why neural networks aren't used en masse to train computers.

    1. Re:Oh, come on, stick your head outside the box by lokedhs · · Score: 1
      I worked with functional languages and while I like the concept, I don't care much for the attitudes of the the people proclaiming it's the best thing ever.

      It's really not that different from any other language. Sure, there's delayed evaluation, which is extremely cool, but in the the it's just a shorthand notation, just like classes is a useful shorthand notation for writing object oriented code.

      I guess I've been tained by the fact that my real language of choice is Lisp, a language which allows me to do imperative, functional and object oriented programming in the same program. It also teaches you that none of these tehniques are any special. Useful, yes, but they are not the magic "do what i mean" feature functional advocates make it out to be.

  101. Does it stink? by MrBandersnatch · · Score: 1

    I started off by thinking that I'd argue with the basic premise of this article - because for me programming DOESNT stink. But for me as a "web developer" the problems are relatively simple and well defined; the tools relatively mature and apt for the tasks in hand. I'm NOT having to reinvent the wheel like I often used to 5-10 years ago.

    But thats just for me and with MY approach to software development atm. In areas where the tools (languages, compilers, IDE, even OS) arnt well development things do certainly stink. A few years ago I had the job of writing some apps for windows CE. One of those apps was Java based, the other C++. It was a nightmare for several reasons :-

    - The LANGUAGES. I was forced to use a VERY early version of Java. It was PAINFUL having to develop libraries of essential functions and routines from scratch. For the C++ work - all I had to do was write a simple web browser. I already had the renderer - writing the remaining code, something which would have been perhaps 1 days work with perl/python/c# - took over a month.
    - The TOOLS. The Java IDE was OK...not great but OK. The VRE however...well lets just say that it never left beta. Visual C++ for WindowsCE? PRAY you never have to use it.
    - The DOCUMENTATION. Often missing, or incorrect; I would often be using guesswork to figure out how to use an API call or how to do X.
    - The TRAINING. HAHAHAHAHHAHAHAHAHAH.

    The point of the above being that where a platform is mature and has had the time and investment in tool/language/documentation/knowledge asset development, it is possible to select a tool which will assist and enable the development work. PROGRAMMING SHOULD NOT STINK ON A MATURE PLATFORM WHEN THE CORRECT TOOLS ARE SELECTED FOR THE TASK IN HAND. For immature platforms - without the investment in tools, without the care and attention that is given to mature systems - then yes, it is going to suck. If you still think it "stinks" and are using a mature platform and tools...well sometimes complex problems DO stink to solve, however many people program for the joy/pleasure of solving those problems. If youre NOT enjoying it...think of a career change!!

    Oh the above said though...yes SOFTWARE still stinks. Bigtime. But THAT is a seperate issue entirely and has much more to do with the fact that *software development processes* often stink.

  102. Why programmers still stink? by varj · · Score: 4, Funny

    Lack of soap!

    --


    -sig- It's not stupid, it's advanced -sig-
  103. My main worry about open source by Knights+who+say+'INT · · Score: 1

    Is that it doesn't foster conceptual innovation. I still haven't made up my mind about software patents because it's a bloody damn shame that the author of Visicalc isn't making zillions of dollars off his idea just because some people one-upped him in a few months.

    If you've ever worked in a non-IT job, you'd have seen the vast masses automating their work and occasionally doing actual programming (with things like IF clauses on cell formulas) within the spreadsheet framework.

    Programming for the masses.

    What conceptual innovations has the open source software movement come up with after the days of emacs and tex? I just see it one-upping its commercial counterparts (often doing it better, smarter).

    As Steven Landsberg once put it, "the whole economics can be summarized in one principle: *people respond to incentives*". In open source, the incentive is on doing things closer to the UI (e.g. developing k3b, not cdrecord) and, what's worth, looking at what major companies with big pre-coding research labs do, and ripping them off. That's what the Octave folks have done with Matlab, that's what Mozilla's done with Opera and tab browsing, and that's what the KDE people have done with (kill kill kill) MSFT and integrated local file explorer/web browser.

    The incentives are all wrong, and I'm really, really worried.

    1. Re:My main worry about open source by FeatureBug · · Score: 1
      "My main worry about open source is that it doesn't foster conceptual innovation. [...] What conceptual innovations has[have] the open source software movement come up with after the days of emacs and tex?"

      Your criticism is invalid because you're comparing apples and oranges. It is not necessary for [members of] the open-source software "movement" to foster innovation for the movement to be judged a success, as you seem to think. Perhaps you've misunderstood the rationale for open-source software. Conceptual innovation is the result of successful research. It is neither a necessary input to nor a necessary output of open source software projects. This is because the goals of research and the goals of the open-source software movement are different. It would be unreasonable to expect otherwise. Nonetheless, if you were familiar with academic research, you would know of many successful computer-based research projects which published some or all of their results as open-source software. The irony of your ridiculous and untrue comments about Octave is that Matlab is itself based on some very old open-source software. If you don't know much about a subject, it is better not to write dogmatically about it.

  104. concrete problems with the existing model. by Anonymous Coward · · Score: 3, Interesting

    But still, I do not see any suggestions for a fundamentally better model or even any concrete problems with the existing one.

    Its the editor!

    No, not the IDE, its the model we use.

    I've coded almost daily for over 25 years, so ponder this!

    We're working the parse tree once removed and are forced into prose by the ancient conventions and a pathetic need to print.

    We lack a model in which we work the parse trees symbolically/pictorially using the keyboard. One where we can zoom structurally, rotate and slice our model by patterns, flows and data-access regardless of instance and without regard for 'files'.

    From the 'forest for the trees' department.

    Cheers!

    1. Re:concrete problems with the existing model. by dsgrntlxmply · · Score: 1
      As a fellow long-time coder (30 years), I must in large part agree, though I find it very difficult to part company with my "pathetic" need to print. I just wish I were printing something more informative than code as we know it.

      Our tools are absurdly dull. In December, I visited the Getty Museum, and saw an exhibition of sculptures by Jean-Antoine Houdon. The sculptor uses a hammer and a chisel or two, and a nearly incomprehensible amount of vision and skill, to produce magnificent works. Slowly.

      And here, I as a programmer, try to build works which, if not magnificent, are at least functional, by gluing individual grains of sand together under a magnifying glass, with a pair of sadly deformed Ubangistani discount tweezers, and some dubious glue.

      If I use too much of my past experience in the work, my previous employer will sue me to ruin. I must either be indentured for too long to one master, or must behave as if my mind has been substantially erased of the most directly useful elements of my previous efforts.

      Simonyi also makes a valuable observation by delineating the problem of domain expertise vs implementation expertise.

      Every time it becomes my job to produce a piece of code which does something, I spend an awful lot of time trying to be conversant enough with some complex problem domain, to be able to do something useful within it.

    2. Re:concrete problems with the existing model. by Anonymous+Brave+Guy · · Score: 1
      We're working the parse tree once removed and are forced into prose by the ancient conventions and a pathetic need to print.

      We lack a model in which we work the parse trees symbolically/pictorially using the keyboard. One where we can zoom structurally, rotate and slice our model by patterns, flows and data-access regardless of instance and without regard for 'files'.

      Well, I don't have nearly your experience, but I've thought along similar lines in the past and explored this idea in some detail.

      I think the catch is that, as with so many things, the devil is in the details. Graphical interfaces (in the sense of representing your program as a graph, and displaying it in a non-pure-text format) can be useful for browsing source, as some of the better IDEs demonstrate. However, the decision logic I can represent concisely in ten lines of well-written code would take several screens of pretty graphics to represent if drawn in some sort of tree form.

      There are definitely shades of grey here. The concise code is easy to manipulate, and of course text-based languages have some major practical advantages, from portability of the source files to the easy use of macros. On the other hand, that conciseness can hide misunderstandings and bugs that would be immediately apparent in a clearly presented graphical display; they don't call it "code" for nothing! But there is surely a reason the world of mathematics still writes its equations and papers in the same basic format it's used since forever...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  105. Re:Interstitial Ads v. "have to pay" v. reg-only . by gnu-generation-one · · Score: 1

    "Ads can be (are not always) annoying, in any medium, but they make the content possible."

    Because there wasn't anything on the internet before people came along thinking they could get fantastically rich by posting tripe and charging for it?

    Oh look, a free independant website. And another. And another. Must be an optical illusion.

  106. It's offical: Programming is dying by talaphid · · Score: 1

    It is now official - a Netcraft survey has confirmed: programming is dying

    Yet another crippling bombshell hit the beleaguered AOL hax0r community when recently a survey conducted confirmed that up-to-date and factually-correct warez account for less than 40 percent of all submitted code, that CVS has fallen to pieces through the oppressive power of the editors, and that high school graduates won't fill out thinning ranks of programmers. Coming on the heels of the latest Netcraft survey which plainly states that programming has lost more students, this news serves to reinforce what we've known all along. Programming is collapsing in complete disarray, as further exemplified by failing dead last [leethax0r.orgcomedu] in the recent Netcraft survey.

    You don't need to be a Kreskin to predict programming's future. The hand writing is on the wall: Programming faces a bleak future. In fact there won't be any future at all for it because programming is dying. Things are looking very bad for the site. As many of us are already aware, programming continues to lose coders. Red ink flows like a river of blood. Sourceforge is the most endangered of them all, having lost 62% of its open sourceteers.

    Let's keep to the facts and look at the numbers.

    Something about USENet post ratios, and the goat website going offline. Additionally, windows, menus, icons, and pointers are apparently both a bad idea and obsolete. Punch cards were the right answer, and only decades of difficult market restructuring will achieve a successful return to punch cards, this time driven by Haskell, thus obviating the need for monads.

    Due to the troubles of Mozilla, abysmal sales and so on, Netscape went out of business and will probably be taken over by AOL who sell another troubled browser. Now AOL is also dead, its corpse turned over to yet another charnel house.

    All major surveys show that programming has steadily declined in market share. Programming is very sick and its long term survival prospects are very dim outside of India. If programming is to survive at all it will be among programming dilettante dabblers. Programming continues to decay. Nothing short of a miracle could save it at this point in time. For all practical purposes, programming is dead.

    Fact: programming is dying

  107. Not News by Anonymous Coward · · Score: 0

    This isn't news, it's a poorly written opinion piece.

    Move along, nothing to see here.

  108. Investment of time and work vs. results by blahplusplus · · Score: 3, Interesting

    The problem of near infinite time investment... of time and work versus finite amount of resources for small customer payoffs / results. It takes massive investments of time to get the computer to do some of the most basic interface and problem solving tasks so that humans can do and perform some simple tasks, even today. Tools and compiler/language development needs to get better. Right now many programs are too fragile, very hard for the end users to modify (without recompilation), and they are far from robust. Think of it this way, in an ideal world any program should be able to run on any platform without having to be recompiled and any necessary hardware/software dependencies would be automagically emulated (assuming you have the CPU power). Computer scientists have yet to create decent "building blocks" and tools that don't require a thorough understanding of how the tool itself was made. i.e. you don't expect a construction worker to know the workings of how his tool(s) was made or came to be manufactured or how it works internally, he can use it to perform all tasks from the intended "purpose" without ever having to understand how it was made or works internally from a single domain of functionality. Too many times programmers have to have cross disciplinary knowledge of their tools/etc that should not be required to get the job done. Weak analytic/development tools to help other programmers and new programmers demystify what is going on without having to write lengthly comments to tell other programmers what sections of code mean. This should tip you off right there that if you have to comment and explain something that should be as obvious as reading plain english sentences that mean the same thing you've got severe weakness on multiple person projects that shouldn't be there. No one ever gets confused about- "Today I went to the supermarket and bought some food." with "Today I picked up some food at the supermarket." If you look at computer programming languages today, its like learning a foriegn language because you're forced to "learn the rules", syntax of how the language works AND how it parses and a million other little "gotchas" when it interprets your code. Right now programming tools to create things are simply in the dark age. How many lines of code does it take to create buttons, lists, input boxes, programmer and user friendly functionality from scratch? It takes a massive investment of time and energy today just to create the meaningful building blocks let alone full programs.

  109. All software stinks by Cthefuture · · Score: 0, Flamebait

    Show me a non-trivial piece of software software that doesn't stink. I'm willing to bet that it flat out just does not exist. Period. I have never in my 20 years of programming seen a large piece of software that didn't stink. I've worked at all sorts of places. Open-source, small companies, large corporations, government agencies, and all of the software sucks.

    We should not be asking the morons who put us where we are to fix the problem. To suggest they have a clue is ludicrous.

    We need something fresh, something new, something creative to solve this problem. We have yet to hear from the person or people who will give us a revolution in software. It doesn't have to be like it is. We have been approaching the creation of software from the wrong angle since the beginning.

    --
    The ratio of people to cake is too big
    1. Re:All software stinks by Anonymous+Brave+Guy · · Score: 1
      Show me a non-trivial piece of software software that doesn't stink.

      TeX.

      We need something fresh, something new, something creative to solve this problem. We have yet to hear from the person or people who will give us a revolution in software. It doesn't have to be like it is. We have been approaching the creation of software from the wrong angle since the beginning.

      So a million people trying to sound clever have said. None of them has yet told us "morons" how to do it better, though, have they? And neither have you. Do get back to us when you've got something constructive to offer, though, as I'm sure the morons would love to hear about it.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:All software stinks by Anonymous Coward · · Score: 0

      Have you looked over the source for TeX?

      Sure, some of it is good, but not all of it. So it still sucks.

      No one provides answers because it's going to require something radically different. I haven't been able to do it, but someone will.

      By the way, he didn't say he was excluded from the moron club dumbass.

  110. Re:Mechanics and programmers have similar problems by Anonymous Coward · · Score: 0

    hmmm... Mechanics are more like IT people. Like the techs that fix your network connection and install your new hard-drive.

    I think programmers are more like the engineers that designed the cars and parts you're talking about.

    As others have mentioned I think one of the major problems in communication. The moron who put that spark plug in an inaccessible position behind the header is no different than the moron who cut and pasted the same code in 50 places throughout an application.

  111. 3 reasons why I think software sucks by Anonymous Coward · · Score: 3, Insightful

    I have been working in industry for a bit over 7 yrs and have made a few observations that I believe makes software suck:
    -People try to rely on process to fix 'common sense'. By common sense I mean being careful, meticulous, and using one's brain for each situation one comes across. Granted, I work in a large corporation and this may not apply to some of the smaller companies, but I have noticed that when we find a bug, or have some sort of other development issue, management tacks on more process to fix it. It's of course normal for people to make mistakes but sometimes you just have people that continually use poor judgement - get rid of those people and get others who can do the job right!
    -Today's engineers have a large tendancy to overarchitect, doing MUCH more than is required; overthinking what possible changes may occur in the future and designing code around that idea (this idea isn't bad in and of itself, but I have found people get carried away in this area) - What happened to the KISS principal?
    -I may sound horribly outdated, but I have serious questions as to whether OOP has bought us anything as an industry. Sure, when used properly, I believe it can have some benefits. BUT I think it gives the programmer so many powerful tools, that incompetant programmers (of which are there many) turn those tools into powerful weapons. Most of the projects I have dealt with have been C based (~90%) - the rest, some sort of OOP (the remaining 10%). Even though the quantity of procedural code greatly outnumbered the OOP, the two most confusing, sh*ttiest pieces of garbage were OOP - I don't this this is a cooincidence. I have found that people can learn the techniques and tools of OOP, but often they fail to understand the philosophy and why it was developed in the first place. Abuse of OOP creates mass amounts of crap code that needs to be maintained.

    1. Re:3 reasons why I think software sucks by Sigma+7 · · Score: 1
      - What happened to the KISS principal?
      In theory, KISS is quite good. In practice, business requirements chance so frequrently that you need to aim for a moving target instead of a well-defined static goal.
      -I may sound horribly outdated, but I have serious questions as to whether OOP has bought us anything as an industry.
      You're not alone. The benefits found in Object Oriented Programming are theoritical instead of practical. 9 times out of 10, OOP is not used to it's full extent, resulting in the extra effort spent writing OOP being wasted.

      The theories on why OOP is better won't be mentioned here - they've been posted enough times that it can be found in almost any decent programming textbook. In general, they relate to modular building in a way that interdependancies are minimized to a significant extent.

      BTW, I've also seen poor OOP code - In one game modding API there are many cases where there should be some form of return value for some functions that have the potential of failing, but no such return value exists. As a result, I have to search a listing of objects in a way that is more messy than it should be. You wouldn't be suprised when I want to figure out how to override the C++ "private" member declarations to make modifications directly to the class (and blow away the alleged benefits of OOP for whatever I'm doing) - of course, pointers shouldn't be used that way.
    2. Re:3 reasons why I think software sucks by rofthorax · · Score: 2, Interesting

      Yeah I'm beginning to see this myself.. My brother when he first came upon OOP said at Xmas time that he doesn't believe it is all that useful, that he would rather code everything in C because of the efficiency. However I still believe its good to think in terms of objects, just not good to design code first with objects, its better when refactoring the codebase, like going from something C based to something C++.

      Another thing is to look at design antipatterns that talk about OOP flaws, like the "blob" anti pattern, a object that is litterally an entire application or a library.. I've seen this a lot..

      The one major problem I have with the industry at large is the the avoidance of pure OOP concepts, like that of agents (objects that traverse a network, jump from computer to computer, and have self knowledge). I see this great acceptance of XML, but XML is a data format, a pure object format includes methods to manage the data contained int he object, and those methods should be able to best manage themselves.. The methods for the objects can be purely data oriented, and need not any system resources to do what is needed. So why not put these agent link objects in sandboxes, limit their computational resources to managing themselves? This makes it so that libraries are not needed to manage the objects, the objects never become obsolete because the code is within, not without. The objects can be upgraded to newer methods that know how to manage them, but the code may be replicated for each object, the idea is that the code that manages the objects need not be complex. And the objects can pass from system to system without having to be rewritten because they run in a virtual machine.

      You could do something like this with XML, but the reason companies like Microsoft support XML is it is not CORBA, its not a standard for interfacing, its not a object oriented design, its a structural data format (that doesn't allow overlapping of elements by the way). If Microsoft adopted a standard for objects that was open like XML, then it would be like giving too much away, because then people could write them out of the picture.. With XML, at least they can change the language, the interfacing method is harder to maintain (data objects and organization, versus functions with parameters), people still must rely on libraries to interpret and transform the data in XML..

      If we put something like Perl code in a XML object, and relied on the methods in the XML to maintain itself (limiting the access of the perl interpreter to system resources), then the XML library that interprets the object is the object itself, or a reference object that knows it well. This eliminates the need for libraries in the system that must be compiled or included to use the objects.. Its allows for varying types of objects to be written, that do various things and no libraries are required.. Even if there is a lot fo object replication, each kind of object a system captures, it could reference the original object to obtain the methods to manage the data of the each type of object it sees.

      This means software never becomes obsolete.. Word processor files are always readable, image files always viewable, sound files always playable, etc.. This for Microsoft would be a disaster, because for one it would not require them to be a part of the picture. Its a democracy, the objects that work the best people use.. Its platform independent, the objects manage data with local methods running on virtual or real processors (in a sandbox). Allows programmers to move onto better things, rather than wasting a lot of time adhering to standards that will change tommorow (so that management in a company can justify upgrades to the next best spanking new version of Windows..

      The thing I had noticed though is that commercial software development tends to make companies adopt archaic languages so that their competitors can't adopt their projects (should management come to be disastisfied with their solutions), this is why one will use del

      --
      Just say no to license servers!!
  112. sure, blame the tools by Anonymous Coward · · Score: 1, Insightful

    The problem isn't the tools. The problem is that people don't know what to do with them. It's either been done before, or you need to invent it. How are different tools supposed to ease invention or make people more creative? Ever notice how when you *do* encounter someone with a a creative spark, they manage to get the job done with the tools available?

    I would take this kind of bullshit seriously if someone could present the following: "I have a great idea, and here's what it is, but I can't implement it well using the tools available." Basically, all we're hearing from these folks are excuses as to why they haven't accomplished anything.

  113. Why Programming Still Stinks? by Pan+T.+Hose · · Score: 2, Funny

    Because Programmers Don't Shower?

    --
    Sincerely,
    Pan Tarhei Hosé, PhD.
    "Homo sum et cogito ergo odi profanum vulgus et libido."
  114. Heh Good one! :))))) by Anonymous Coward · · Score: 0

    Please mod parent up: +5, Funny!

  115. Prog. stinks because algorithms can't be proven. by master_p · · Score: 1

    The only reason programming stinks is because algorithms can't be proven to work as intented. Unless a completely different method of 'programming' is invented, no matter what the language is, a tiny error will cause systems to collapse.

    And this point (algorithm proof) is what distinguishes intelligent beings and computers: intelligent beings can prove an algorithm in their minds, whereas computers can't.

    This is why the best programmers are the ones with the greatest analytical and synthetical capability: they are able to hold a much bigger model of an application and its states in their heads, than others, while simultaneously they can dip into the greatest level of detail.

  116. Python: Everything you want from Lisp -- and less by Latent+Heat · · Score: 1
    Yeah, yeah, we can talk about all the limitations: the indent-level delimiting is OK until your editor mixes spaces and tabs in the indents, reference counting plus cycle removal instead of a "real" garbage collector, no value types.

    I am intrigued with the idea that Lisp was the answer to everything -- strong typing but dynamic typing, eval-loop command line, and all of that. Now Lisp took a hit in the aftermath of the Lisp machine days, but with computers and Moore's law and advances in compiler and language technology, maybe it is time for the idea to come back.

    Lisp, they say (Paul Graham, et al), was the victim of worse is better, and while a SUN workstation, Unix, and C were no where as "elegant" as Lisp and a Lisp-M, they were a heck of a lot cheaper, and people felt they could solve much the same problems with that setup and more. Now saying C is a Lisp replacement is a stretch, but saying Java is a Lisp replacement is getting a little closer (GC, reflection).

    How about Python as a worse-is-better substitute for Lisp? Even Paul Graham admits it is getting close.

    Python is Free as in Speech, Free as in Beer, a unified language with no spun-off dialects. Java has SUN controlling it, C# has Microsoft owning it.

    If Python is to become the heir to Lisp, it is going to need arrays of value types, compilers (yeah, yeah, I know about various array classes and Psyco, but they are works in varying degrees of progress). But speaking as a Delphi programmer who has done some work in C++, Java, and C#, I think Python has potential and is something I am going to be looking at as it evolves.

  117. Profanity != Troll by SatanicPuppy · · Score: 1

    He can fucking say whatever the fucking hell he fucking wants.

    It's the POINT that should count, not the style.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Profanity != Troll by Aardpig · · Score: 0

      He can fucking say whatever the fucking hell he fucking wants. It's the POINT that should count, not the style.

      An admirable sentiment, but of no relevance to life on planet Earth. Call me when you start shaving, and we can discuss why.

      --
      Tubal-Cain smokes the white owl.
    2. Re:Profanity != Troll by ChannelX · · Score: 1

      Yes. The point is what should count but here in the real world it doesn't quite work that way. It's only taken me 33 years to figure that out.

      --
      My blog: http://jkratz.dyndns.org/~jason/blog/
    3. Re:Profanity != Troll by Cybrr · · Score: 1

      Well, we're part of the real world, aren't we?

      --
      Why did GEAR crush RDP?
  118. A "fallback major"? by beavis88 · · Score: 1

    Any CS department that allows themselves to be considered a "fallback" is doing the entire CS community a huge disservice. Are they teaching programming with VB6 and database design with Access (or MySQL) or something?

    1. Re:A "fallback major"? by MagicDude · · Score: 1

      The way the carriculum works at my school is that there's only a handful of courses every CS major has to take. Things like Algorhythem Design and some math courses and such, but the last 4 semesters or so are all desinated as "free electives". The idea is that people can individualize their carriculum to focus on networking or whatever their area of interest is. This works well for people who are willing to push themselves and take the harder and more useful courses. However, what it also means is that people can take advantage of the situation, find out which classes are the easiest to pass and take just those, and then just barely pass them. The carriculum works in theory, but it needs more safegards to keep from being taken advantage of.

  119. Re:Python: Everything you want from Lisp -- and le by ultrabot · · Score: 2, Interesting

    Now Lisp took a hit in the aftermath of the Lisp machine days, but with computers and Moore's law and advances in compiler and language technology, maybe it is time for the idea to come back.

    The problem w/ Lisp seems to be that not many programmers like it. Even the ones that try to like it, and learn it in school.

    If you teach someone Python, it is extremely probable that the pupil will become a Python fan. Teaching people Lisp (or Scheme) seems to have pretty much the opposite reaction. Some of it is probably due to shoving FP down their throats, but not all.

    Lisp, they say (Paul Graham, et al), was the victim of worse is better,

    Wasn't it Richard Gabriel?

    How about Python as a worse-is-better substitute for Lisp? Even Paul Graham admits it is getting close.

    Actually, Python already seems to have replaced Lisp. Only the die-hard macro freaks stick with Lisp, most dynamic typing - first class functions - simple semantics people have picked up Python.

    If Python is to become the heir to Lisp

    Curious wording you have here. Python has beaten Lisp in popularity ages ago. Perhaps you mean a technical heir to Lisp? Lisp is by far not a "king" in anything, except perhaps power of expression. Many would argue that it is too powerful to be practical.

    But speaking as a Delphi programmer who has done some work in C++, Java, and C#, I think Python has potential and is something I am going to be looking at as it evolves.

    Better yet, starting hacking in Python right now. It doesn't *need* to evolve, it's excellent as it stands. I'll take all the evolution with open arms, but the beauty of programming in Python can take your breath away even now.

    It really opens your eyes and helps you see how the rest of programming community seems to be still living in dark ages. I believe this is how Lisp people feel about their language too, so I guess we are in the same boat in a way. There seems to be a weird synchronizity b/w Lisp and Python. Both are probably manifestations of some deeply profound programming archetype :-).

    --
    Save your wrists today - switch to Dvorak
  120. Flow of control by Latent+Heat · · Score: 1
    This is only one type of error, but Clement Szeperski talks about "up calls" and related errors in inheritance hierarchies of objects.

    Your basic structured, modular, procedural program has a fairly predictable flow of control. But what do you do if you have a GUI file list view and some program "underneath" deletes a file. I don't know if there is a simple way to do this in a procedural model, but in an OO system you simply have a call back to notify the file list view that the available files have changed and the file list view updates itself.

    Now the call back could be implemented as the override of a virtual method to the base class, or it could be a Java style action listener, or it could be a call to a function referenced by a function pointer in a table as with Gnome. In any event, you start to get interesting side effects and interactions when you do this. Anytime you invoke a method of an object that calls out to anything, there is no way to insure that it doesn't call back in to that object to a method that changes the state of the object out from under you as it will.

    OO solves one problem, that is provides elegant expressions of ideas that would be a rats nest of procedure hierarchies, state variables, and polling loops, but introduces another problem: "Hey, where did that method call come from?"

  121. Re:Copyright by vorpal22 · · Score: 1

    Don't the good folks at Salon know that no one at Slashdot ever bothers to read the article?

  122. Try Smalltalk. by BitwizeGHC · · Score: 1

    When it comes to GUI programming, nothing beats Smalltalk in the ease department. Smalltalk is smart enough to make some convenient assumptions and dynamic enough to let you whip up data structures as you need them, so the nature of having to fill out structs like tax forms is somewhat ameliorated.

    Cocoa has ease and power somewhat approaching Smalltalk's, which is why it's so popular.

    --
    N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  123. Part of the Problem is the Hardware by joemontoya · · Score: 0

    A poster above state one part of the problem: you have to give the computer explicit, detailed instructions to get it to do anything useful. Using a non-procedural language doesn't change this fact, because the other part of the problem is that the machine is a procedure machine. All modern CPUs are Von Neuman machines, they work by proceeding from one instruction to the next unless they encounter a branch. On this type of machine it will always be possible for a single error to bring the whole system down. With programmable "hardware" it may well become possible to start building machines that are partially non-procedural, but the Von Neuman architecture actually works - so it won't be going away anytime soon.

    1. Re:Part of the Problem is the Hardware by rofthorax · · Score: 1

      Yeah hardware has its limitations, but as long as the CPU can continue to process instructions ten trillion billion million times without fail, its possible to develop an virtual architecture of use that reuses the instructions to produce structures useful to humans. That's what the purpose of OOP is.. The recursive feedback loop that CPU's use to feed instructions to themselves developed in the interest of making cheaper computers that were no hard wired.. But its easier to make embdedded devices dependable than to to make software dependable.

      The methods for making software dependable is to adopt OOP architectures that reuse a lot of code, so that the error are easier to fix than with large procedural code bases where code is replicated (copy & paste) style from place to place.. If people had not adopted methods of code abstraction, we would still be hand coding bootstraps calculators.. Its natural for us to produce structures that make the fabrication of ideas easier, and that's the purpose of computer languages.. However its via patterns of design and reuseable OO based languages that we are able to reduce the complexity of applications to be as dependable as hardware components..

      Hardware design is supremely object oriented because of the way things are connected, its massively parallel and reuses many chips.. Some who have adopted OO design for software and inspired by hardware design, even though the simulation in software don't work as fast as the procedural mechanism. The idea is if you can abstract away from the workings of the machine you can have the components work on any machine.
      At best the hardware could be designed to be more abstract, but its doubtful hardware manufacturers would strive to create OO language for CISC operation.. And doubtful machine designers would adopt it as a stanard, because the chips can be patented.. The software most likely cannot be patented in the same way. And it doesn't make sense for hardware designers not to patent a design.. So the only the choice is to abstract from the hardware in software, in an effort to leverage chip designers into competing in the implementation of attributes needed by the software developers.. Software is not really patentable, and its a kind of free world where ideas can be made to work regardless of copyright and patent law.

      Open Source is the free zone where these concepts break loose and change the corporate landscape of hardware and software.. That's why the corporations love and hate it.. It its the inovative light on the darkness of engineering as a business.

      --
      Just say no to license servers!!
  124. Yep by Greyfox · · Score: 1
    When I was a boy (Some 15 years ago now) programming was one of the most highly lucrative trades you could go in to. Naturally this encouraged a lot of people to get into it for the money. They wanted to make as much money as they possibly could while understanding as little about the profession as humanely possible. In the class of about 150 people or so that I had contact with at college, only about 3 of us were actually interested in computers and roughly 10% of us had actually used computers prior to college (They were still pretty rare in the home back then.)

    The industry's been happy with the trend because it drives salaries down or at least keeps them from going up as fast as they would have if only people interested in computers had gone into fhe field. Take a bunch of dimwits, slap them in a contracting house, use some marketroids to spice up the product by lying about it and you have yourself a business. It's not doing Computer Science or computer scientists any favors but who cares? Everyone's making boatloads of money.

    Hell of it is, even if you could buck this trend and hire an entire company of very strong programmers and compliment them with very strong managers, you'd have a hard time differentiating yourself from the other bozos in the market.

    --

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

  125. You forgot Gates dumster diving for source code! by BroncoInCalifornia · · Score: 2, Funny
    Gates went on to say that young programmers don't need computer science degrees: "The best way to prepare is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating systems."

    This image of Gates liberating source code print outs from dumpsters made the whole artlicle worth reading.

    --

    Religion is the main cause of atheism.

  126. Explain, please by pjt33 · · Score: 1
    There seems to be a tension in your argument. You complain, it seems, about
    Programming languages which are meant for the lowest common denominator. Those languages are used which are not the best ones, but for which you can find enough adequately skilled work force. Mediocrity begets mediocrity.
    but your main proposal seems to be
    If you want programming to not-stink, MAKE IT EASY FOR THE PROGRAMMERS. It really is that simple.
    Is the conclusion we're meant to draw that the easier a language is to use, the harder it is for good programmers to use?
    1. Re:Explain, please by Slinky+Saves+the+Wor · · Score: 1

      I will gladly explain.

      To answer shortly: yes, something like that. An easy language is not necessarily expressive enough. Please read on, I realized only now that I was conflicting myself.

      In case you haven't worked in the industry, there are many other dimensions to "programming" than just pumping out code. You have to send mails for some trivial tasks, do this, do that, take care of various oddjobs, keep up-to-date something which could very well be automated, removed completely, or made as simple as possible, etc. etc. This is what I meant with "making it easy".

      The programming languages we use now are not the best possible. They could be better. Have you written anything in the industry, using the C language? It's horrible. C++ is only slightly better. As for Java, I have no personal experience with that, but I'd imagine it's just as cumbersome and tedious as any other languages. We could use something better, e.g. functional programming languages, or something totally different. Or use the existing languages in a more smart way, with vastly improved utility libraries, so that the wheel would not have to be re-invented every single time. We could also educate the non-programmer peer groups to make it as easy as possible for the programmers.

      Easy language does not necessarily equate to a convenient programming environment, even if the language could be understood by everyone. Think, if everyone had to use Basic, or Logo. They're both easy languages. But where's the expressive power...? The convenience is lost.

      Not everyone can be programmers. That's just a fact of life. Even if the industry had a need for 10000 "professional" people with skills in x, but there's only 150 very good ones available, then dumping those mediocre or bad 9850 into the system by dumbing the whole system down for the lowest common denominators will make the capable 150 also lousy, and the results will also suck. Maybe this is an overtly elitist point of view, and if it offends somebody, I am sorry, but it's my opinion.

      --
      I do not moderate.
    2. Re:Explain, please by pjt33 · · Score: 1
      An easy language is not necessarily expressive enough.
      An excellent point - wish I had some mod points.

      It does, however, raise the issue of qualifying and quantifying expressivity. I think a strong type system is a definite plus - if you look at a language like SML, the type of a function usually tells you what it does without any further documentation. Language support for modularity, to allow top-down design which maps cleanly to a top-down implementation is also good - OO and a true hierarchical package system (rather than e.g. Java's where the apparent hierarchy is only for logical structure) do this well. Finally, I agree with you that good libraries are important - the more in the libraries and the less in the language, the better, unless taken to the extremes of Turing Tarpit languages.

      I think you're rather harsh on Java - I've been working with it in industry for nearly two years, and I find it a fairly elegant language (with excellent libraries). I'm looking forward to the improved type system of Java 1.5, which will be almost as expressive as the basic SML type system (i.e. without modules).

      Functional PLs, which you mention, are indeed elegant for algorithm development (provided the language is well typed) or fairly mathematical work, but the functional paradigm isn't really suited to I/O, which necessarily implies functions with side-effects. (And, as a side-note, Logo does include list processing commands - it's not at the level of SML or LISP, but it's probably more expressive than you think).

      In summary, I think there are languages available at the moment which good programmers will find expressive enough but which won't burn bad programmers too badly - I'd claim Java as an example, and possibly OCAML, although I haven't really delved into that. Maintaining code by someone who writes either without understanding the paradigm will be a major headache (I'm currently trying to tidy some imperative code written in Java with as little use of objects as possible - ugh), but I doubt anyone will ever write a language which forces code to be written in a maintainable way.

  127. What would Kolmogorov say about Brooks' Law? by 1iar_parad0x · · Score: 2, Insightful

    Just a random, but somewhat related thought....

    IIRC, Stephen Wolfram has argued that there exists a Principle of Computational Equivalence. (Kolmogorov and Chaitin said similar things in a more rigourous way.) In short, PCE says that any computation to describe certain phenomena would take a similar amount of time to occur as the phenomena itself. In other words, massive parallelism or some other intrinsic property causes some phenomena to be so computationally intractable, that it would be just as quick to take a measurement of the phenomena as opposed to mathematically computing it ourselves. Algorithmic Information Theory says that some data is so random that the program to describe it is of a similar message length (in terms of information) as the actual data itself. Thus there is a hidden complexity in the data.

    I wonder what Kolmogorov's view of Brooks' Mythical Man Month would be. Could it that software is complex because software is Complex? Perhaps we've reduced software to it's most reduced form. In other words, maybe there exists no more efficent way of describing the phenomena we wish to describe. Is the data that we describe in the business world is so random, that no set of instructions can reduce it by any signifigant order?

    --
    What do you mean my sig is repetitive? What do you mean my sig is repetitive? What do you mean....
  128. Re:You forgot Gates dumster diving for source code by Chris+Burke · · Score: 1

    Gates went on to say "... In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating systems."

    Doesn't he realize those operating systems are copyrighted? Bill Gates programming knowledge, and thus his entire empire, is based on copyright infringement. The shock! The horror! How dare he learn from the efforts of others without paying a licensing fee!

    Seriously, the irony is killing me. I mean making me laugh.

    --

    The enemies of Democracy are
  129. End Users need to demmand better by Tenzen01 · · Score: 2, Interesting

    Many people have attacked the problem from how Developers should write software. As many have mentioned, the ridiculous management schedules and push to just "get it out the door" tends to lend itself to corner cutting in design, coding, testing, etc.

    I think that it is up to the End Users to start demmanding better. None of "This Software is provided with no warranty" crap. Somewhat expected from Free Software, but I can't begin to understand how real businesses that spend millions of dollars on commercial software can continue to stand this. If you bought a car with even a fraction of the defects seen in most commercial software packages, you would return that thing so fast it would make the dealer's head spin.

    People will argue that building a car and building a desktop application have entirely different sets of risk and expectations. The desktop application will (probably) not kill you when it crashes. There are all sorts of regulations and lawsuits that exist to keep the manufactures very concerned about the quality of their product.

    The same is needed in the software industry. Until there is a major demand for high quality products, where users no longer expect or even tolerate that they will find bugs, software will continue to give into buggy, quick and dirty code that must be replaced every 18 months.

    There exist software industries today that have incredibly tight quality control and testing (medical & military for instance) and will not tolerate bad code or bugs. Their Software is far less feature rich but far more robust.

    End Users of the software need to demand higher standards from their software before the state of programming will really get better.

    1. Re:End Users need to demmand better by rofthorax · · Score: 1

      I doubt you've tried writting software before..
      You can't imagine how hard it is to make code bug free. The only way you could is if you wrote everything in LISP, which runs at least twice as slow as a regular application. The medical institutions are grasping onto XML based technologies that are slow and lathargic, example HL7 which is much more inefficient than CORBA based technologies PIDS/COAS/RAD . I worked with the individuals who developed the interface standards for these. The idea, to do away with patient record identifiers and to use fuzzy logic to correlate ID's based on biometrics, and then to standardize the patient record coding methods. For instance every insurance company has a different way of reimbursing the doctors.. The doctors must code their procedures and send the forms to the insurance company (without divulging too much about the specificsof the procedure or the state of the healthcare of the patient). The HIPAA regulations were developed to try to force a standardization of codes for healthcare betwene insurance companies and medical institutions. What they adopted was HL7 which requires that all the patient record be sent rather than only the precise information needed.. This means if your doctor needs information about your response to anesthesia, they must send the entire record including your AIDS tests, because of the way HL7 data is stored.. Whereas with the CORBA standard for healthcare, only those who you authorize can have the information, and only the information that is relevant to their use.. This means insurance companies only get codes relevant to the procedure, doctors only get information relevant to surgeries and diagnosis, everything is logged (because you are making calls to methods, not for patient records)..

      Also some may know that hospitals sell patient records to institutions that look for cures for cancer, its a money making business for drug companies that will use the research to release a drug usually selling for hundreds of dollars. But they must go through a process of collection of research for 5 years to pass the FDA, so they purchase people's healthcare records..

      Doctors destroy records often, only because the space required to maintain paper records is limited.. But if they store the data in computers, they must then become HIPAA compliant, because HIPAA only applies to the digital storage of patient records, not the paper representation. Note Medical Manager developed the HL7 standard, and Medical manager is co-owned by Microsoft. Medical Manager also models the pattern of Microsoft, interfaces to competitors cost thousands of dollars (just for simple things like name, address, telephone data, called ID9 format data, which is no larger than a mp3 ID information tag). Medical Manager dominates about 75% of the medical informatics industry and its largely XML based, very little OOP design, standard is limited to HL7, which is changing as a result of Medical Manager's dominance int he medical industry..

      Clinics cannot support it because a license of Medical Manager can cost hundreds of thousands.. Money that would normally go to paying for medical equipment..

      Now the development of PIDS/COAS happened at Los Alamos National Labs and others places, but there is a rule that if anything in the lab competes with the trade industry in New Mexico, the research in the lab must stop.. This happened when OEM's of Microsoft contested the research and development of PIDS/COAS using tax payers dollars.. The OEM was fearing that people would use a fully well integrated software interface based on PIDS/COAS instead of using Microsoft's software: Medical Manager, Excel, Word, etc. So the development of the standard and technology was dropped, in the name of commercial corporate software development..

      This happens everyday behind the backs of the consumers, and in the industry.. And all in the name of making money..

      So I would say that the best thing we can do is develop standards, but pay attention careful attention to what Micr

      --
      Just say no to license servers!!
  130. Software is a means to an end, not the end itself. by BroncoInCalifornia · · Score: 1
    This was touched on in the article.

    "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer." Giving the former group tools to shape software will transform the landscape, according to Simonyi. Otherwise, you're stuck in the unsatisfactory present, where the people who know the most about what the software is supposed to accomplish can't directly shape the software itself: All they can do is "make a humble request to the programmer."

    I work on a project where real time control software is written by software artists who only know software. Getting them to meet the needs of the project is like pulling teeth. They do not understand the needs of real time control software. If others beg and negotiate a lot they can get some of what they need.
    Getting this project to work has been excruciatingly slow and frustrating.
    But this is beautifull code. It is the easiest to read code I have ever seen. It is the best organised code I have seen. But the performance ot what the code does is rather poor.

    I used to work in a very competative industry. The hardware control engineers would write the control code. We would gets things functioning quicky. The code would really meet the needs of the project.
    But it was butt ugly code!

    Is there some way to get what the projects need and get readable well organised code too?

    --

    Religion is the main cause of atheism.

  131. [Inevitable OT subthread] Google cache etc. by Anonymous+Brave+Guy · · Score: 1
    If it is copyright infringement to rip an article verbatim and post it on another site, then why hasn't someone sued Google for its "cache" feature?

    That's a fair question, and one that comes up repeatedly.

    The best explanation I've seen so far is that no-one wants to risk the test case, on either side. There is a strong case that Google's cache, the Wayback Machine, the Google Groups archive of Usenet, and various other on-line archives are in blatant violation of copyright law as it applies in many countries and under international agreements. The only defence they're going to have when someone does try it on is a series of arguments based on fair use provisions (which not every jurisdiction agrees on) and acting for the public good, in that they arguably provide a useful service.

    In opposition to that, there are numerous potentially damaging side-effects of these sites, which are easy to overlook unless you've been the victim -- for example, if you're Salon and you fold due to lack of advertising and/or subscription revenue because some smart-ass posts your new article over on /. every time you write one.

    It's just a case waiting to happen, and as someone who's discussed this issue in some detail on several occasions, I think the outcome should be clear, both morally and according to the law as it applies in most places. I certainly wouldn't want to hold Google stock when the verdict was announced...

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  132. Re:Interstitial Ads v. "have to pay" v. reg-only . by timothy · · Score: 1

    "Oh look, a free independant website. And another. And another. Must be an optical illusion."

    Sorry, could have been clearer. I was talking about commercial websites (like Salon). Independent / non-commercial / non-reader-paid websites (such as tax-supported ones) are great too.

    timothy

    --
    jrnl: http://tinyurl.com/c2l8yr / foes: http://tinyurl.com/ckjno5
  133. And this is why you don't understand it by Anonymous+Brave+Guy · · Score: 1
    Admittedly it was outside of the letter of the law to post this outside of its home site.

    OK, before we start, let's be clear that you just said all that matters. If you object to anything else, it's nothing but your personal opinion, and if you want things to change, you should be campaigning to update the law, not ranting on Slashdot.

    But this is the internet. The expectation is to be able to link to another part of someone else's site so that we have this inter-related "web" of information. The commercialization of the internet with broadcast paradigm limitations destroys the peer-to-peer web-like nature of the ... of the web.

    The Web would be nothing but an academic toy without that commercialisation. The use of the technology is evolving quickly, just as any new field does, but that evolution does not give it the right to violate the accepted rules of society. The Internet is nothing special in the eyes of the law, nor should it be. It is simply a new context, which requires clarification or adjustment, not a complete departure from existing norms. Understand this, please.

    As for copyright: Copyright was meant to limit copying with copy presses.

    No, it wasn't. It was designed to promote the generation of content in the interests of society, by recognising that producing good content requires investment, and that by offering reasonable guarantees to the authors in return for that investment you will encourage content generation.

    Anyway, even the letter-ignoring law abiding slashdotters understand the bad karma of direct posting, but the impetus for doing so was that the submission of this article appeared to be an intentionally subversive advertising ploy.

    I dislike the fact that the editors accepted the submission under the circumstances, but two wrongs do not a right make. And cut with the "impetus" crap: someone does this pretty much every time there's an interesting article hidden behind a front-end, even when all the front-end asks is a little advertising revenue from you in exchange for showing you their article.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  134. Then you're really gonna hate this... by Anonymous Coward · · Score: 0

    This is some serious copyright infringement, man. Ripping an article verbatim and posting it on another site.

  135. Re:ADA by Suicide+Clown · · Score: 1

    Back in the early 90's, I took a programming languages class. I was amazed that the first non-trivial program I ever wrote, that worked correctly after the first successful compile, was written in ADA.

    --

    "I don't know why I bothered to type this in."

  136. Is it elitist? by Anonymous+Brave+Guy · · Score: 2
    Except for some elitits who claim one has to use, say, functional programming languages to do anything interesting, or "no pain no gain" hard-core low-level language fanatics, most truly good programmers understand it's not tools that make exceptional advances; it's the craftsmen that use them.

    On the other hand, a professional in this field who isn't at least aware of the benefits of both low-level languages and functional programming probably has such a hole in general knowledge of their subject that they'll never be a "truly good programmer". You don't have to use them, any more than you have to be some sort of L337 Hax0r d00d who runs Linux because it's cool. But some awareness and appreciation of the strengths and weaknesses of different tools and approaches is elementary to becoming a competent practitioner of any craft -- not an expert, just competent.

    Until we get away from this attitude that writing a basic database front-end in Visual Basic or an eight-week course in Java and OO qualifies you as a competent professional, and get back to the point where the average developer has a basic appreciation of the broader issues in their subject, we will continue to write crappy code, the world will continue to succumb to script-kiddie hacker wannabes, business software will never live up to its promise of boosting efficiency for the real work your company does (whatever that is), and so on. That's what you get for hiring incompetents, and sadly, incompetence has become the norm in our industry.

    This is not elitism. It's simply advocacy of learning your subject before practising it, and taking a little pride in your work. Both are terribly old-fashioned values in today's high-tech world, and terribly politically incorrect, but there you go. You wanted to know how to improve things; I'm just telling it as it is.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  137. Where's my engineering document? by pkesel · · Score: 1

    Physical products - cars, desks, pacemakers, light bulbs, you name it - are produced from engineering drawings that specify exact dimensions, materials, tolerances. They are manufactured on machines that themselves have been engineered to great precision.

    Until software can be specified with such a degree of precision, until there is a software 'engineering diagram' that leaves nothing to be misinterpreted or misunderstood the developer will be left to his own machinations, and the industry will be left to the capabilities of its practicioners.

    As it stands, no one can tell the developer just exactly what they wish to have built, no developer can be sure they've met the full set of true (not the stated) requirements.

    Better languages, better software tools, better developer training will only do so much. It must eventually come down to the software 'Engineering Diagram' that is precise, accurate, and that ensures that the measure of correctness is unmistakeable.

    --
    - Sig this!
    1. Re:Where's my engineering document? by dsgrntlxmply · · Score: 1
      In software, you are typically trying to make one person be both the domain expert (the mechanical engineer), and the tool and die maker (the implementation expert).

      The component count in a useful embedded software product probably falls between that of an automobile engine, and that of an entire automobile. Some of the parts in that automobile are indeed simple standardized bolts and washers, but then there are all the others which, when they break and must be replaced, cost $382.27 at the dealer's parts counter.

      Demonstrate that the mechanical engineering model miraculously brings a software product from concept to production, with fewer people and at lower cost than Ford or Boeing or Bechtel require to produce a tangible product.

      Look also at the magnitude and time scale of the investment comparatively between the mechanical product and the software product, both in design, and in design verification.

  138. Example, complete with horror story by Beryllium+Sphere(tm) · · Score: 1

    >The problem, IMO, is that providing a specification that is detailed enough and correct enough to generate a correct program from is just as hard as writing the correct program in the first place.

    Absolutely.

    Once upon a time, there was a chemical plant. I read about it in a book about safety engineering.

    The chemical engineers gave the programmers a spec that looked complete and reasonable. Among other things it said that in the event of an alarm condition the software should "step away from the controls", leaving everything unchanged.

    Then one day the software had just added a chemical to a tank that caused a reaction. It was about to start the cooling water when an alarm went off, due to an irrelevant gearbox overheating elsewhere in the plant. The reaction went ahead without the expected cooling. Boom.

    The chemical engineers were so skilled that their knowledge was implicit. It never occurred to them that someone might start the reaction first and then turn on the cooling water. The programmers didn't know chemical engineering and it didn't occur to them that the order mattered (though certainly they should have wondered if there were atomic transactions with the plant controls!).

    In some ways writing a specification is harder than writing a program -- you can't run a specification to see how it work. If you could, it would be a program.

  139. Employers stink by Wishbringa · · Score: 1

    Its simple really.. Employers don't want quality.. I constantly got criticized when I started making something truly great. Mainly because my boss lacked technical understanding.

  140. Re:Mechanics and programmers have similar problems by ciggieposeur · · Score: 1

    Yeah sure. Pick up a "Programming X in 24 Hours", play with it for about four years, and you too will be just as well-trained as the mechanical engineer who designed your car engine.

    Not.

  141. simonyi stuck in the 20th century by Anonymous Coward · · Score: 0

    Some of these comments were valid 10-20 years ago when case tools were a lot worse. But it is changing. He needs to do some coding again to whats out there.

  142. Re:Interstitial Ads v. "have to pay" v. reg-only . by gnu-generation-one · · Score: 3, Insightful

    "Sorry, could have been clearer. I was talking about commercial websites (like Salon)"

    Yep, it's pretty awful watching people like Salon trying to operate a website -- kind'a like watching an amateur at anything failing.

    For any other website, it's surprisingly simple. Write something interesting, put it on the web, and people come to your site and read it.

    Then newspaper companies try the same, and completely fail.

    They design a subscription system, spend years sorting out credit-card handling, account management, setting up the website to track people, setting up systems to stop images being linked to, setting up referer logs and browser-detects, setting up banner advert servers, loggers, and systems to charge advertisers. Setting up systems to convert simple text stories into flash or images or 10 frames, or anything to make it more difficult to copy.

    And then after a hundred thousand dollars have disappeared into website design, start copying stories from the newspaper onto the website. And wonder why so few people are jumping the hurdles to get to any of their content.

    Then having a meeting, wondering why nobody's subscribed, and spending thousands more dollars setting up a system where people can watch an advert and do something to prove they read it, and setting up a temporary ID and making it so people can use that ID to read content, and doing the logging and the tracking and the cookies to make sure that only one person can use each ID at a time.

    And they wonder why the website isn't making a profit.

    Eventually they get a few thousands of subscribers, and rack their brains trying to think how to make the site more profitable, even as they spend 60K per year on DBAs to handle all the user-ID and user-tracking databases, and the same again on support staff to handle lost passwords and account cancellations.

    Yep, it's like watching a newbie bricklayer's wall falling down each time he builds it and wondering what's wrong. So bad to watch, you almost feel compelled to go over and offer them a clue. But they'd never take it. They know what they want, and it's big-budget.

  143. Re:Software is a means to an end, not the end itse by Hast · · Score: 1
    Is there some way to get what the projects need and get readable well organised code too?

    I'd say you have to educate the people writing the code. Either you give the coders a quick introduction to control theory or you give the hardware engineers a course in writing readable code. You could of course do both and try to make them "meet at the middle".

    My point isn't that you should teach the CS guys how to solve control theory problems, you already have people for that. The point is teaching them enough so that they know they actually don't know anything.
  144. Re:Mechanics and programmers have similar problems by RenaissanceGeek · · Score: 1

    That would be EXACTLY, DIAMETRICALLY wrong.

    In the real-world, programs need-to be idiot-proof, because the number of idiots that purchase the software will FAR outnumber the uber-geniouses that will. Guess which demographic will cost the developer more in time spent doing technical support? (hint: not the geniuses.)

    Geniuses can get by with an application that requires the user to do things like translate coordinates from an n-dimensional array into a linear string (1-dim array), because they can do those things in their head. The rest of us want computer programs in order to AVOID doing tasks like that.

    MAYBE the perfect programmer is one who is suffering from multiplepersonality disorder: an idiot and a genius with access to the same knowledge, of course!

    Or maybe it's not that simple.

    --
    What is the difference between a small revolutionary change and a large evolutionary change?
  145. Yes you can by nutsy · · Score: 1

    I've gone through the silly day passes before, and I'm using lynx! It doesn't require any plugins, just clicking through 10 or so ad banners that I can't see. :)

  146. I've got one word for you: wParam by waimate · · Score: 1
    Pun intended. For those who don't know, Windows SendMessage takes two parameters in addition to the message number: lParam and wParam.

    You guessed it, in Win32, wParam is 32-bits long.

    Hungarian notation is misleading and counter-productive, and should be consumed with the greatest of caution.

    1. Re:I've got one word for you: wParam by Anonymous Coward · · Score: 0

      wParam being 32 bits is reasonable. The problem is that M$ still thinks a "word" is 16 bits, when it's correctly defined as the size of your machine's general-purpose registers.

    2. Re:I've got one word for you: wParam by waimate · · Score: 1
      Well alright then, it's lParam being unreasonable - whichever you prefer.

      The point is, Hungarian notation tells you how things were, not how they are, and so you end up thinking wParam and lParam have two different fundamental data types, when in fact they are identical.

      Anyway, by extending your defense of wParam, in Win64 wParam will be 64 bits wide, while lParam will presumably remain 32, thereby creating the situation in which something which isn't long is longer than something that is!

  147. The programming paradigm needs to change by StarBar · · Score: 2, Interesting
    I could write a very long post about this because I have given it a lot of thoughts over the years, but I'll keep it short(er). I have bitched a lot about why we need better software and *not* faster CPU:s. Does your word processor produce your documents faster these days using 2.6 GHz instead of a dazzling 90Mhz? Ohh, you still type at the same pace...?

    Writing stuff in C gives you speed and almost total freedom. Nowadays you can even write drivers entirely in C. Pascal and Ada tried to address quality issues by limit the freedom with declarations. OO languages like Simula, C++ and Java tries to address reuse. Interpreting languages like BASIC, Perl (semi) and shell scripts adresses the compile time issue. But who/what adresses the way we attack the problem?

    The common denominator for all languages needs to be adressed. The text file! Just think about it, how much time is spent just to format and handle the chunks of code that should carry out your creative solutions? More than you think including missing #includes, linker arguments, shared/private symbols, bugs related to text file scope (static globals) and lazyness not refering across text file boundaries properly when the project grows.

    Smalltalk tried to adress this by making everything OO in a super inheritence metaphore, but to me at least I just got confused because the base functionality is so huge. Maybe they are onto something but its far too complex to gain popularity and I don't think it has the simplicity needed to succeed. Many incremental compiler projects has been promissing I think but we haven't seen a real usable and working environment yet.

    I do think that with some slight adjustments to the C language removing the text file as scope and the #include CPP directive a base for a better and creative programming paradigm could start. Instead all globals (variables and functions) should be stored in a "scope tree" where the actual storage should be language idependent. Each level in the scope tree should require an API declaration. Each node could be idependently compiled and incrementally linked. Emacs would work directly on the scope tree. The system should be able import C projects and detach the code from the text file structure.

    This would give the programmers back some of the energy and creativeness wasted on dull tools and malfomed source code trees of today, without loosing the huge C base of sources out there and instead focusing on the language itself.

    I know this is just a dream I have had for a long time and maybe someone already started on a similar project somewhere?

  148. 3 reasons why I think software sucks by niteblade · · Score: 0, Redundant

    I have been working in industry for a bit over 7 yrs and have made a few observations that I believe makes software suck:

    -People try to rely on process to fix 'common sense'. By common sense I mean being careful, meticulous, and using one's brain for each situation one comes across. Granted, I work in a large corporation and this may not apply to some of the smaller companies, but I have noticed that when we find a bug, or have some sort of other development issue, management tacks on more process to fix it. It's of course normal for people to make mistakes but sometimes you just have people that continually use poor judgement - get rid of those people and get others who can do the job right!

    -Today's engineers have a large tendancy to overarchitect, doing MUCH more than is required; overthinking what possible changes may occur in the future and designing code around that idea (this idea isn't bad in and of itself, but I have found people get carried away in this area) - What happened to the KISS principal?

    -I may sound horribly outdated, but I have serious questions as to whether OOP has bought us anything as an industry. Sure, when used properly, I believe it can have some benefits. BUT I think it gives the programmer so many powerful tools, that incompetant programmers (of which are there many) turn those tools into powerful weapons. Most of the projects I have dealt with have been C based (~90%) - the rest, some sort of OOP (the remaining 10%). Even though the quantity of procedural code greatly outnumbered the OOP, the two most confusing, sh*ttiest pieces of garbage were OOP - I don't this this is a cooincidence. I have found that people can learn the techniques and tools of OOP, but often they fail to understand the philosophy and why it was developed in the first place. Abuse of OOP creates mass amounts of crap code that needs to be maintained.

  149. Re:Last bastion of the tired/lazy/stupid/damned... by Anonymous Coward · · Score: 0

    What school do you go to? At my school people who failed out of CS ended up being Chem E.

  150. Re:ADA by Anonymous Coward · · Score: 0

    Yea, I'll never be able to understand we people keep
    writing c code, in large projects, when ada is available.

  151. Re:Python: Everything you want from Lisp -- and le by Alan+Shutko · · Score: 1

    I don't know anybody who's learned a real lisp in school. Generally, it's scheme taught with a focus towards recursion and lambda. Scheme is a language which has been intentionally trimmed to be as "pure" as possible.

    Lisps which have more built-in functionality aren't covered. Like iteration! OO! All sorts of useful things. Common Lisp is a completely different experience from Scheme. I was taught Scheme in school. Hated it. Now love Common Lisp and even Emacs Lisp (in Emacs, at least).

    So I disagree that many programmers have been taught Lisp and dislike it. That's like saying that people have been taught C++ and disliked it when really, they've been taught C or java. (Both in the same family, but very different.)

  152. Re:ADA by Bush+Pig · · Score: 2, Informative

    The reason we do this is largely because Ada compilers tend to be expensive, buggy or huge (sometimes all of these). That said, Ada is a really nice language to program in. It was the primary teaching language at Adelaide University when I did my degree, and certainly helped force good programming habits. Although it's possible to write horrible code in Ada, it requires a particularly dedicated kind of stupidity, and the nice thing is, that if you get a clean compile, you can be pretty sure the program will do something sensible (but not necessarily what you intended).

    --
    What a long, strange trip it's been.
  153. Re:Python: Everything you want from Lisp -- and le by voodoo1man · · Score: 1
    Python is Free as in Speech, Free as in Beer, a unified language with no spun-off dialects.
    I have to disagree on your last point. Python is an implementation-defined language, and there currently is more than one implementation. You mention Psyco, which has "some subtle semantic differences (i.e. bugs) with the way Python works; they should not be apparent in most programs." This is not too bad, but there is also Jython, which has some significant deviations from the main Python implementation. Most of these are in terms of Unix hooks and the lack of C FFI, but I consider these to be the strongest features of Python.

    One thing I'd like to see cleaned up in Python is support for functional programming. Proponents like to go on and on about how well Python handles FP, but in reality it is awkward at best. The first thing that jumps out is that a lambda body can contain only one expression. This doesn't sound terribly restrictive until you realize that Python has a sharp divide between "expressions" (they may return values) and "statements" (they don't return values, and may have an implicit block), and that there is no explicit block construct. The former makes it kind of hard to make useful closures (since assignment statements are statements, after all), and the latter makes lambdas useless for all but the most trivial uses (after which you have to fall back on named functions for their implicit block). The obvious solution would be to make an explicit block-making expression, but I don't know how this would work with the current practice of specifying all (implicit) block scope through identation. Another annoying thing is the inability to pass operators as HOFs (but then again, this ends up as one of the few uses for the crippled lambda).

    One thing that Python totally rules at is structured imperative programming. Here is where the block-indentation really pays off - it allows a minimal syntax in terms of irrelevant punctuation, and mandates a legible writing style. Indeed, in C (and especially in C++), it is very easy (in the case of C++, I think it's encouraged) to write unreadable code - all the Python I've seen and done so far makes me think that one has to work against the language to produce hard to read code. And the C++ integration of Python can't be beat (the only Qt I like is PyQt). As I've stated in a recent posting, I think the best way to write C++ applications is in Python.

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.

  154. Two Types of People by Ridgelift · · Score: 1

    "There are two meanings to software design," he explained on Tuesday. "One is, designing the artifact we're trying to implement. The other is the sheer software engineering to make that artifact come into being. I believe these are two separate roles -- the subject matter expert and the software engineer."

    There are two types of people in this world: those who can write code, and those that can't who whine and bitch about how hard programming is so they come up with stupid ideas like this one in hopes they can shackle the talents of those who can program their lame ideas.

  155. Signal/Noise by Anonymous Coward · · Score: 0

    Quick way to drown out your code with noise.
    Only people seem to benefit by it are rape and pasters ---

    they tend to appreciate the unique namespace 47 lettered variables afford.

  156. Why Programming Still Stinks by yason · · Score: 2, Insightful
    Why Programming Still Stinks

    Because it IS hard and has very few ubiquitous engineering disciplines and practices to support creating a distinguished craft out of it.

    It also offers lucrative fallacies to explain further the lack of those qualities. First, as opposed to "programming" (the real craft) "coding" (a more common practice) is NOT hard and almost any technical person can write code. And coding is unfortunately commonly mistaken for programming. Designing and writing maintainable programs that are as simple and elegant as possible, and then actually maintaining them is not included in the skillset of many people in the business. Most of the commercial software sucks and has a relatively short life.

    Secondly, companies not investing in quality helps creating a breeding pit of bad, non-sustaining program-making habits. Sadly enough, customers are kind of used to the unfunctionality of computer programs, they won't demand standards on software quality. Therefore, it's not profitable to do a good job since technically inferior products often conquer the markets and set actually good products aside due to non-technical factors (as it was with Microsoft Windows).

  157. Re:You're right. And yet... by BiggerIsBetter · · Score: 1
    Yes, but the suit would ask for damages.

    I wonder how that works on the 'net? If they missed out on 20,000 hits on a 2 MB video, does that mean Slashdot would have to stream 40 GB of their video ad data to /dev/null?

    --
    Forget thrust, drag, lift and weight. Airplanes fly because of money.
  158. Re:ADA by turgid · · Score: 1

    Back in the days of DOS, I got hold of FST Modula-2. Previously I'd been writing C. What an eye-opener that was. I learned so much about "good programming" from using Modula-2 for a while. Later I had to do some work in Pascal (Turbo Pascal 7). I really think that using strict, strongly-typed, well-designed languages is a very valuable experience that every programmer should have.

  159. Jaron Lanier works? by rofthorax · · Score: 1

    I thought he was a MIT grad that just sat around growing his dreads and pretending to be a visionary.

    --
    Just say no to license servers!!
  160. Re:Mechanics and programmers have similar problems by Anonymous Coward · · Score: 0

    There are good programmers and bad programmers just like there are good engineers and bad engineers.

    Your example of designing an engine is the same thing as saying any Joe can learn to write an OS in 24 hours. Not.

    Some stuff is complex, some isn't dumbass.

  161. Re:ADA by Anonymous Coward · · Score: 1, Informative

    The reason we do this is largely because Ada compilers tend to be expensive, buggy or huge

    Wrong, wrong, and wrong.

    GNAT, the GNU Ada compiler, is Free (as in speech and beer), commercially supported, and has been integrated into mainstream GCC development. Get it. Use it. Love it.

    Users of debian can simply "apt-get install gnat" (and also think about getting gnat-gps gnat-doc ada-mode and ada-reference). Other distros probably have similar packages, Others can check GNUAda.org, which has packages for Linux, NetBSD, DOS, and OS/2.

    I studied CS at NYU and took a programming languages class with Robert Dewar (main author of GNAT and president of AdaCore, the company behind GNAT, among other things (SPITBOL, anyone?)). One of the best classes I've taken at college.

  162. Re:Mechanics and programmers have similar problems by egriebel · · Score: 1
    You have hit the nail on the head, but for a different reason. I take my car in for repair; the parts are 2x what I can get them for at Autozone or Internet, and the hours quoted to fix are about 2x what I'd figure it would take, both conspire to make me feel like I'm getting taken advantage of.

    Some programmers/consultants are the same way. The rate quoted is a little on the high side, and the work that sucky ones do is dodgy at best and is non-functional at worst. But, the client still has to pay, and he/she feels they were taken advantage of.

    Both professions are ones that, a) the simple stuff is easy to do such as oil changes or Excel spreadsheets/VB, b) the harder stuff is exceedingly difficult to do yourself, and c) when you decide to take the harder things on, oftentimes you wish you hadn't because the problem is worse.

    --
    ACHTUNG! Das computermachine ist nicht fuer gefingerpoken und mittengrabben. Ist nicht fuer gewerken bei das dumpkopfen.
  163. Programming is an art by Prototerm · · Score: 1
    This is more or less a comment on this whole thread, not just on the parent.

    Having spent 20 years as a programmer, I can tell you that the first thing I have to do when working with someone straight out of school is to deprogram him/her. CompSci teachers just don't live in the real world of budgets and deadlines. Schools are geared to teach you how to take tests, nothing more. It takes a lot of personal effort to really learn something, and all a school can do is expose you to information. If all you do is pass tests, then you haven't really learned anything.

    Programming is an art, and not a science. You may know the words and the grammar, but that doesn't mean you know how to write a novel. I can't tell you how many times I've had to clean up someone's "Gee, see what I can do" code that is overly complex, using language features that are inappropriate for the task at hand in the attempt to gain the appearance of proficiency.

    A lot of programmers today forget that the purpose behind writing a program is to actually help another human being. They get caught up in the joys of this language, or that syntax, or -- heavan forbid -- which license is better to release the program under -- that they forget why they're here. You don't learn that in school. You learn that by being a user yourself, and remembering your struggles.

    The reason that programming has turned into an assembly plant operation is that there aren't enough "artists" to go around. The economy in general, and IT in particular, will be seriously hurt by this, because companies don't recognize the distinction between the "artist" and the "factory worker". The artist is put on the assembly line for low wages, and has neither the urge, nor the means to innovate. Open Source will also be hurt by this, as such programming requires both time and money (hardware, at least, is not free), neither of which will be provided in abundance by the assembly plant.

    Some days, I swear I should've learned to be a Plumber. At the very least, it's difficult to do that job from India!

    P.S., Do you really expect that anyone in a place like /. would get your reference to Donald Knuth? Come on.

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
  164. Whoops, you pasted the wrong link. by Anonymous Coward · · Score: 0
  165. Re:Prog. stinks because algorithms can't be proven by Teancum · · Score: 1

    Algorithms can be mathmatically proven, and have been.

    The problem is wheither they can be proven completely in practical terms, not to mention proving an implementation of a particular algorithm.

    In the time it would take for me to complete a proof of some piece of software I wrote, I could write a dozen (or even hundred) other programs. That and trying to develop the skills to perform a rigorous proof would have to be developed, which are (usually) never taught in a typical CS program at a university. Instead, mathamatical proofs of algorithms are usually a side curisoity that is done maybe once or twice (in a lifetime), and even then you give up trying unless it was a simple "Hello World" application.

    I've also heard that good programmers are people who can visualize in multiple dimensions. This is not an easy skill, and in reality something quite rare. Most people can only visualize in two dimensions, with a great deal of struggling trying to get things to fit in a third. Even to grasp that there could be a fourth dimension and what that could be like is even harder to find still. I have some (simple) software I've written that has 10-15 dimensions of variables applying and relating to each other, and trying to convey that to somebody who doesn't get it can be quite difficult. If you've done some serious programming, I'm sure that you can relate to this, although you may not be thinking in the dimensional aspect unless it is pointed out to your directly.