• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Making Software less complex

 
Ranch Hand
Posts: 3404
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Two articles on making Software less complex.
Well actually three.
Everyone's a programmer
"Software �has become a field where we focus on incremental improvements in processes,� he says. �That course is futile, because it can never solve the problem of human imperfection.�
What Simonyi proposes instead is a revolutionary change in how we write software, and even in how we think about software. �Conventional improvements people make come at the expense of forgetting what software is all about,� he says.
Why does software need a revolutionary change? Because today it is a technology in crisis, where its complexity has far outrun our ability to comprehend it."

Extreme Programming The Zero G experience
"Zero G is a survivor. The San Francisco company makes installation software�the programs that run when you�re putting new software on your PC. Its headquarters are in the once booming south-of-Market area, where it has remained happily profitable even as its former dot-com neighbors have disappeared. But it almost bit the dust along with them, says president and cofounder Eric N. Shapiro�not because of the economy, but because of the slapdash way it wrote software before adopting a methodology known as �extreme programming.�"
From Artificial Intelligence to Artificial Biology
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
"Even today, programs such as Microsoft�s Windows XP operating system are beginning to exhibit the biologically inspired ability to detect problems and to fix them, albeit in a simple way, by storing models of their original configurations. The programs can then be restored to their original states if bugs corrupt them later."
regards
[ November 08, 2003: Message edited by: HS Thomas ]
 
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by HS Thomas:
Two articles on making Software less complex.
Well actually three.
Everyone's a programmer
"Software �has become a field where we focus on incremental improvements in processes,� he says. �That course is futile, because it can never solve the problem of human imperfection.�
What Simonyi proposes instead is a revolutionary change in how we write software, and even in how we think about software. �Conventional improvements people make come at the expense of forgetting what software is all about,� he says.
Why does software need a revolutionary change? Because today it is a technology in crisis, where its complexity has far outrun our ability to comprehend it."


Wow, what a hype!
Tell you what - I am modeling all the day, using high level code. My modeling language is called Java, and the drone-like work of constructing the program from my description is done by a software, called compiler. That way I can concentrate on what I am good at - designing solutions to my customers problem. And I haven't written one sorting algorithm since I left high school, by the way.
Also, our customers want to "program" our system, too. So we developed a small very high level language for them, so that they can tell parts of the system how they want them to behave. Surprisingly, that doesn't really make the system less complex - and even the customers descriptions contain errors now and then. Bummer.
Of course that doesn't mean that I wouldn't like to program in an even higher level language. I'd rather say that it's the logical next step, and that it is happening since the beginning of computers.
BTW, the first page seems to suggest that a canceled project is a wasted project. Tell you what - if you never have to cancel a project, that either means that you don't take any risky projects and limit yourself to the easy, low revenue ones; or it means that you don't monitor your projects for likeliness of success and run even the worst ones to its bitter end. Again, bummer.
 
Ilja Preuss
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by HS Thomas:
Extreme Programming The Zero G experience


Take a look at the discussion - seems as if most of the article is bullshit. Nothing wrong with XP, though.
 
Ilja Preuss
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by HS Thomas:
From Artificial Intelligence to Artificial Biology
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
"Even today, programs such as Microsoft�s Windows XP operating system are beginning to exhibit the biologically inspired ability to detect problems and to fix them, albeit in a simple way, by storing models of their original configurations. The programs can then be restored to their original states if bugs corrupt them later."
[/QB]


