Henry,
Yes, my write-up is 100 pages long, but is still very high
level. But, it is meant to be a start with goals, direction and general
approach. In particular, it is deliberately not explicit as to syntax. The
approach is more for an integrated facility than for a particular language - all
part of "Grand Unification".
There seems to be a general progression in the technology from
instructions, then formulas, basic expressions and functions, then full
procedural syntax. Along the way, functional
programming and list processing, object and aspect oriented programming, complex
expressions with selection and implied iteration (e.g. queries), control
structures (e.g. pipes, state machines, pattern matching and goal seeking),
interpretive processing versus compilers, declarative statements to
provide data and intent, preprocessors with parameter substitution, etc. are
added. One approach to including functional programming is to extend
the C++ "const" notion, applied to both functions and data, to indirectly
referenced data.
Anyway, the intent is to reverse this progression
and to push the higher level specification capabilities as far as possible,
leaving only small procedural routines and general algorithms to be implemented
where needed, - thereby reducing the skills and cost needed for adapting a
general application to particular needs.
As for layered infrastructure, I
would expect that any initial implementations would be built on existing
browsers - both for basic function and for compatibility needs. The
approach to modeling not only supports constructs for models that are meta
models of themselves, but also the models for applications can largely be
models for infrastructure implementation - again, an integrated combination of
data, presentation, communication and control models.
Regards,
Bill
In a message dated 8/8/2011 9:45:11 A.M. Eastern Daylight Time,
henryluo@candlescript.org writes:
Hi Bill
Thanks for
sharing your document and thoughts on the unification of XML
technologies.
I've browse through your
document during the week end. And I think we have many ideas in common.
However, I felt your document is a bit high-level, and it will be great if
there's more detailed specification of your language.
In response to
your post, I've just written a blog
article on Candle's approach towards the "grand
unification":
http://candleapp.blogspot.com/2011/08/towards-grand-unification.html
One
thing I'd like to highlight is that I think you might have a wrong impression
of the procedural features in Candle. Candle does support procedural features
in order to be a general-purpose programming language. But they
are much
higher-level than those in the conventional procedural languages. Candle is
designed to be as functional as possible and it deliberately restricts the usage of assignment operation.
Data construction, evaluation, pattern matching, query and transformation all
uses high level functional features and never need assignment. And node update
uses CRUD statements rather than assignment operation. And there's the
separation-of-side-effects
mechanism to preserve the pure functional features. The only case in Candle
that needs assignment is in while-loop (Candle differentiates variable initialization and
re-assignment).
I'll write more blog articles on the details of
the design rationales, considerations and trade-offs made while creating
Candle. And I'll be glad to hear feedback from you and the xml-dev
list.
Regards
Henry
> > Attached is a draft of another approach to
a Grand Unification and > consequent simplification. > . >
It emphasizes declarative code (e.g. HTML and State Machines) with >
powerful > expressions (e.g. SQL) rather than interpretive procedural
code. Of > course both are signficant. > > >
> In a message dated 7/31/2011 11:10:37 P.M. Eastern Daylight
Time, > henryluo@candlescript.org writes: > > Dear members
of xml-dev list, > > I'm glad to announce the 0.9.1 beta release
of Candle (Common > ApplicatioN > Development LanguagE). Candle
is an open-source (MPL) scripting language > that unifies the core
features of many XML-related technologies > (including > XSLT,
XQuery, XQuery Update, RELAX NG, BNF, XHTML, SVG and more). It can >
be > used to develop command-line, desktop and Internet
applications. > > Some of the advantages of Candle comparing to
XSLT and XQuery are: > * Candle is an unified language instead of two
highly-overlapping > languages. Candle uses scripting syntax instead of
the highly verbose > markup > syntax of XSLT. > * _Candle's
markup_ > (http://www.candlescript.org/doc/candle-markup-reference.htm)
language is > strongly-typed even without schema, whereas XML > is
only weakly-typed without schema. > * Candle consists of a _pattern
language_ >
(http://www.candlescript.org/doc/candle-pattern-reference.htm) which >
cleanly unifies several > pattern-related DSLs (including RegEx, BNF,
RELAX NG, XQuery Sequence > Type). It can > easily match on
sequence of items, nodes and characters. > * Candle unifies functional
and procedural programming. Through a > mechanism I called
separation-of-side-effects, Candle unifies two worlds > in a >
more orderly manner then any existing multi-paradigm programming >
languages. In Candle, routines are divided into functions and methods. >
Functions are > routines without side-effects and methods are routines
with side-effects. > The rule of separation-of-side-effects is that
methods can call > functions, > but not vice versa. And
expressions in Candle are always functional. In > this way, pure
functional islands are well-preserved in the vast sea of > procedural
code. > * Candle is a general-purpose scripting language like
Python, > whereas XSLT and XQuery are just DSLs. Candle alone is
sufficient to > develop > complex command-line, desktop and
Internet applications, whereas XSLT and > XQuery still need to integrate
with other languages to develop a serious > application. > For
more information, you can visit the _website_ >
(http://www.candlescript.org/) (http://www.candlescript.org/) or the >
_SourceForge project_ > (http://sourceforge.net/projects/candleapp/)
. > > You can also read two blog articles _Why I Invented Candle
(I)_ >
(http://candleapp.blogspot.com/2011/06/why-i-invented-candle-i.html)
and > _Why I > Invented Candle (II)_ >
(http://candleapp.blogspot.com/2011/07/why-i-invented-candle-ii.html)
to > understand the design rationales behind Candle. > >
Your feedback on Candle is highly appreciated. I'm here anxiously >
waiting. > > Henry >
-------------------------------------------------------------------- >
Candle App Platform - An unified platform for desktop and Internet
apps. > >
_______________________________________________________________________ >
> XML-DEV is a publicly archived, unmoderated list hosted by
OASIS > to support XML implementation and development. To
minimize > spam in the archives, you must subscribe before
posting. > > [Un]Subscribe/change address:
http://www.oasis-open.org/mlmanage/ > Or unsubscribe:
xml-dev-unsubscribe@lists.xml.org > subscribe:
xml-dev-subscribe@lists.xml.org > List archive:
http://lists.xml.org/archives/xml-dev/ > List Guidelines:
http://www.oasis-open.org/maillists/guidelines.php |