XML may collapse under its own complexity
on
XML Turns 5
·
· Score: 2, Informative
Although XML may be full of potential, I and many others have found that XML 1.0 has carried significant baggage from the SGML document-centric world, and XML is being shoe-horned into service for data representation. The fact that there is even such a problem as "elements-vs-attributes" when trying to represent a simple value indicates that all is not well. All the standards built on top of XML 1.0 inherit its limitations. The first generation of the Web was originally designed by one person and used HTML, HTTP, and URI. It was quite simple and people adopted them because things were understandable. 10+ years later and we need 12+ languages to write a simple application. The collection of half-baked standards are a house of cards waiting for a small breeze to knock it down.
Christopher Fry and Mike Plusch have developed
the Water language. Christopher Fry was one
of the original developers on Macintosh Common
Lisp when it was Coral Software.
Water was designed to be as easy as Basic,
but give you all the power (and more) of
Lisp. Water was designed to support both object-oriented programming and functional programming. It uses the ConciseXML syntax and uses the syntax for data, logic, and presentation.
Water is an All-Level Language because it can be used for both high-level and low-level tasks.
X# sounds like it is trying to achieve some of the goals of the Water language (Water posting on Nov 22, 2002.)
Given that XML standards are used for defining APIs, data types, data, RPC, and presentation, it only seems logical to extend XML to handle general purpose logic. Working with XML from Java feels like writing a Java program using C libraries -- everything is a foreign call.
As the co-designer of Water, I'd be happy to respond to any questions. I've tried to summarize the questions so far and give a response to each one.
1. XML syntax is cumbersome, verbose, and should
not be used for a programming language.
MP: Agreed. That is why we had to invent
ConciseXML which makes XML as concise
as most languages based on Algol/C syntax.
It supports arguments by position, optional
ending tags, and non-string attributes.
2. Water does not use XML syntax
MP: Yes and no. It is true that most examples
are shown in the ConciseXML syntax, but
every ConciseXML expression could be written
in valid XML 1.0 -- it is just be more
verbose. In fact, ConciseXML supports the
mixing of XML 1.0 and concise forms in the
same document/program.
Every XHTML page on the Web is a valid Water
data structure.
3. Water co-mingles content and logic
MP: Most technologies either force you to separate
content and logic (which can get cumbersome),
or they co-mingle it (which is often easier,
but leads to a mess). Water is the first
language (that I know of) which supports both
-- the decision is up to the architect/programmer.
I believe Water is the first programming language
that makes it possible to work with both
markup and code without any barriers between
the two.
4. The comparison of Water to JSP was not
valid.
MP: You can never win when picking an example. I
found a book on JSP and used one of their
advanced examples. Because I wrote that
article, most people (unfortunately) assume
that Water is competing with JSP. My intention
was to show that a general-purpose language
(Water) can be simpler than a special-purpose
language (JSP). My new book has a bunch more
examples.
5. Who cares if "Hello World" example are simple,
how does it handle real complexity?
MP: Water code often looks simple, but the
designers of Water implemented languages
such as Common Lisp, Scheme, amd Dylan.
We have designed Water to have the power
of Lisp, but easier than Basic to start
using. For example, you can just type
in any HTML and it will run.
6. Lisp is very powerful (but didn't win)
MP: Agreed. One of the problems of Lisp was
that it was difficult for developers to
get to that power. Often first impressions
when looking at a piece of code are often
the basis for whether people like the language.
7. Why didn't Water use Scheme or Lisp as
the foundation?
MP: Neither Scheme nor Lisp had an XML syntax
that made it possible to mix content and code.
Also, I had a hard time learning Scheme and Lisp
at MIT, and we wanted to make Water much more
approachable. The underlying implementation of
Water has a lot of similarities to a Scheme or
Lisp interpreter.
8. Water is not free and therefore will lose.
MP: There is certainly a tension between making
a viable business and giving everything away
for free. Java was "free" from Sun, but other
vendors sold runtime licenses (J2EE) for
thousands of dollars per CPU for commerical
purposes. If a company can't make money by
selling a product, then the product and company
will likely die in the long term
because they can not afford to invest money into
product development.
Clear Methods intend to give a lot of Water
away for free, but charge money when people
get commerical value from it.
The pricing is meant to be very reasonable.
Although XML may be full of potential, I and many others have found that XML 1.0 has carried significant baggage from the SGML document-centric world, and XML is being shoe-horned into service for data representation. The fact that there is even such a problem as "elements-vs-attributes" when trying to represent a simple value indicates that all is not well. All the standards built on top of XML 1.0 inherit its limitations. The first generation of the Web was originally designed by one person and used HTML, HTTP, and URI. It was quite simple and people adopted them because things were understandable. 10+ years later and we need 12+ languages to write a simple application. The collection of half-baked standards are a house of cards waiting for a small breeze to knock it down.
Christopher Fry and Mike Plusch have developed the Water language. Christopher Fry was one of the original developers on Macintosh Common Lisp when it was Coral Software. Water was designed to be as easy as Basic, but give you all the power (and more) of Lisp. Water was designed to support both object-oriented programming and functional programming. It uses the ConciseXML syntax and uses the syntax for data, logic, and presentation. Water is an All-Level Language because it can be used for both high-level and low-level tasks.
X# sounds like it is trying to achieve some of the goals of the Water language (Water posting on Nov 22, 2002.) Given that XML standards are used for defining APIs, data types, data, RPC, and presentation, it only seems logical to extend XML to handle general purpose logic. Working with XML from Java feels like writing a Java program using C libraries -- everything is a foreign call.
As the co-designer of Water, I'd be happy to
respond to any questions. I've tried to
summarize the questions so far and give a
response to each one.
1. XML syntax is cumbersome, verbose, and should
not be used for a programming language.
MP: Agreed. That is why we had to invent
ConciseXML which makes XML as concise
as most languages based on Algol/C syntax.
It supports arguments by position, optional
ending tags, and non-string attributes.
2. Water does not use XML syntax
MP: Yes and no. It is true that most examples
are shown in the ConciseXML syntax, but
every ConciseXML expression could be written
in valid XML 1.0 -- it is just be more
verbose. In fact, ConciseXML supports the
mixing of XML 1.0 and concise forms in the
same document/program.
Every XHTML page on the Web is a valid Water
data structure.
3. Water co-mingles content and logic
MP: Most technologies either force you to separate
content and logic (which can get cumbersome),
or they co-mingle it (which is often easier,
but leads to a mess). Water is the first
language (that I know of) which supports both
-- the decision is up to the architect/programmer.
I believe Water is the first programming language
that makes it possible to work with both
markup and code without any barriers between
the two.
4. The comparison of Water to JSP was not
valid.
MP: You can never win when picking an example. I
found a book on JSP and used one of their
advanced examples. Because I wrote that
article, most people (unfortunately) assume
that Water is competing with JSP. My intention
was to show that a general-purpose language
(Water) can be simpler than a special-purpose
language (JSP). My new book has a bunch more
examples.
5. Who cares if "Hello World" example are simple,
how does it handle real complexity?
MP: Water code often looks simple, but the
designers of Water implemented languages
such as Common Lisp, Scheme, amd Dylan.
We have designed Water to have the power
of Lisp, but easier than Basic to start
using. For example, you can just type
in any HTML and it will run.
6. Lisp is very powerful (but didn't win)
MP: Agreed. One of the problems of Lisp was
that it was difficult for developers to
get to that power. Often first impressions
when looking at a piece of code are often
the basis for whether people like the language.
7. Why didn't Water use Scheme or Lisp as
the foundation?
MP: Neither Scheme nor Lisp had an XML syntax
that made it possible to mix content and code.
Also, I had a hard time learning Scheme and Lisp
at MIT, and we wanted to make Water much more
approachable. The underlying implementation of
Water has a lot of similarities to a Scheme or
Lisp interpreter.
8. Water is not free and therefore will lose.
MP: There is certainly a tension between making
a viable business and giving everything away
for free. Java was "free" from Sun, but other
vendors sold runtime licenses (J2EE) for
thousands of dollars per CPU for commerical
purposes. If a company can't make money by
selling a product, then the product and company
will likely die in the long term
because they can not afford to invest money into
product development.
Clear Methods intend to give a lot of Water
away for free, but charge money when people
get commerical value from it.
The pricing is meant to be very reasonable.