The Technology of the Atlas
The Atlas represents a significant application of
Mathematica
technology to a demanding, real-world task. Mathematica is
traditionally thought of only as a platform for scientific computing--
solving equations, multiplying matrices, etc. But behind the library of
world-class algorithms and mathematical functions sits a
state-of-the-art, general purpose programming language that can
effectively be applied to absolutely any programming task.
A widespread belief in the practical computing world is that specific
kinds of tasks are best dealt with by a specific set of programming
languages. But what Mathematica was able to show is that a simple,
well designed structure is capable of performing an extremely wide range
of tasks with great efficiency. And besides supporting the various popular
programming paradigms with greater elegance than the specialized languages
that invented them, it also introduced an entirely new set of ideas that
were only possible within its unified framework.
The capability to quickly construct arbitrary computational systems in
Mathematica is what made A New Kind of Science possible.
Yet
again, there is the perception that languages useful in academics are not
applicable to "practical" problems, such as content management, for
instance. Certainly many academic languages were clearly invented to
explore a particular idea. But Mathematica was specifically
designed to be as general-purpose as possible--and it certainly has been
crucial for the development of the Atlas.
Given just a library that performed the individual computations stored and
displayed by the Atlas, the content-management task is rather
complex. For
instead of a static set of documents as handled by traditional systems,
one is managing an entire intellectual structure encoded in varying
degrees of programmatic formality--some of which are absolutely essential
to capture. And leveraging these variably interlocking structures in the
rigidly-typed, low-level programming languages that are popular would be
excruciatingly difficult, if not impossible.
Using Mathematica it was possible to create a highly flexible
structure that can handle every aspect of the Atlas's existence.
Notebooks
are used to store the fundamental data elements that you see. On top of
that sits a thin palette interface that automates various bookkeeping
tasks. Finally, a system of functions makes sure all the pieces of the
Atlas communicate with each other properly, and based on general
guidelines automatically generates information for specific systems. The
website is created by walking down the system datastructure and
transforming its various elements into a symbolic form of XHTML, which is
exported to .html files using built-in XML capabilities.
The richness of the Mathematica expression structure allowed each
one of these powerful structures to be created with only a minimum of
modification that captured the essence of the problem. Creating an
equivalent in, say, an object oriented language would have required
writing vastly more code, both because they are unable to support the
powerful primitives available in Mathematica, but also because the
overhead involved in creating class definitions discourages one from
experimentation and refactoring--and ultimately prevents one from
discovering an optimal structure.
The core of the Atlas is fundamentally simple. Yet because it needs
to
interact with a world that unfortunately does not yet share the same
design principles, it inevitably needs to deal with a variety of details
and contingencies. But because Mathematica was designed to deal
with arbitrary computational systems, it should come as no surprise that
it can digest the various interfaces and structures of the modern
computing ecosystem.
In a sense this process is not fundamentally different from modelling a
natural system--particularly when the target architecture has little
documentation. Scientific models must highlight certain aspects of a
system and idealize others away, according to what the model is to be used
for. Similarly, when confronted with a large, complex API, a programmer
will have to determine which aspects are relevant to the project at hand.
Furthermore, in both cases one has the phenomenon that the fundamental
structure may be simple, but needs to be extended in a variety of ways for
more focused applications--or bug work-arounds. Finally, computational
irreducibility implies that the only way one can be sure the models are
accurate is by running them
The explicitness of Mathematica makes it easy to detangle a system
into its constituent parts, figuring out their operation and adding
special cases independent of the greater structure. The fact that
absolutely everything operates within a unified framework means conceptual
shifts in the model will not cause a cascade of incompatibilities in
peripheral supporting structures--leaving one free to test new insights.
In the case of the Atlas, which is typical of large systems
written in
Mathematica, this development cycle leaves one with a few
fundamental ideas, and then a well-modularized layer that interpolates
into the particularities of the circumstances.
As the NKS community grows and evolves, more and more ideas about social
interaction and idea exchange will make their way into the
Atlas. And
because of the power of Mathematica, the technology behind the
Atlas will grow to resemble an intellectual structure in its own
right--
and the discoveries involved will find their way onto these pages as well.
Kovas Boguta
Wolfram Science Group
|