Lists Home |
Date Index |
Dimitre Novatchev wrote:
> [Victoria Livschitz said:]
> [XML, SOAP, UDDI, etc] from a software engineering standpoint, they
> seem to me a setback rather then a step forward. ... "With all that
> excitement, no one seems to have the slightest interest in basic
> computer science."
From a "computer science" point of view, you simply can't
dispute what Livschitz has said. XML, etc. *are* a setback. But, she
is wrong, I think, in her implicit equating of "software engineering"
with "computer science."
The strengths of XML, etc. are not in computer science.
Rather, XML's strengths are in the *human sciences* of sociology,
psychology, and political science. XML offers us no concepts or
methods that weren't completely understood "computer science" long
before ASN.1 was first implemented in the early 80's. From a "computer
science" point of view, XML is less efficient, less expressive, etc.
than ASN.1 binary encodings or the encodings of many other systems.
However, because XML uses human readable tag names, because it is text
based, easy to write, has an army of evangelists dedicated to it and
many freely available tools for processing it, etc. XML wins in any
system that values the needs of humans more than those of the
XML's ability to "win" in the human arena has enabled a great
outburst of computer science as a result of the greater interchange of
information and the increased ease of interchange. However, this great
outpouring of utility and enablement of new computer science work has
been at the cost of accepting an interchange format which is
"inferior" from the point of computer science. Of course, I think most
of us accept that this cost is an acceptable one and a small price to
pay in most cases.
Personally, I have always felt quite strongly that software
engineering should be distinguished from computer science by
recognizing that software engineering encompasses far more than the
close technical scope of computer science. Where computer science is
focused on algorithms and machine processes, the focus of software
engineering should be on the development and deployment of software
within and for systems that have human purposes as their goals. A
computer scientist can, and should, focus only on the bits in the
machine, a software engineer needs to consider not only the machine
but also the organizational dynamics of the team that builds the
software as well as the human needs of the organization that uses the
software. A computer scientist couldn't help prefering ASN.1 binary
encodings to XML. A software engineer, on the other hand, will often
see no reasonable alternative to XML in today's world.
Virtually any argument that attempts to claim a technical
superiority for XML is bound to be proved wrong by reference to ASN.1
or many other alternatives. In much the same way, most arguments that
XML should "simply be replaced" with a technically superior
alternative simply expose the naiveté, ignorance, or closed-mindedness
of their advocate. What is "right" in computer science is not always
what is "right" in software engineering.
Of course, many people who read this will be wondering at this
point why I, a "known" proponent of the use of ASN.1 and its
encodings, am writing in defense of XML! Well, I'm not really. XML has
its place and ASN.1 also has its place. XML is best used in
applications where the influence of the human needs on design
decisions is strongest while ASN.1 offers real value in applications
where the needs of the machines dominate.
For instance, at PubSub.com, where we do content-based
publish/subscribe, we speak to the outside world via HTML and XML
since that is the "language" that is most commonly understood by the
world at large and the easiest format for people to generate and
consume. On the other hand, all of our internal processing is done on
ASN.1 binary encodings. (i.e. we convert everything to/from XML at our
perimeter). The result is that we have great interoperability with the
outside world by using XML and we've got great efficiency in our
internal processing by using ASN.1 encodings. The best of both worlds.
In the future, we will undoubtedly allow and even encourage some high
volume publishers to send us data using ASN.1 encodings so that we can
optimize a bit and eliminate some of the cost of translations at the
perimeter -- however, I can't imagine that we would ever stop
interchanging XML with the vast majority of our clients.
At the perimeter of PubSub.com's system, the human sciences
and human needs dominate. In our core, it is the needs of our machines
that dominate. Thus, we meld the application of software engineering
and computer science.
Livschitz is right in saying that XML is a step-backwards from
the point of view of computer science. She is wrong in suggesting that
it is anything but a tremendous step forward in software engineering.