On the Shoulders of a Giant

October 13 2011 stefanv 80


Today we've lost computing pioneer Dennis Ritchie. For those not familiar with Dr. Ritchie, he was the co-inventor of the Unix operating system (with Ken Thompson), and the C programming language (with Brian Kernighan), both of which are an integral part of Maple's history.

When Gaston Gonnet implemented the very first version of the Maple kernel, he wanted to do it in the then-new C language, for the hardware and operating system independence that it provided. Unfortunately, no C compiler was readily available at that time, and he had to use B (the predecessor to C on which Ritchie based his work) instead. With the use of a custom macro preprocessor, it was possible to write the code to build with either a B or C compiler, so when a C compiler did become available, the switch was made relatively painlessly. The Maple kernel has been in C ever since.

Dr. Ritchie hit a sweet spot with the design of C. It is high-level enough that it looks like a normal, modern, structured programming language. At the same time, it is low-level enough to be extremely efficient. It is well suited to writing operating systems, parsers, interpreters, and efficient data manipulation functions. Elements of all of these are found in Maple's kernel.

Although the first B, and later C, implementation of Maple was done on a Honeywell computer running a proprietary operating system (GCOS if I recall), almost all subsequent work was done in the much more flexible, and programmer-friendly, UNIX operating system. In the early days of the University of Waterloo's Symbolic Computation Group (the birthplace of Maple), it was not uncommon for half a dozen developers to work simultaneously (via serial terminals) on our VAX minicomputer running BSD Unix. That computer had ONE megabyte (NOT gigabyte) of memory, and readily supported multiple simultaneous Maple sessions (although a single user running the Lisp-based EMACS text editor could bring it to its knees). This is a testament to both C as a language for developing efficient code, and UNIX as an operating system that made efficient use of the hardware.

To this day, Maple kernel development continues primarily in C, sometimes C++. Many of our developers work on PCs running Linux, an open-source UNIX clone. Others use Macintoshes running OSX, built on top
of UNIX. Those of us using Windows all use "cygwin", a shell and compatibility layer that make it look and work almost like UNIX.

Thank you Dennis Ritchie. You will be missed, but your legacy will live on for a very long time. We truly stand, and work, on the shoulders of giants.

Please Wait...