« Reading List: What Next | Main | C-ship: 2017 Update Released »

Sunday, March 19, 2017

The Analytical Engine: 2017 Edition Released

In 1997, I posted The Analytical Engine, a Web resource devoted to Charles Babbage's 19th century invention of a mechanical computing device which embodied all of the essentials of present-day computers. Although the Analytical Engine was never built, it is a key foundation of the intellectual heritage of computing.

The Web tree included on-line editions of original documents about the Engine, including Babbage's description from his 1864 autobiography, and the 1842 “Sketch of the Analytical Engine” by L. F. Menabrea, translated and extensively annotated by Ada Augusta, Countess of Lovelace, in which the first computer programs appeared.

Accompanying the documents was an emulator for The Analytical Engine. Implemented in the Java language, it allowed users to run programs on a simulated machine with the properties Babbage envisioned (to the extent they can be determined from the extant documents, which are occasionally contradictory and ambiguous) and get a feel both for its capabilities and limitations (you will quickly, for example, begin to appreciate why index registers and/or indirect addressing and subroutine calls were such important innovations in the early years of electronic computers). Analytical Engine programs could be run either from a command-line emulator or within Web pages as Java applets.

Unfortunately, the bright promise of Java in the 1990s has, at least as a means of adding interactivity to the Web, turned into a disappointment as dismal as a styrofoam cup of cold week-old coffee. A litany of security problems, incompatibilities among implementations of the language, and bloat in the language and its libraries turned the promise of “write once, run anywhere” into a reality of “write once, fix it forever, and struggle to keep it running”. With Release 52 of Firefox in March 2017, support for Java applets has been entirely removed, and Oracle, who inherited Java when they acquired Sun Microsystems, has announced that their Java applet plugin for all browsers will be discontinued. While the command-line Analytical Engine emulator continues to work, the demise of Java applets has made running the emulator within a browser, as most users preferred, no longer possible.

Fortunately, it is now possible to implement an interactive Web resource such as The Analytical Engine Emulator without plugins, using only (more or less) standardised technologies such as HTML5 and JavaScript (which, notwithstanding the name, has nothing whatsoever to do with Java). The 2017 edition of The Analytical Engine updates all of the documents to contemporary Web standards and provides a new JavaScript-based Web Emulator which is upward compatible with the original Java implementation and includes some new capabilities, including estimating the time programs would have taken to run on the mechanical Engine. A variety of new sample programs which can be run on the Web Emulator are available, including computation of the Fibonacci sequence, Newton's method, plotting the limaçon curve, numerical integration for naval gunnery, and estimating π with the Monte Carlo method.

You can write your own programs for the Analytical Engine, either stand-alone or using the mathematical function library. If you create any interesting programs or additions to the library, please contribute them for inclusion in this Web resource.

The best place to begin your exploration of The Analytical Engine at Fourmilab is the Introduction and Table of Contents.

Posted at March 19, 2017 15:30