Way back in the early history of computers Von Neumann explained that programs (derived from programming language) are data. All programs are a “data structure language”.
Procedural, declarative are just buzz words somewhat like third generation verses forth generation languages. For example, a set of if-then rules for an expert system is not quite what I understand declarative to be. But put together into something like Prolog, that becomes more close to declarative. To quote Wikipedia: “Like functional programming, many logic programming languages permit side effects, and as a result are not strictly declarative.”
The buzz today, as described by Wikipedia again; “In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow.”
And twenty five years ago we called the very same thing a forth generation language - something extended from macros. I remember the ADABAS Natural language as a forth generation. Wikipedia suggests SQL Selects are declarative. Same difference.
Also note that interpreters or run-time engines are a buzz too. If Microsoft gets its way, the operating system will be a run-time engine much more comprehensive than just the .Net framework. Compiling into p-code, whoops I mean byte code, no that’s not it - it is CLI code for C# and soon to be C++ too for Microsoft, is just an artifact like compiling BASIC into intermediate code was (BASIC is interpretative.)
But with virtualization, all computer operating systems will be run-times remotely similar to much, much more sophisticated AIML engines. Since procedural languages are a mismatch for parallel programming, the future suggests almost all programming languages will become more, if not totally, declarative.
So considering AIML to be a (simple) programming language is a good modern interpretation of the state of the art.