I found myself thinking along these lines when I saw last week's bulletin from the National Institute of Standards and Technology concerning an emerging process specification language called ISO 18629 -- if it has a more euphonious name, I haven't uncovered it yet -- which purportedly "uses artificial intelligence (AI) and mathematical logic to represent computer commands." Oh, my aching head. Imagine: a language that doesn't just let you demonstrate how smart you are, but that adds its own intelligence to yours.
A few deep breaths later, I'm willing to be persuaded that ISO 18629 is a good idea burdened by an over-hyped description. There's nothing wrong, in principle, with a language that's designed to work with a sophisticated run-time environment -- one that's capable, for example, of inferring specifics of ideas like duration and sequence from the context of what's going on. In fact, this seems like a pretty natural extension of the polymorphism that we've seen in object-oriented languages for years.
Telling an object to print itself, for example, can result in any number of different behaviors depending on whether it's a piece of text or a color graphic -- or even a turtle-graphics script that drives a robot around on a piece of paper on a classroom floor. I can likewise imagine telling one process to begin "after" another process, relying on metadata of the latter process to tell the former whether that means "after I'm up and running in a stable mode" or "after I've run to completion without errors."
Is that an example of artificial intelligence? No, but it's a style of programming that makes it natural to think about systems as if they were built from individually intelligent elements, instead of trying to put all the intelligence in top-level executive code while dealing with all of the lower-level modules as if they were mindless idiots.
Programmers, what do you think of this?
No comments:
Post a Comment