Slashdot videos: Now with more Slashdot!

View

Discuss

Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

CowboyRobot writes "The Software Inferno is a tale that parallels The Inferno, Part One of The Divine Comedy written by Dante Alighieri in the early 1300s. That literary masterpiece describes the condemnation and punishment faced by a variety of sinners in their hell-spent afterlives as recompense for atrocities committed during their earthly existences. The Software Inferno is a similar account, describing a journey where 'sinners against software' are encountered amidst their torment, within their assigned areas of eternal condemnation, and paying their penance. Quoting: 'CANTO 6 - HERESY: ...The countess explained that these chaotically traveling souls were strongly at variance with well-established beliefs and laws of software engineering developed by experts on the subject. Their unabashed contempt for universally accepted truths spawned decision making that wrought great damage upon software projects in their charge. Some challenged Fred Brooks' sacred counsel in futile attempts to rise above their failings by adding new people with woefully insufficient qualifications to rescue already-late projects. Others flaunted their derision by disregarding software design patterns sanctified by the Gang of Four, instead opting for inelegance of their own in attempts to solve problems whose solutions were already proven, well known, and time-honored.'"

I've seen far more organized iDiots than the anti group. The anti group is just fed up with the " it just works and is sooo worth the extra money, and if you don't agree you don't know tech" morons constantly worshiping steve jobs. Never have I seen a group of customers accept the blame willfully and defend the products flaws like they are a good thing like sheeple.

And not even an actual religion at that. Dante's works, though well-known, are extensive fictionalized extrapolations from the religion upon which they are based. It is more like religious "fan fiction" than religion, IMHO.

It may surprise/. folks to learn that much of what modern Christendom believes about hell is actually from this man and not from Moses, Jesus, Paul, Peter, et al. I.e.: The Bible doesn't really teach the version of hell everyone seems to believe in. Rob Bell has an easy to read book ("Love Wins", to which Francis Chan's "Erasing Hell" is a somewhat non sequitor of a response) and Edward Fudge has some somewhat more in depth treatises on this for people who want to exercise their Google-fu.

And yes, it's more complicated than "Dante Created Hell", with ideas from philosophers and other religions entering the mix. Dante just gave preachers a nice manipulative tool to scare the ignorant into toeing whatever line they drew. And, perhaps, give us some feeling of justice for truly evil people.

It does speak of it, but it does not necessarily specify the "eternal hell if you don't believe" stance that some denominations have promulgated.

There are several possibilities that are not at all easily dismissed by reference to scripture itself...

