Multi-Dimensional Analog Literals

by James Buckland

Multi-Dimensional Analog Literals (MDAL) is a C++ library for manipulating one-, two-, and three-dimensional spaces visually through text, an extension of Douglas Hofstadter’s Typographical Number Theory. In practice, MDAL can be used as follows:

  assert( ( o-------------o
            |L             \
            | L             \
            |  L             \
            |   o-------------o
            |   !             !
            !   !             !
            o   |             !
             L  |             !
              L |             !
               L|             !
                o-------------o ).volume == ( o-------------o
                                              |             !
                                              !             !
                                              !             !
                                              o-------------o ).area * int(I-------------I) );

which should return true. The author, Eelis, notes that in order to get a value of N, 2N + 1 dashes must be used between the I’s; this should resolve any apparent arithmetic errors.

In short, it extends the ability of the command-line interface to display and manipulate dimensional shapes through ASCII typing and printing. The library is not intended for serious use, but rather addresses a fundamental question of computer interface design and use — how much abstraction is too much abstraction? When we use higher mathematics to represent physical processes, it’s a useful and brilliant tool; through careful use, we lose little to no information about that which we are representing. A semiconductor in RAM stores a series of bits which, in turn, stores the value of an integer which, at least in engineering, often represents a measurement of real-world property.

MDAL, as a library, offers to reduce some of that abstraction at a high price: the near-impossibility of using these ASCII drawing in serious work. Obviously MDAL was written with the full knowledge that it would never be used. So why does MDAL exist? What is its use? Obviously the library was written for the amusement and instruction of its author, like many small programming projects. But it also serves as a poem of sorts, a meditation on the treadmill of abstraction that computer scientists must face.

Advertisements