![Software Software](http://a.fsdn.com/sd/topics/software_64.png)
![It's funny. Laugh. It's funny. Laugh.](http://a.fsdn.com/sd/topics/humor_64.png)
The Software Inferno 109
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.'"
Frosty from beta (Score:1)
Posting from beta.
Breaking two lines. Is this being formatted right?
Thanks,
AC
Re: (Score:2)
We're the only audience of sheeple who might care. Alas...I skimmed the summary and still don't. Zzzzzz...
Re: (Score:3)
This is just a slashvertisement for some bloke's paper. It's a reiteration of well known mantras, at best. Nothing to see here, move along.
I figured that out just by content. I hovered the mouse pointer over the first link, saw it lead to noplace likely to have real news, and decided I'm not playing that game.
TLDR. Too Lame, Didn't Read.
Seriously, the firehose readers that vote this crap up really need to clean up their act.
Always a little creepy (Score:3, Funny)
Gives me chills when I see people talking about tech like it was a religion.
Re:Always a little creepy (Score:5, Funny)
Walk by any Apple store.
Re: (Score:2)
Walk On By (Score:2)
Walk by any Apple store. ... where you just see people using devices like like because they generally work. You can go in, or not, it's your choice.
If you keep on walking you get to the Apple Haters. Now there's a religion, meaning they fervently believe in Apple being bad no matter what, and will not let you past until YOU believe it also.
Re: (Score:1)
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.
Re: (Score:3)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Only if they understand Italian. If you're reading it in English, stick with Pinsky's translation. He captures the triple rhyming surprisingly well.
Re:Always a little creepy (Score:5, Interesting)
A possibly interesting tangent:
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.
Re:Always a little creepy (Score:4, Insightful)
Yes... and there's a similar challenge produced by the influence of Milton's "Paradise Lost".
These two are a major source of what the general public -thinks- they know about historical Christianity.
Re: (Score:2)
Re: (Score:2)
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 allegorically
2. 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 state
4. That it is the final dispensation of the
Re: (Score:2)
Telling people there is no hell is like telling people you can fly if they walk off a cliff.
Except that it is much easier to establish the existence of cliffs than the existence of Hell.
Re: (Score:2)
Not unlike Camden, New Jersey.
Re: (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
Religion from a Java server application development perspective. Spoiler, everyone else dies horrible deaths.
Well sure, but at least they are collected after.
Java - Rapture for everyone, eventually!
Re: (Score:2)
Not really. If you take a step be, you quickly see most people belief's in anything they care about resemble religion.
People talk about their political beliefs, their love for LRT transit, technology, art, their healthcare career... with all the good and bad of religion.
I sometimes find when people talk about these things, they're actually more passionate in both the good and bad way, than religious people are.
I would assume this is because religion is pretty vague and many things are left for the unseen. H
Re: (Score:2)
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.
So, which is it? (Score:4, Interesting)
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.
Says someone posting via heretical Von Neumann Machine, long live Turing Machines!
Posted via Android on ARM hosted in Linux on x86-64 running in 32 bit mode!
Those knowledgeable of Cybernetics, Genetics, or Information Theory emit the most holy evil-grin when confronted with the term "Design Pattern".
Re: (Score:1)
Half of the "patterns" in GoF are just workarounds for problems with the C++ language.
Re:So, which is it? (Score:5, Insightful)
Re: (Score:2, Insightful)
Need mod points now... grrr
Anyone who believes "developed by experts" is a stamp of quality, is in no position to judge others.
Re: (Score:3)
Anyone who believes "developed by experts" is a stamp of quality, is in no position to judge others.
Wow, that is a great quote.
Re:So, which is it? (Score:4, Insightful)
A bit obtuse (Score:5, Insightful)
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?
Re:A bit obtuse (Score:4, Insightful)
Now, get off my lawn, if it's not vacuum tubes in accumulators, it's useless! We don't need these newfangled 'registers' and 'assembly languages,' we have patch wires!
Re: (Score:2)
I guess I'm going to hell (Score:2)
Re: (Score:1)
Be careful. You have an uninitialized variable in line 1.
while(! is_hell_frozen() )
;
read_book();
Re: (Score:2)
The Group of 4? (Score:1)
Re:The Group of 4? (Score:5, Insightful)
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". .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.
A company may want to keep modules in plainspeak, well-documented and slower
Re: (Score:2)
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.
Re:The Group of 4? (Score:5, Insightful)
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.
Re: (Score:3)
Re: (Score:2)
so they looked at patterns people had been using
Which is precisely what they did NOT do. They didn't uncover them, they just made shit up.
'there is a problem,
(Which we have absolutely no reason to believe is common because we did no research what-so-ever.)
this factory pattern will solve it'
(Though we have no reason to believe that it's a common solution, or even a good general solution.)
'I used a factory pattern, now you have an idea of what to expect from this code'.
That much is true. When I see a "factory pattern", or any other "pattern", I know that the code is very likely to be total garbage.
Re: (Score:2)
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
Re: (Score:2)
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
Re: (Score:2)
So ... Where's the evidence? Where's the research?
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
Re: (Score:2)
oooh I dunno.
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
Re: (Score:2)
No surprise there.
Well done for failing to read. Allow me to repeat: try liiking at the citations into the large bibliography. There's the research right there.
So either put up or shut up. I've held up my side and provided evidence supporting my case. You have failed to do so.
And the "oooh dunno" was sarcasm.
your ridiculous example implies
So, I take it you've never done any VFS hacking. It's full of virtual functions and derivation, C style. Actually much of the kernel is.
But feel free to live in your own
Re: (Score:2)
try liiking at the citations into the large bibliography. There's the research right there.
Look again. What you think is there, simply isn't there. You just really wish it was.
I hate to break it to you, but your holy book is nothing more than the mad scribblings of some 90's guys. It has no rational basis.
Not that you care. I can't argue with religious zealots.
Re: (Score:2)
I can't argue with religious zealots.
I'm the one who provided evidence, you're the one spweing nothing but insults and empty rhetoric. And you thinl I'm the zealot??
Re: (Score:2)
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.
It's not my fault that reality doesn't support your irrational beliefs.
Re: (Score:2)
As I pointed out, your evidence isn't.
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
Re: (Score:2)
Your inability to comprehend the seemingly obvious isn't my problem.
You'll find that, upon competent examination, the claims I made are undeniably true.
I'm sorry that reality does not conform to your preconceptions.
you've asserted it without a shred of evidence.
It's all in the book. As I've pointed out, you've already offered substantial evidence in support of my assertions.
Hell, just read the introduction, which makes it clear that the nonsense "patterns" are based on personal experience, not actual research. Try reading the book instead of just rea
Re: (Score:2)
You'll find that, upon competent examination, the claims I made are undeniably true.
Ah, no true scotsman would disagree with you, right?
So far our conversation has gone like this:
You: The GoF didn't do research.
Me: what about all those citations pointing to examples of projects.
You: That's not proper resaerch.
Me: How?
You: No true scotsman would believe it is.
I'm sorry that reality does not conform to your preconceptions.
And I'm sorry that you are utterly unable to describe your version of reality beyond tel
Re: (Score:2)
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
Re: (Score:2)
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
A pattern is a recurring thing.
If they provide multiple exmaples of where the same thing has spontaneously and independently occured then that is pretty much by definition evidence for a pattern.
There is no reason to believe that "patterns", by their definition, exist at all.
They occured multiple times independently, ergo they exist.
There is
Re: (Score:2)
Patterns are not intended to do anything. ... Many people (including you according to elements of your reply) seem to believe that patterns are things to be "applied"
From Page 1: "These patterns solve specific design problems" "...can apply them [patterns] immediately to design problems" Yes, the very first page.
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
Re: (Score:2)
From Page 1: "These patterns solve specific design problems" "...can apply them [patterns] immediately to design problems" Yes, the very first page.
Yep that's because problems are often similar. Therefore similar solutions will occur. Hence, pattern. If you go "applying" the patterns to all sorts of things then crap results.
Why is this so damn difficult for you to accept? According to the book, even the authors don't disagree with me here!
So what _are_ all those citations of other projects than? Farie dust
Re: (Score:2)
[citation needed] ... You love clipping out actual quotes except to suport your main point.
If you can't be bothered to read the book you're defending, at least take the few minutes it takes to read the introduction.
I've directed you there several times already.
Re: (Score:2)
I've directed you there several times already.
You've directed me to the entirety of a book hundreds of pages long. Naturally if I fail to find what you want then obviously I'm not looking in the right place. Very convenient.
Quote me a page and a line and I can look up the relevant quotes for myself. I'm not going to re-read the entire thing to hunt for a statement to back up a vague accusation from you.
So we are back to the beginning and you have still failed to support your point with anything more than ad
Re: (Score:2)
To the introduction. I've directed you to the introduction several times already. This should be clear from my previous post -- and several other older posts.
It's not long, it validates my claims, and (as you've seen) even directly contradicts a few of your points. It shouldn't take you more than a few minutes to read through the introduction.
Given some of your claims (like the "apply" bit from earlier), I'm not convinced that you've ever read the book you're defending. Perhaps you should reserve your o
Re: (Score:2)
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.
Given some of your claims (like the "apply" bit from
Re: (Score:2)
You claim the patterns do not exist in the real world.
That's not what I'm claiming.
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?
What if we go even
Re: (Score:2)
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.
Re:The Group of 4? (Score:5, Insightful)
The aspects you look for in code are as follows:
The list can be reduced to:
1. Does it serve the users well.
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".
Anyway, I digress. It all reduces to the one rule cited.
Re: (Score:2)
The list can be reduced to:
1. Does it serve the users well.
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.
Re: (Score:1)
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
Re: (Score:2)
"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.
Re: (Score:2)
Z4 or Z2xZ2
How do you get subscripts on this?
Various Infernos (Score:1)
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.
Some other Infernos:
Inferno [amazon.com] - Fun read.
Disco Inferno [youtube.com] - Which Apple had fun with in this commercial [youtube.com].
Some people like this: The Towering Inferno Trailer [youtube.com]
Re: (Score:1)
I was hoping that it wasn't hell, and that we weren't going to be here for eternity. Are you suggesting that I'm wrong?
The Software Inferno (Score:1)
Doesn't name names (Score:3)
Part of the fun of the Divine Comedy at the time was that specific individuals were shown being tormented, and this doesn't do that.
It totally should.
Re: (Score:2)
Yes, with B. Gates at the centre of Hell, with Steve Ballmer head first beig chewed upon. Nominations for two other persons?
Re: (Score:1)
I envisage Bill Gates being perpetually beset by a giant paperclip shaped demon - 'I see you're suffering eternal torment. Would you like more torment? YES/OK'
Software Inferno (Score:2)
(Burn, baby, burn) Software inferno!
(Burn, baby, burn) Burn that mother down! [youtube.com]
Re: (Score:2)
Awesome! I didn't know that the Science Patrol [google.com] made music videos.
Talk about obscure... (Score:2)
How many people here (a) have read the Divine Comedy and (b) worked as a programmer? I'm sure I'm not the only one, but we've got to be a pretty small audience.
Who do you think is the analog of Beatrice? Or Francesca da Rimini from Canto V?
Does he even read what he writes? (Score:1)
Isn't that how most, if not all, scientific discoveries are made?
then call me a heretic (Score:2)
CANTO 6 - HERESY: ...The countess explained that these chaotically traveling souls were strongly at variance with well-established beliefs
Yeah, you know, I would rather be a heretic than be consumed by groupthink and the cargo-cult engineering it encourages.
I consider the deadliest sin of engineering unnecessary complexity, which comes in its worst forms from inappropriate and poorly implemented generalization.
I've seen a lot of this in the form of "frameworks" - especially homegrown ones - but also from faithful and meticulous application of GoF design patterns. Decompile SqlMetal for a canonical example.