|
Re: Coding from Scratch
|
Posted: Jan 25, 2003 12:11 PM
|
|
Later in this article, Lanier states: " If you think about it, if you make a small change to a program, it can result in an enormous change in what the program does. If nature worked that way, the universe would crash all the time."
What prevents components from becoming bullet-proof subsystems has to do with our application design mindsets. We are so driven by the protocols allowing components to talk to one another, we haven't devoted much intellectual capacity towards making those components truly "evolving" or even half-smart.
Most software can't learn or evolve. Even if it could, persisting the state of this "evolved" software would be difficult. It would be difficult enough, as most languages currently exist, to allow the component to accept "evolutionary" instruction as part of its data inputs. When the application re-started, the component would have to re-learn everything.
For example, I frequently write code that accepts XML-based string inputs that tell my programs to load a type and execute a method we've all agreed on. To tell it to forget the interface and, instead, execute a new set instructions would be an enormous effort. Certainly, persisting this newly evolved entity would be a major chore as well. Already, my humble subsystem component is reaching the gazillion line of code stage.
Still, there's probably nothing that could prevent us from taking the next step towards writing code that had a little more growth potential. If we could stop talking about XML and CORBA and all those wonderful inter-component transfer mechanisms (or to admit that we've solved this problem at least six times... and let's move on.) and to start thinking about how to write software that isn't so profoundly static.
|
|