By Diana Weynand. Adobe (Peachpit) Press - ACS Publications

Dec 9, 2006 - Final Cut Express HD: Digital Video Editing for Everyone (Apple Pro Training) By Diana Weynand. Adobe (Peachpit) Press: Berkeley, CA. 20...
2 downloads 12 Views 19KB Size
BOOK REVIEWS

J. Chem. Inf. Model., Vol. 47, No. 1, 2007 249

BOOK REVIEWS Introduction to Programming with Fortran: With Coverage of Fortran 90, 95, 2003 and 77.. By Ian Chivers and Jane Sleightholme. Springer: London, U.K., 2005. XX+592 pp and CD-ROM. ISBN 1-84628-053-5. Softcover. U.S. $69.95, Euro 53.45. Fortran is considered nowadays by many people a last living dinosaur in the multifarious realm of programming languages. When it comes to databases, graphics, or even Web applications, various objectorientated programming languages are unquestionably the better choice. Butsof course there is a ‘but’, otherwise there would be no justification for this reviewsmany established and widely used scientific programs with tens of thousands of lines of existing source are coded in this very language, including computational chemistry packages like Gaussian, Turbomole, Mopac, Vamp, Amber, or CHARMm. Because rewriting the programs in a more modern language is neither feasible nor affordable, a certain skill in Fortran is still needed for a full understanding as well as possible extension of the code, and thus Fortran textbooks like the new Introduction to Programming with Fortran will continue to be published. The book authors Chivers and Sleightholme host the comp-fortran90 forum on the Internet and have two decades of experience in teaching and practicing Fortran. Unlike their introduction to Fortran 95 published some years ago, Introduction to Programming with Fortran takes a more general approach: It targets both the complete novice who wants to learn the fundamentals of using Fortran as well as the programmer who wants to migrate to the newer Fortran versions. The books begins with a six-page overview of its chapters, which all have a similar structure: After the topic is presented and source code examples explained, a short summary is given, and then the reader is faced with some questions in the ‘Problems’ section, which is intended to deepen the understanding of the subject matter; each chapter closes with a bibliography that also includes Web links to further information. The 31 chapters of the book may be subsumed into three major parts. First, there are six introductory chapters with 68 pages covering computers and their operating systems, their general use in problem solving and programming, and a short overview of existing programming languages. The next part consists of 16 chapters (290 pages) that contain the actual description of the language features (variable types and POINTERs, arrays, intrinsic and user-defined procedures, MODULEs, input/output, and control structures). The third part (155 pages) deals with advanced topics: converting from older Fortran versions; case studies to clarify some Fortran characteristicsse.g., using linked lists for sparse matrix problems, operator overloading, and graphical output by means of external libraries; useful modules extending the current Fortran standard; a short overview of the upcoming Fortran 2003 features; and a very short section on parallel programming. Eight appendices and an index (71 pages) close the book. The appendices contain, besides other topics, a glossary, an overview of intrinsic functions and subroutines, a definition of the formal syntax in Fortran, and useful compiler options of some Fortran90/95 compilers (from CVF, Intel, Lahey, NAG, Salford). The full table of contents may be viewed at the publisher’s Web site at http://www.springer.com/cda/content/ document/cda_downloaddocument/9781846280535-t1.pdf?SGWID)00-45-163725-p52482633. The book is complemented by a CD-ROM containing the commercial NAGware Fortran95 compiler 5.0, for which a 30-day license can be obtained from the company upon request, and a demonstration program of the NAGware Fortran tools for Windows/Linux (32 Bit). It simulates an interactive session of three commercial software tools that allow the user to clean up, restructure, or convert code from Fortran 77 to 95, automatically standardize the declaration and numerical precision of variables, and more. Like other textbooks on programming languages, the authors chose a course-oriented approach where each single chapter is of manageable length for self-study and broad topics are split up and covered in several chapters. This classification, however, is not strictly applicable, because

the chapters possess rather different lengths, the one about COMPLEX variables being the shortest at four pages. The introductory chapters, although not imperative for learning Fortran, nicely embed the main topic of the book into the general context of computer science. The stroll through the history of programming languages and their main features is a notable benefit for those interested. For explaining the features (and pitfalls) of Fortran, the authors follow a proven exempla trahunt philosophy: There is a multitude of well-suited examples throughout the book demonstrating the theoretical concepts. Furthermore, the authors include many useful hints for common programming issues such as manual debugging. In their case studies, the frequent task of extending or converting from older Fortran versions (mainly 77) is explored and also addressed using commercial software tools. And should the reader regard the importance of computer numerics as sometimes overemphasized, thinking that this should have no effect on his/her programs, he/she is provided with an intriguing example where a single erroneous typecast caused the rocket Ariane 5 to explode 1 min after lift-off. But where light is, is shadow too. A main concern here is the authors’ implicit way of explaining things, starting off with the question about the Fortran version taught: Although the book’s subtitle reads With coverage of Fortran 90, 95, 2003, and 77, the reader is left to draw the conclusion that the actual focus lies on Fortran 95. This might in turn be the reason that some important Fortran 77 features also lack explicit treatment, among them the (non)significance of spaces, case insensitivity, the variable naming scheme, the fixed-column input format including the definition of continuation and comment lines, and the named logical operators (e.g., ‘.LE.’ instead of ‘