Tuesday, March 30, 2010

Interfaces and Productions

Grogix is Turing Complete -- these days, it seems to take special effort to create a language that isn't. A Grogix 'operational grammar' can produce the same results as the language in which it's implemented, and generally, the platform upon which it executes. After all, you can do anything in the 'context interface', and write the grammar so that it gives back to the interface the permission to "do its thing". The programmer can then gradually transfer functional structure to the grammar, from the interface.

Since the 'context interface', or interface to the outside world, makes this unusual grammar into a fully functional machine, I'd like to reveal something more about of the general structure of interfaces:

With the appropriate hooks in the traversal routine, the interface can determine a few other things about the handling of conditional productions. The notion of storage in the two presented Grogix programs, as well as the unusual meaning assigned to grammar and storage in the wiki_strings example, are just a few examples of the wide range of perfectly natural interpretations of productions in Grogix.

Some notes on this topic:

* There's no reason for the right-hand side of the production (which is sometimes called the successor) to be an ordered set or template of symbols and non-terminals. It could be unordered, generating combinations rather than permutations. This reflects certain ideas of the Minimalist Program in linguistics, for example the possibility that the "beads on a string" order (as opposed to the order of syntactical transformations) happens rather late in the production of speech (close to the sensorimotor interface). When we avoid left-to-right order in some productions, let's call them "unordered successors", we are clearly defining additional opportunities for parallel computations in the system.

* There's no reason the core generated behavior needs to be a returned string. For example, the right-side or successor side of the production could be a series of commands, executed immediately or later. The production could use any set of symbols or media that has a meaning given to it by the interface. It is up to the interface traversing the grammar to interpret the right-side expression.

* The operational grammar is not a 'grammar' in the particular sense that it is not about language syntax -- although it can be used to represent language in the standard way. Grogix looks like a grammar, and has computational properties and logical operations, as all systems labeled 'grammatical' do, and so I call it a grammar. But someone could differ with my calling this a grammar, reasonably. On the other hand, I believe Grogix seems so useful exactly because it has syntactic structure without referring to language, while at the same time being itself a programming language.

No comments:

Post a Comment