Water, a Newish Web Language Out of MIT
jimdesu writes "True to its religion, MIT has reinvented LISP again, this time as a web-programming language called Water.At first blush, it looks rather interesting. It supports hashes, vectors and objects (prototype based) in a manner that makes it look as much like XML as one could possibly conceive. I'm certainly going to play with it. Anyway, the url is at http://www.waterlang.org."
Is there any feasible use for this? Or is it just another language. LISP is over-rated imho. XML is just fine, it looks like XML. It has a number of dependencies such as Java, etc. Which would make it harder to install for the average user.
Free means no restrictions, ironic the FSF's GPL forces restrictions, isn't it? What's your definition of free?
The goal of Water is to be easier to learn than Visual Basic
I stopped reading right there.
There aint no pancake so thin it doesn't have two sides.
I've done it all: PHP ASP Javascript, Java applets, mod_perl and the likes. I am still open to possibly a new lang that beats em all. Something thats
(1) Open
(2) Open source
(3) Works for LOTS of databasen IMAP SSL LDAP etc
(4) Flexible
(5) Compilable on everything
(6) plugs nicely into apache
(7) Possibly compiles
(8) Supports languages (i18)
(9) Doesnt blindly try to follow C++
(10) Is not so concept-based that its workings cannot be understood.
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
Water + PROLOG = Waterlog
Water + Java = Kaffe
Would a very large program written in Water be called Sea? Get it? Sea? C?
Talk about diving into some Water programming. If you are under a lot of water programming, would you be drowning with work?
Gator based on Ada and Water = Gatorada
I'll shut up now.
You're all wet
Funny it doesn't look newish.
You'll have that sometimes...
From: http://pobox.com/~oleg/ftp/papers/ILC02-impression s.txt
* Sharpening the parentheses: bringing Lisp ideas to programming the Web
Henry Lieberman of MIT Multimedia Lab.
Henry Lieberman said that Lisp is indeed good for web
programming, but people seem to prefer sharp parentheses () to round
ones. If you can use Lisp, you should -- he said, -- but sometimes,
you're constrained: you have to accept legacy XML documents and XSLT
stylesheets. His solution: design a programming language with an XML
syntax. He went on to describe a programming language,
. As it turns out, XML syntax is indeed
unsuitable for a programming language. So, the Language 'Water' uses
some kind of a simplified XML syntax. The language is not Lisp either
-- neither in notation (which is infix), nor in semantics. It looks a
lot like a Javascript. Programs in the Water language can run either
on a server, or on the client, in a browser plug-in.
This talk left several people puzzled: at first the author
said he wanted to use XML because it's popular, and Lisp because it's
a good language. He ended up using neither. BTW, Water requires a
license for a commercial use. I drew two conclusions: first, we need
to advertise SXML better. SXML can do everything Water does -- and can
do more and better. I also need to look up Henry Lieberman's slides,
which say "Web community blew the web programming" and "web
programming collapses under its own weight." Imagine a slide: Henry
Lieberman, a colleague of Tim Berners-Lee, says: "Web programming is
collapsing under its own weight." We need to save it.
I wanted to talk with Henry Lieberman and point out that there
is another way to assure interoperability with the XML culture. Rather
than translating Lisp to XML, we can translate XML and XML tools into
Lisp. That's what the SXML talk was all about. I didn't catch him. The
conference schedule didn't leave much time for discussions. Anyway,
SXML ideas are timely, we are not doing worse than other people -- and
perhaps better.
My overall impression from that talk is disappointment: I
thought people at MIT media lab can design better languages than I do.
A message from the system administrator: 'I've upped my priority. Now up yours.'
Is it just me, or is the Water vs JSP example highly biased? I mean I'm as interested as anybody else about a new programming language, but the use of such an example really made me question if finding out more was worth my time.
For those of you who didn't read the document, "The task is to create a new HTML tag with a single parameter, message, and use the tag from an HTML page to insert the chunk of HTML"
Essentially what they want to do is define a new html tag and have it spit out a message. Not surprisingly, this is exactly how water seems to worry. According to their findings, this task can be completed in a single 7 line file in water, while using JSP it requires 4 files, 65 lines of code and 4 languages! While I'm not experienced with JSP, from looking at the code not only do they seem to be using a hugely complex solution for a simple problem, but a lot of unnecessary code as well. This doesn't even take into account the fact that they are counting blank lines as lines of code, and are putting every single opening and closing curly bracket on iits own line!
I can't speak for the rest of you, but I would be much more interested in seeing some comparative examples which try to solve a problem in the manner best suited to each language. This nonsense of implementing a single highly specific and language biased solution to a very simple task just doesn't cut it.
Water looks remarkably like ColdFusion... XML or not... I've used ColdFusion for quite some time, and separating logic and content is really difficult.
Zope Page Templates is the fisrt solution I've seen so far which really separates content and code, while enabling editing of dynamic templates in a regular html editor...
.: Max Romantschuk
true.<and false/> />
<thing foo=5/>.<equal <thing foo=5/>
object.<get key lookup=false if_missing='return' default=false/>
I've seen a language that works with XML as a first-class data structure, but it had a normal C-like syntax, say
x = <foo bar="3"/>;
if (x.bar == 3) {...};
IMHO the latter makes much more sense - you can work with XML and you don't have to learn a whole new LISPy hybrid syntax.
Yesterday was the time to do it right. Are we having a REVOLUTION yet?
> Water + PROLOG = Waterlog
> Water + Java = Kaffe
Water + BASIC = pottie training language.
Water + Visual BASIC -- let's not go there, OK?
Sheesh, evil *and* a jerk. -- Jade
[WARNING] I haven't touched the Water specs, so I will just assume it is a REAL lisp
but with a different syntax, an not just another "language" with a half-assed S-exps
based syntax, like XML
[/WARNING]
Someone was talking about "Sharpening the Parenthesis" at his past International Lisp
Conference. If this isn't the same guy, I guess they beat him to it.
But then, couldn't these Water guys just embed a free Common Lisp (specially ECL)* or any
of the gazillion scheme kernels (specially scheme48) into their web platforms and still
have the same effect (plus the ability to work with a real language, specially in the case
of Common Lisp were one has macro, an excellent objec t system (CLOS + Meta Object Protocol)
and rich builtin datastructures?
--
* ECL is under a BSD like system and the VERY powerful CMUCL is public domain!!!
"you have to accept legacy XML documents and XSLT
stylesheets"
When did XML become a 'legacy' language?
Wow, the 2nd millenium sure is moving fast!
A fool throws a stone into a well and a thousand sages can not remove it.
When will people figure out that xml is perfect for machines but only tolerable for humans. Programming is for humans, not for machines. So what if it is a bit harder to write a parser/compiler for the programming language, if only it is easier on the programmer? XSLT sucks, because it is itself defined in XML. Now these guys are making the same mistake.
Actually programming in XML takes away the clarity of expression that you would ideally have in a programming language - it is not terse, and the syntax is way too noisy. Take a look at ruby, if you are at all interested in a terse language, where it is easy to write code that actually communicate intent.
We did agree, however, that Water would likely make a kickass rapid prototyper for web-sensitive tools and utilities. But aren't there a bunch of other languages that fit this model now, too? Is Ruby the one I'm thinking of that has all kinds of web stuff integrated into it? The major difference with water would be the XML-like syntax (as another poster pointed out, angle brackets alone doth not an XML language make).
I was worried that it was too buzzword compliant. They took the term "web services" and ran with it in a direction that allows them to say the whole language is about generating web services. You could arguably say that about any language that has built in HTTP I/O, if you wanted to.
I suppose if you don't already have a heavy investment in one of the existing web platforms (Java, C#, Perl, Python...) then there could be some potential. We just couldn't find more than a token reason to switch (imagine if we had one toolsmith who did everything in Water, and then he went on vacation? i wrote a file parser once in Icon that had the same problem, I couldn't hand it off to anybody else on the team).
That's the way it seems to me too. XML is a revision of SGML. Together they are widely used, and ancient in web terms, in that SGML predates the web.
SGML can also be seen as a big step back from Lisp's s-expressions. I imagine that if sexps had used angle brackets from the start -- instead of parentheses, which clash with the ordinary use of parentheses in plain text, and are also harder to type -- Lisp-like languages would be more widely used for structured text processing.
Perhaps they would have led to an earlier web. Lisp was developed in the late 1950s.
Just to make everthing clear, 'Legacy' was the term used by Lieberman in his talk. I think he means that if you want to use something new (or different), everything you used before and that you still have to support can be considered as 'legacy'.
Wow, the 2nd millenium sure is moving fast!
No, it's just that its regression is beginning to slow down.
A message from the system administrator: 'I've upped my priority. Now up yours.'
XML is designed to represent data. Trying to shoehorn a procedural and OO programming language into its format is a recipe for disaster and thats exactly what these guys have come up with. Its long winded, ugly and hard to read. I really can't see any programmer wanting to work with this. There was a reason netscape invented Javascript , not some form of procedural HTML. Still , at least this language will be a lesson in how not to design one. Expect this language disappear fast except for a mention in comp sci compiler/interpreter text books and the occasion far flung outpost of masochist coders.
The attributes need double quotes around them, for one. The tags are not regular. A Water program is neither valid XML nor is it well-formed.
Water is neither XML, Javascript or Lisp.
It takes the worst aspects of all these language - plus adds some bizarre and hard to read syntax of its own. This language is a disaster and is completely unreadable by a human being. It solves no real-world problems as far as I can tell.
This Water language will never be used by anyone.
There is nothing "to understand" with Water - it's a procedural language crammed into God-awful XML-like (but not really XML) syntax.
What is the point of creating a computer language that takes 10 times longer to type and is impossible to read?
It solves no real world problem.
It'll never float.
You were warned.
After scanning through the Water book, I learned that this:
/>
1.
returns 3. Where in the world did the 1. prefix come from? It would be nice if it was . That would make sense. The incestuous infix notation of would make a little less sense. Even if you did it RPN-like, , it would make some sense. But, 1.? Why? Is there some previous programming language that looks like this?
IF-statements are even stranger:
count.
"Count is greater than 50"
Strange! This would make more sense:
"Count is greater"
After reading the book and working through some examples, I like everything about the language except this bizarre part of the syntax.z
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.
> Wow, the 2nd millenium sure is moving fast!
Errr, actually, this is the 3rd millennium.
Dude, the language is ugly and is unreadable by humans.
Who's gonna use it? C3PO?
People who really understand a language could write it from scratch if they had to.
I have some very bad memories of trying to write a "meta-circular evaluator" in scheme.
As I used to say: Any language that's a dialect of a speech impediment should simply be avoided.
--- I wish I could hear the soundtrack to my life. That way I'd know when to duck.