1. That it is spoken of allegorically2. That it references "destruction of the soul" rather than "suffering of the soul" (per Christ's use of "destroy the soul in hell")3. That it is a temporary, not permanent state4. That it is the final dispensation of the

Which hell did you have in mind that is so plainly spoken of as a "real place"? Sheol (Hebrew for the grave)? Hades (Greek for the grave)? Tartarus (not forever, not for people)? Gehenna (trash heap outside Jerusalem)?

Yes, those are all spoken of as "real places". None of them are plainly a "place where people go to live forever while they're being tortured", which is what "...much of what modern Christendom believes about hell..." and which is derived from Dante et al and not from the Bible.

Putting it in a form that people are familiar with can make it an easier or more entertaining read. I first read Henry Spencer's 10 commandments for C programmers [cat-v.org] some 30 years ago. It was good then; it is still largely relevant with a few changes, eg: in commandment 10 substitute 'Intel' for 'VAX'; commandment 1: well the 'lint' function is usually available as a high warning level in most compilers.

Others flaunted their derision by disregarding software design patterns sanctified by the Gang of Four, instead opting for inelegance of their own in attempts to solve problems whose solutions were already proven, well known, and time-honored.

It's entertaining, typically weird article from Bell. They're a bit snarky but somewhat long-winded - his penchant to build classifications of things overrides any real deep-dive into what he's talking about. And his daughter appears in every article, I'm surprised there isn't a "17 types of annoying child" article yet.

His other complaints: UML, XML, Agile misuse/overuse - each with an article, blog post that has invented classifications.Where's the one on "taxonomy joke" overuse?

Because I always thought there was a special place for those who could cram 7 GoF patterns into a HelloWorld, whether they needed them, or were ever ever ever going to extend or reuse the HelloWorld or not.

Coming up with a completely stupid name for a simple pattern doesn't make you a good programmer. The Group of 4 decided they would look at the "common" patterns used in programming and instead of doing something useful, they would just assign them pointless names. Anyone who quotes the Group of 4 with intention of using the names they came up with, generally, isn't a good programmer. A good programmer is busy writing / testing code and doesn't have the time or the need to read and remember books about ho

While I don't completely disagree with you, "good code" seems to imply a judgement based on some values. In enterprise systems, the transferability, maintainability and self-documenting concepts in code can play as much a role as footprint, security and speed. Not all systems are dancing on the edge of "too big" or "too slow" - they are closer to failure because of "poorly defined", "too fragile" and/or "too esoteric".A company may want to keep modules in plainspeak, well-documented and slower.NET componentized form because they burn through developers every 2 years, like the industry avg. If your job stops as "stable and secure" you may not really be contributing to a software system portfolio like a large company needs.

Which is why, in an enterprise development environment with high project turnover, adherence to the names of the GoF patterns can be valuable as well. If you have an objects of class Foo and FooFactory, then everyone familiar with GoF will understand that the FooFactory's purpose is to create new Foo instances. Likewise, many developers will be able to guess what FooDecorator and FooVisitor do.

Those aren't the four things I look for in a program. I look for this:

1) Does the code work/fill the requirements? (high efficiency might be a requirement, or it might not. Same with cross-platform compatibility).
2) Is the code readable? If not, it doesn't matter how great your design is, people who come after you will rewrite it.
3) Is the code flexible? If not, your design is more a hindrance than a help.

Code that fills all three of those is rare and beautiful.

A good programmer is busy writing / testing code and doesn't have the time or the need to read and remember books

A good programmer is always looking to improve his skill in any way available, including reading.

To be fair, their original intent was to help with communication, so they looked at patterns people had been using and tried to put them into a simple taxonomy so that programmers could talk to each other about how they structured things. It was less about 'there is a problem, this factory pattern will solve it' and more 'I used a factory pattern, now you have an idea of what to expect from this code'.

Which is precisely what they did NOT do. They didn't uncover them, they just made shit up.

[citation needed]

IOW you're full of it. Common patterns in design, i.e. sensible general designs occur all over the place. The GoF didn't uncover them all but they are certainly common patterns. It's very helpful to be able to refer to them with a widely understood name.

Or for less experienced people to tell them it's an instance of FooPattern so they can look it up, rather than having to read all of the code not knmow

The GoF didn't uncover them all but they are certainly common patterns.

So... Where's the evidence? Where's the research? What do you think about beliefs unsupported by evidence?

It's very helpful to be able to refer to them with a widely understood name.

Are you sure about that? Again, where's the evidence? You can tell me personal stories all day, and I can match every one with a tale of pattern abuse. That won't get us anywhere. Let me known when there's some actual research that supports your assertion.

The unix open(2) system call is a classic factory pattern.

That's more than a bit of a stretch, don't you think? Connecting this to your earlier quote, how does inexplicably calling it a "factory" bene

oooh I dunno. Try looking at the citations to the 8 page bibliography in the back of the book.

That's more than a bit of a stretch, don't you think?

No, not at all. It's classic factory pattern.

You get a handle to a base class with a bunch of virtual methods (read, write, close, lseek, fcntl, ioctl, select and so on). The kernel chooses the derived class based on the arguments (i.e. filename) passed to the factory. The underlying behaviour of the derived clas

No surprise there. It's because it doesn't actually exist. You'll find absolutely no research to support your assertions.

Since you don't care about evidence and obviously like accepting things on blind faith, I have an argument that's very likely to convince you: The ghost of Steve Jobs appeared to me on a piece of toast and told me that design patterns were nonsense.

