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

Reply via email to