The Wolfram Atlas of Simple Programs The Wolfram Atlas of Simple Programs

System Categories Cellular Automata Turing Machines Mobile Automata Substitution Systems Tag Systems Register Machines Symbolic Systems Systems Based on Numbers Network Systems Multiway Systems Systems Based on Constraints Axiom Systems
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

   © Wolfram Research, Inc.