Well, by calling a factory, you could deduce something about the way it works.

In your example, you don't. You gain absolutely no benefit. It's just you desperately trying to force it in to conform to terms with whic

As I pointed out, your evidence isn't. Take a look at it yourself. Your "evidence" completely supports my earlier assertions! Go ahead and actually look at what you're offering as "evidence". You're in for quite a surprise.

No, you haven't pointed out, you've asserted it without a shred of evidence.

GoF is full of references and citations to large existing software projects. You can see all of these references if you read the book. You're merely asserting that it is not the case. I can see the former, therefore do to anything more than make hollow assertions, you have to give some shred of evidence for the latter.

You might not like the evidence or the conclusions they come to, but pretendi

In the intro they mention experience, in the book they actually provide evidence

No, they provide a few examples. That's not evidence. See, the examples are there to imply that these alleged "patterns" actually are common solutions to common problems.

There is no reason to believe that "patterns", by their definition, exist at all.There is no reason to believe that the "patterns" they present are representative.There is no reason to believe that the problems the "patterns" are intended to solve are common. (How frequently the problems appear)There is no reason to believe that the "patt

From Page 3: "a pattern has four essential elements [...] The problem describes when to apply the pattern"

Have you read the book?

A pattern does nothing. It is not intended for anything. It is an observation of how people solve the same problem.

Some obvious facts: They didn't examine a large sample of programs (how were they selected?), identify common problems (using what methodology?) and how those problems were solved. They didn't compare their "patterns" to alternative s

It's not long, it validates my claims, and (as you've seen) even directly contradicts a few of your points.

A few of the side points, but not the main one. I don't deny that they mention personal experience in the introduction, but all research is bstarted with personal experience ultimately. The main part of the research, i.e. all the citations is in the main book.

You keep on pretending that the rest of the book which invalidates your point does not exist.

They provide plenty of examples with citations. That's the research you keep hallucinating the nonexistence of.

We've been over this. What do you think constitutes research? Put yourself in the authors position. You want to know if there are common solutions to common design problems. What do you do? You'll need a sample of computer programs to examine. How do you select that sample? You want to identify the design problems that appear most frequently, what is your methodology? How do you classify the solutions so that you can identify which solutions are common?

I'm not sure what we're arguing about. I think you're right that perhaps we agree more than not.

I think we agree that the patterns do exist?

We certainly agree that GoF is not a religious text with which one must not argue.

As to whether they have done research, I think we're still arguing about that. I think what they did qualifies as research, I think they've backed it up with a decent number of decent citiations. Whether that's good research is another argument.

Note that I have not said, "does it do what the users asked for" or "what the user wants". Users may make requests that fall short of what is possible, or are impossible, or will not be workable in the long run. Part of your organization's job is to let the user know what will work. Part of your job is also to surprise the users in a pleasant way. Pleasant surprises are "oh wow, we can use keyboard shortcuts for that now" as opposed to "we re-arranged the UI and added dancing bears because everybody is doing that now".

I think that list badly needs a 2. Is the code maintainable. It doesn't matter how orgasmically beautiful and lightning quick the code is if it can only be changed by Chuck...who just died of a heart attack last week. Uh oh.

The maintainability requirement ultimately flows from the "one rule" as well. It's not as urgent as "runs without crashing every five minutes" but it's a valid concern. If everything goes well the company grows organically, turns the corner, and Chuck's code is gradually superseded by the process weenies that come in when the company gets large.

If you hold on to unmaintainable code too long, it will be impossible to add features, maintain performance, port to new systems or do things that customers want a

"Does it serve the users well?" is a question that needs to be asked from time to time when developing code as a way of keeping perspective. But the point of the rules and guidelines is to find ways to achieve that goal. Whether the rules and guidelines actually serve their own users well is another question.

They clearly had fun writing that for at least the exercise in wordsmithing alone. I imagine it must also be satisfying to banish your tormentors to their judgment. Unfortunately there didn't appear to be a place reserved for trolls.