Back in 2001 or so when the .NET Framework was introduced one of the features that struck me as a real innovation was the CodeDOM.
There's a good bit to it but the basic idea is that the .NET framework has support for dynamically generating source code then compiling it. The CodeDOM or Code Document Object Model is a language independent model of source code. A graph, that general purpose workhorse data structure for CS people, is used to represent source code in a language independent manner. The "protocol" or "rules" for the graph are the Code DOM.
I'm running across a case where it seems like it might be useful - there's a COM enumeration that I want to use but the type library importer hasn't marked it with the FlagsAttribute. Since I don't want to have to keep updating I'm thinking I'll just reflect over it, construct a managed equivalent and then use the managed equivalent. In a pre-build event for this project. Make sense right?
Here's the rub: If procedural programs can produce general intelligence then, IMHO, something like the CodeDOM (and its attendant support) will be a critical step on the journey to real AI. John Searle seemed pretty convinced that rules and words (what I'm loosely referring to as "procedural programs") are never sufficient to produce intelligence. Perhaps he's right. Until that's resolved, I'll work on shaking this feeling of contributing, ever so infinitesimally, to the Birth of Skynet.