I am awaiting the first "allergic" programs - such as a webserver rebooting every time a 404 occurs... (BTW, this is funny: http://angelfire.lycos.com/404.html - reload to get more )
 
HS Thomas
Ranch Hand
Posts: 3404
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I didn't know what to make of these. The first one seemed far-fetched the second was reasonable until I saw the discussion. As to the last one, so far I like Windows XP. I wouldn't like to guess what's happening behind the scenes. Spyware and all that.
regards
 
(instanceof Sidekick)
Posts: 8791
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
One point of Fred Brooks' paper "No Silver Bullet" was that software is complex because the problems we want to solve are complex. You just can't leave much of that complexity out and still solve the problem. The trick is to avoid adding any unnecessary complexity. Programming languages can make a huge difference. In some the code looks like the business solution and in others every line of business logic is concealed in a fog of housekeeping code. Go too far toward the simple end and you get a toy language that is inflexible. Too far the other way you get C++.
 
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
Well, this is a kind of chicken-and-egg situation. Bugs are created by humans who make software. Saying that software has to survive bugs implies that software would have to take over humans in some sense. Matrix-like situation. Does it ring any bell? But the idea of redundancy and regeneration is really cool. Some steps have been done in that area here at the Swiss Federal Institute of Technology. Researchers working there have invented what they call the Biowall, a bio-inspired, self-repairing, self-replicating and learning piece of electronics.
As for software, I think that as long as we keep building software with 3rd generation languages, we are doomed to fail. Software is always constructed for a specific purpose, i.e. for a specific application in a given domain. As a result, the most natural way of building software would be to use the language of that domain which of course builds on lower-level languages such as Java, C#, etc. But in my opinion, if we continue in the "do-everything-with-Java-or-C#-or-whatever" direction, we are just going nowhere. The complexity of software has been dramatically increasing and will continue to do so. We, humans, have to catch up and find new or more intuitive ways of developing software. Don't get me wrong, I love Java and C#, but I still think that we need higher-level languages to build effective software. Using 3rd generation programming languages will not help build complex software-intensive systems in the long-term.
[ November 27, 2003: Message edited by: Valentin Crettaz ]
 
Ilja Preuss
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Valentin Crettaz:
As for software, I think that as long as we keep building software with 3rd generation languages, we are doomed to fail. Software is always constructed for a specific purpose, i.e. for a specific application in a given domain. As a result, the most natural way of building software would be to use the language of that domain which of course builds on lower-level languages such as Java, C#, etc.


On the other hand you could argue that a domain specific language doesn't suffer, either - what you actually need is a project specific language. And in fact that is what I think every good, effective team does: building it's own project specific language, using a lower-level language such as Java, C#, Ruby, etc.
 
author
Posts: 11962
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Ilja Preuss:
On the other hand you could argue that a domain specific language doesn't suffer, either

Yes, Ilja, I believe languages in general do not suffer...
 
Valentin Crettaz
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
On the other hand you could argue that a domain specific language doesn't suffer, either - what you actually need is a project specific language. And in fact that is what I think every good, effective team does: building it's own project specific language, using a lower-level language such as Java, C#, Ruby, etc.
I'm not sure I get your point, Ilja... If I understand right, you say that for every project, a specific language for that project would have to be developed. If this is the case and assuming a huge diversity of projects out there, I can't really see how your are going to be able to reuse those project-specific languages on different projects. As you probably know, every project is unique, there are no two equivalent projects. You will always find tiny details that differentiate two projects.
On the other-hand, a domain-specific language could be reused for any project aiming at developping applications targeted at that domain.
Please, do shed some light on what you call project-specific language. Thank you
 
HS Thomas
Ranch Hand
Posts: 3404
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I am hazarding a guess again. BPEL might be a project specific language.
Why does it remind me of COBOL ?
regards
 
Ilja Preuss
author
Posts: 14112
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Lasse Koskela:
Yes, Ilja, I believe languages in general do not suffer...


Seems as if I suffered from "illiteratitis", though.
(Of course I meant "suffice" - as if you didn't already guess so...)
 
Lasse Koskela
author
Posts: 11962
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

I am hazarding a guess again. BPEL might be a project specific language.

Are you talking about BPEL as in Business Process Execution Language for Web Services? That's hardly project specific
 
HS Thomas
Ranch Hand
Posts: 3404
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The key-word ( I thought) is Business.
Common things that Businesses might want to do ?
That's pretty high-level , IMHO. Won't any project want to do some of those things ?
Oh I see what you mean. It won't be exactly project specific.
regards
[ November 28, 2003: Message edited by: HS Thomas ]
 
HS Thomas
Ranch Hand
Posts: 3404
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Valentin Crettaz:
"So software needs to be designed to survive the bugs. It should have the biological properties of redundancy and regeneration: parts should be able to �die off� without affecting the whole."
Well, this is a kind of chicken-and-egg situation. Bugs are created by humans who make software. Saying that software has to survive bugs implies that software would have to take over humans in some sense. Matrix-like situation. Does it ring any bell? But the idea of redundancy and regeneration is really cool.
[ November 27, 2003: Message edited by: Valentin Crettaz ]


PCs and laptop regeneration is already underway. You can download the upgrades as and when you want them. Some PC shops are already renovating old models this way creating a new market fo them which should drive prices of new models down - maybe.
Best to back up first though. I ran AdAware recently which seemed to get rid off essential system property files. As long as I can regenerate those again my PC is useless.
Regenration also has implications for supplying poorer countries with computing power.
regards
[ November 30, 2003: Message edited by: HS Thomas ]
 
Valentin Crettaz
Author & Gold Digger
Posts: 7617
6
IntelliJ IDE Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It is still not very clear to me what a project specific language looks like and what benefit it would bring.
Ilja, could you please have a look at my last message above. Thanks
[ December 01, 2003: Message edited by: Valentin Crettaz ]
 
Lasse Koskela
author
Posts: 11962
5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Originally posted by Valentin Crettaz:
It is still not very clear to me what a project specific language looks like and what benefit it would bring.

Here's how I have understood the "project specific language":
  • Project Specific Language "extends" Domain Specific Language, but
  • Project Specific Language is tied into both the application domain concepts and the implementation

  • Am I even close to what Ilja intended?
     
    With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
    reply
      Bookmark Topic Watch Topic
    • New Topic