Lists Home |
Date Index |
Claude L Bullard wrote:
> Why not have the compact syntaxes interoperate as well?
> If we are to brandish big pointy sticks, maybe they
> should be standard pointy sticks...
+1. There are now, and always have been, excellent reasons why
people create specific languages or data syntaxes to address specific
purposes. (The "little languages" paradigm comes to mind.) However,
while purpose built languages syntaxes can provide tremendous benefits
in the domain for which they are intended, the darn things have a
nasty habit of "leaking" out of their domains with unfortunate
frequency. They also have a nasty tendency to slowly accumulate more
and more features as their scope and domain of usage grows.
Languages, syntaxes and even "applications" share a common
tendency to grow towards some ideal "super-state" which encompasses
all uses and all domains. This isn't bad in itself. The problem comes
when these beasts meet in the night and compete with each other. We
end up with a Babelization when, in theory, language should be a
matter of choice -- not a bar to interoperability.
It used to be the choosing your programming language clearly
defined the libraries you could link to and the subroutine packages
(or classes) that you could work with. But, first at Digital with the
Common Runtime Library (CRTL) and now at Microsoft with .NET, we
discovered years ago that most syntaxes could be mapped to a common,
interoperable abstract model that allowed inter-language interop. What
was done was defining an abstract language that other languages to map
to... Thus, people could choose Cobol, Pascal, Basic, C, etc. as their
programming language, yet, know that they could interoperate with code
written in other languages.
Frankly, I think we should do the same with the various
"compact syntaxes"... And, that's what ASN.1 is all about. The point
of the "Abstract Syntax Notation" is to provide a common abstract
model to which various variants can be mapped and derived. Thus, you
can use ASN.1 to completely describe either XML or a wide variety of
binary formats. Interchange is provided between the concrete formats
via their mapping to the common "abstract" syntax.
If you're going to create a compact syntax, please, do us a
favor. Ensure that it is easily and deterministically mapped to and
from some base syntax. I would prefer that you use ASN.1 since it has
been proven over the years to handle a great breadth of syntaxes. But,
if you can't do that, then consider mapping to XML Infoset instead.
While you may think that the domain of your "compact syntax" is
limited today, it is the way of things that if it is a good syntax,
its domain will grow. Help interop by making sure that conversion to
and from your syntax is as obvious and clear as possible.