Preface

Mathematica's programming language is an important addition to a comprehensive symbolic computation system. To the novice, it may seem overwhelming, with over 1000 built-in functions. As we shall show in Chapter 1, it nevertheless has a coherent style and it is easy to learn. The significance of Mathematica's programming language can also be judged from the fact that it is used for teaching programming at a growing number of universities. One of the most rewarding features is that a clarifying picture and other means of explaining how programs work are never far away. One has the whole power of Mathematica at one's disposal.

The large number of ways to solve some given problem makes it necessary to point out the easy way of doing things, especially to users who have been familiar with one of the traditional programming languages. The designers' view was expressed in my first book, Programming in Mathematica. My goal was to explain the ideas behind the language and to develop useful example programs. This strategy is continued in an ongoing series of articles in The Mathematica Journal, entitled The Mathematica Programmer. The title of this series is now also the title of this book series. A first installment of these articles was published in the first volume. Now, another set of articles has accumulated and is part of this Volume II. The articles can be divided roughly into two kinds: explanations of fundamental programming paradigms and applications, this time mostly visualizations. This distinction is reflected in the two parts that make up this book. Besides the articles from the journal, and one article from Mathematica in Education, I have included new material, such as Chapter 1, which has been updated from a similar introduction in the first volume. The material from the articles has been expanded and all program listings are now included.

The first articles appeared before Version 2.0 of Mathematica, and all articles appeared before Version 3. Because there have been major improvements from Version 1 to Version 3, as well as a few incompatibilities, I took the opportunity to update all programs from both volumes to Version 3. All programs are included in the accompanying CD-ROM.

Pictures are always a good means of explaining things. The beauty of well-chosen graphics illustrations is in itself an important aspect of the otherwise rather dry world of computers. The color insert in this book gives me the chance to show the full range of possibilities. In all cases Mathematica delivered the raw data, which was then turned into color illustrations using a variety of techniques, which are the topic of the second part of this book.

The CD-ROM contains all the information relating to this book that is best accessed in electronic form, such as the programs, notebooks with examples, color images, and pointers to resources on the Internet. The information on the CD-ROM can be accessed through a hypertext system.

My thanks go foremost to the editors of The Mathematica Journal and Mathematica in Education, Troels Petersen and Paul Wellin, respectively. They helped me put my writings into a form worthy of publication. I would like to thank Miller-Freeman, Inc., for giving me permission to include the articles from The Mathematica Journal in this book, and Springer-Verlag/TELOS for doing likewise with the article that appeared first in Mathematica in Education (now called Mathematica in Education and Research). Chuck Glaser from Academic Press encouraged me to publish this second volume.

A number of people contributed to particular subject matters. Robert Marti helped me develop the logic interpreter, and Georgios Grivas and Stephan Zahner wrote the first version of the unifier. Zvi Har'El made many helpful comments on a draft of Chapter 9. The visualization chapters benefit from the easy availability of good ray-tracing and stereogram programs. My thanks go foremost to the POVray team and to Craig E. Kolb for writing the ray tracers, and to Pascal Massimino for his RAYsis. The programs work very well. Special recognition to Jef Poskanzer for developing the PBM package, which successfully tackles the jungle of graphic file formats. John Bradley's program xv was most useful for looking at the graphics on my workstation screen. More information about all of these programs is included on the Mathematica Programmer CD-ROM. Plate 13 was produced by F. Bachmann, ETH Zurich, using my ray-traced images. M. Braschler helped me prepare the material on the CD-ROM.


Top Up Next Internet Updates

Rev. 1.0, REM, © 1996 Roman E. Maeder