|
|
Auth |
Woo-hoo! I saw the first signs of snow today. Minnesota rocks. :)
I was talking to Dan Tull this evening, and we were discussing command shells. We were talking about complex batch and shell scripts and how annoying it is that there is not a really good shell scripting language. You always fall back on batch or shell scripts because those are the only things you are guaranteed to have. Perl is good on Unix but not common enough on Windows, etc. We also talked about the fact that it would be nice if you could have more flexible ways of getting information in and out of a process besides one command line and a couple of streams. I was wondering if there was anything better than using streams. One idea I had was that it would be interesting if you could perhaps have an environment in which everything was XML based. That way you could use more complex and self describing data structures. I was wondering if there might be a better way of communicating than just a fixed set of streams. I had the idea that you could use a black board (an example is JavaSpaces) and have all the apps get their data from the blackboard and post the responses back to the blackboard. Then the inputs and outputs could be as many as you wanted.
Another thought I had: working with a really smart program is great (IntelliJ Idea is a good example). The only problem is that eventually you always want to do something that the program doesn't understand and you are completely out of luck. With a dumb program, you don't hit quite the same walls. There are these two classes of programs: powerful ones that try to understand everything (and can't deal with anything outside their understanding) and simple ones that try to understand as little as possible and work in all situations (but can't do anything really powerful). I was wondering if you could somehow reach a middle ground. Could you write a program such that when it came to a problem it didn't know how to handle, it just asked what to do? Perhaps it could use the blackboard environment, so the user or another program could give it the answer, or perhaps it could find the answer posted ahead of time in the context it was running in. Could you even come up with a language for phrasing the questions and identifying answers? Could programs even be written handle the answers, considering the answer is presumably outside of the knowledge domain of the asking program? It seems a program able to act will in such an environment would we completely different internally than what people are used to. For example, compare the difference between a straight-through imperative program and an event driven program. How long would you wait for an answer? (How about this for a wild idea: you could post a memento along with the question, so you could pick up right where you left off? An XML stack dump, so you could rebuild your stack and resume? Then it would be clear exactly why the program was asking the question. With DTDs for every frame? In case the best answer to your question was to change what you were thinking?) Could you change your programming paradigm so that your programs mostly just asked tons of questions? So they were knowledge seeking instead of containing lots of encoded knowledge? Is there even any gain to such an approach?
| Louis K. Thomas <louisth@hotmail.com> | Auth | 2003-10-29 (1767 days ago) |