Hi Paul, Thanks for your detailed post. It's inspiring me to share a little about my current work and understanding of VPRI's general approach (though, again, I should remind folks that I don't represent VPRI even though I had the pleasure of working closely with Ian in the past).
You've cited too many references for me to absorb right now, but it is definitely convincing me that once I've bootstrapped my Perl-based language lab (much inspired by the latest things I saw Ian working on, as well as OMeta, but with closer links to Knuth's attribute grammars than to PEGs proper, and much less effort because I can do portable coroutines via Perl 5's Coro library) I should use it to bootstrap a Javascript version. An important lesson I learned from Ian and ANTLR was that the grammar's description should capture as much information as possible but not specify actions, so that different clients can use the same grammar for different purposes. A language lab is defined by its default syntaxes, whether human or computer-readable. I have aspirations for creating a simple, compact, extensible syntax that people love enough to support on many computer systems, both as a programming language and as a communication protocol (and no, it won't be XML or sexprs). The software involved is bootstrapping an interpreter library on each platform, and giving it access to as many target primitives as possible. To survive as a communication protocol, it needs to use an object-capability model of some sort because sandboxing leads to insanity. With first-class grammars for describing arbitrary languages/protocols/data structures/agent network configurations, a microscope/telescope app that dynamically utilizes such descriptions is not far away. Each new platform we port to effectively becomes a platform we can run on, analyze, and extend. A generic "stage 0" interpreter/compiler lab for the default language would be able to specialize into a "stage 1" lab for any language by statically attaching bootstrap code to a specific grammar. Non-lab applications could be the byproduct of asking a lab to compile other inputs. So, in short, I think we need exactly one level of abstraction above the Semantic Web in order to make a true end run in the convergence game. Legacy systems of all sorts need to be described and preserved, not rewritten and rearchitected in a "standards-compliant" way. BINGO! (For everybody playing Programming Language Buzzword Bingo with my post.) For those interested in the Perl implementation of my Ocean language lab, it's a self-replicating single file whose embedded grammar descriptions you can edit and run to bootstrap your own Perl-based lab, interpret a script written in the lab's supported languages, or play around with a REPL. I'll be posting here when I get it to the point of being clean enough for others to use. Thoughts? -- Michael FIG <[email protected]> //\ http://michael.fig.org/ \// _______________________________________________ fonc mailing list [email protected] http://vpri.org/mailman/listinfo/fonc
