Modern Languages vs the Ancient... (Was Metaprogramming)
Rudolph van Graan
rvg@REDACTED
Thu Aug 24 06:14:28 CEST 2006
Hi Guys,
This whole topic interest me greatly. Unfortunately I've not been
part of the Lisp generation ;) - my only experience in Lisp stems
from the fact that I had to make emacs work for me. To date Lisp is
the greatest mystery ever. I've managed to salvage one good book
which someone else threw away, written in 1982 "Lisp" by Winston and
Horn. What amazes me is the type of problems solved in the late
seventies. From the TOC:
Chapter 18: Lisp in Lisp (Building an interpreter)
24: Symbolic pattern matching
26: Rule based expert systems and forward chaining
30: Procedure writing programs
etc
What worries me is that the "old" languages managed to do things that
are nearly impossible or very difficult (in my opinion) to do in
modern languages. How come the Javas and C#'s etc lost these
abilities and be called modern?
I've noticed a VERY disturbing pattern emerging lately in the java
world (Unfortunately I do a lot of Java consulting with one leg in
the very muddy Websphere world), it is as though people have now
started to discover that you can "reconfigure" your code outside your
code. So essentially you write these little XML files describing the
behaviour of something. They might look like this (Taken from http://
static.springframework.org/spring-webflow/docs/1.0-rc3/reference/flow-
definition.html#flow-xml the very popular spring framework for J2EE) :
<flow start-state="displaySearchForm">
<view-state id="displaySearchForm" view="searchForm">
<transition on="submit" to="processFormSubmission"/>
<transition on="cancel" to="processCancellation"/>
</view-state>
...
</flow>
(This describes the flow of a web page submitting into something).
The problem here is that the XML is *external* and independent to the
code that actually do something. The issue for me is that the code
behind this is coupled to the behaviour in such a way as to make it
inseparable. (Above you might have a web form containing 3 fields,
the "submit" must understand about these 3 fields). So in order to
change the flow, you will have to create code that understands the
flow... Hence the flow is coupled, *tightly*, to the code behind the
flow. Now the XML is not compiled or verified except in structure and
so you cannot find problems until you actually test or deploy. In the
past the names above would have been classes or instances and the
compiler might pick things up as wrong. Now they have lost this
important ability.
It looks to me as though they have now managed to invent a (bad)
scripting language sitting above Java essentially imitating what we
had in ASP/JSP/VB ten years ago, but far worse because XML is not a
language but a data structure...
Back to my original point - what kind of abilities did we lose going
from Lisp/Smalltalk into the VB's/Delphi's/C++ into Java/C# etc that
are now being reinvented in a bad way in the new "languages"?
Rudolph
More information about the erlang-questions
mailing list