scientific programming 15 (2007) 189–190 ios press book...

3
Scientific Programming 15 (2007) 189–190 189 IOS Press Book Review Writing Scientific Software – A Guide to Good Style, by Suely Oliveira & David Stewart, Cambridge Uni- versity Press, 2006, ISBN 0-521-67595-2 As a computer scientist working in the world of “re- al” (physical) scientists, I often feel stuck in some sort of purgatory between million-line FORTRAN codes and the (currently in vogue) elegance of Python, Java or Ruby. It is refreshing to discover a book on cod- ing style written by authors who obviously understand the application side of scientific software. Throughout the book, I must admit, I kept checking references and wanting to add footnotes to the content. Suely Oliveira (CS department) and David Stewart (Department of Mathematics) from the University of Iowa have a deep understanding of many of the com- plexities underlying software in the scientific domain. This topic is incredibly deep, including the obvious sci- entific simulation, image manipulation and even video games. The authors in this text take a broad approach, yet delve in deep in several (mostly mathematical) ar- eas. The book is divided into five parts: I) Numerical Software, II) Developing Software, III) Efficiency in Time, Efficiency in Memory, IV) Tools and V) Design Examples. Each topic is a text in itself (typically in computer science), which can make the field rather daunting for people without a CS background. The book approach- es the topic from the perspective of a scientist taking the next step into software. To take them down this path, the authors cover a broad range of topics yet with sufficient examples and references to do them justice. Part I: Numerical Software, starts by describing is- sues around precision and limits introduced through computational methods. This short section reveals the bitter reality of numerical calculations and ways to min- imize negative effects. The section ends with a few short examples of just how much damage these little gremlins of precision can be (famously disastrous, of course). Part II: Developing Software, covers some of the ba- sic computer science motherhood and apple pie. Top- ics include system architecture, design principles, data structure and designing for test. This is the largest sec- tion of the book, but appropriately so for an audience more likely to be familiar with test tubes or laser optics than MMU’s, ALU’s and the like. The level of cover- age is just enough to whet the appetite of those inter- ested in what the buzzwords are about. The computer scientist in me finds this broad topic to be of critical importance and I feel the need to add a pointer here to a wonderful educational resource available online called Software Carpentry (http://www.scipy.org disclaimer: I was associated with this work when it started in the mid-1990’s). The next section (Part III: Efficiency in Time, Effi- ciency in Memory) discusses issues relating to perfor- mance. I read this with mixed feelings as part of me wanted to scream out that optimization should be done as a latter step and/or when the application is under performing. Of course this isn’t an absolute and it is important to be aware of algorithmic design issues and the “Big O” nomenclature (which, unfortunately just showed up in the text and was not appropriately intro- duced). The section ends with a touch on the ever-evil memory bug and things to be done to avoid facing it. Part IV: Tools, is the topic I expect to be of most leverage for the reader. There is a wealth of scientific software available thanks to the research community within the US, and elsewhere in the world. The im- portance of these resources cannot be over emphasized as the reader is very likely to find either an existing solution to use or a close solution that can be modified (thanks to the amazing power of Open Source Soft- ware). Unfortunately this section is also the smallest of the book. I would have liked to have seen refer- ences to where to go to find existing software resources ISSN 1058-9244/07/$17.00 2007 – IOS Press and the authors. All rights reserved

Upload: others

Post on 22-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scientific Programming 15 (2007) 189–190 IOS Press Book Reviewdownloads.hindawi.com/journals/sp/2007/638179.pdf · Book Review WritingScientificSoftwar e–AGuidetoGoodStyle,

Scientific Programming 15 (2007) 189–190 189IOS Press

Book Review

Writing Scientific Software – A Guide to Good Style,by Suely Oliveira & David Stewart, Cambridge Uni-versity Press, 2006, ISBN 0-521-67595-2

As a computer scientist working in the world of “re-al” (physical) scientists, I often feel stuck in some sortof purgatory between million-line FORTRAN codesand the (currently in vogue) elegance of Python, Javaor Ruby. It is refreshing to discover a book on cod-ing style written by authors who obviously understandthe application side of scientific software. Throughoutthe book, I must admit, I kept checking references andwanting to add footnotes to the content.

Suely Oliveira (CS department) and David Stewart(Department of Mathematics) from the University ofIowa have a deep understanding of many of the com-plexities underlying software in the scientific domain.This topic is incredibly deep, including the obvious sci-entific simulation, image manipulation and even videogames. The authors in this text take a broad approach,yet delve in deep in several (mostly mathematical) ar-eas.

The book is divided into five parts:

I) Numerical Software,II) Developing Software,

III) Efficiency in Time, Efficiency in Memory,IV) Tools andV) Design Examples.

Each topic is a text in itself (typically in computerscience), which can make the field rather daunting forpeople without a CS background. The book approach-es the topic from the perspective of a scientist takingthe next step into software. To take them down thispath, the authors cover a broad range of topics yet withsufficient examples and references to do them justice.

Part I: Numerical Software, starts by describing is-sues around precision and limits introduced throughcomputational methods. This short section reveals thebitter reality of numerical calculations and ways to min-imize negative effects. The section ends with a few

short examples of just how much damage these littlegremlins of precision can be (famously disastrous, ofcourse).

Part II: Developing Software, covers some of the ba-sic computer science motherhood and apple pie. Top-ics include system architecture, design principles, datastructure and designing for test. This is the largest sec-tion of the book, but appropriately so for an audiencemore likely to be familiar with test tubes or laser opticsthan MMU’s, ALU’s and the like. The level of cover-age is just enough to whet the appetite of those inter-ested in what the buzzwords are about. The computerscientist in me finds this broad topic to be of criticalimportance and I feel the need to add a pointer here to awonderful educational resource available online calledSoftware Carpentry (http://www.scipy.org disclaimer:I was associated with this work when it started in themid-1990’s).

The next section (Part III: Efficiency in Time, Effi-ciency in Memory) discusses issues relating to perfor-mance. I read this with mixed feelings as part of mewanted to scream out that optimization should be doneas a latter step and/or when the application is underperforming. Of course this isn’t an absolute and it isimportant to be aware of algorithmic design issues andthe “Big O” nomenclature (which, unfortunately justshowed up in the text and was not appropriately intro-duced). The section ends with a touch on the ever-evilmemory bug and things to be done to avoid facing it.

Part IV: Tools, is the topic I expect to be of mostleverage for the reader. There is a wealth of scientificsoftware available thanks to the research communitywithin the US, and elsewhere in the world. The im-portance of these resources cannot be over emphasizedas the reader is very likely to find either an existingsolution to use or a close solution that can be modified(thanks to the amazing power of Open Source Soft-ware). Unfortunately this section is also the smallestof the book. I would have liked to have seen refer-ences to where to go to find existing software resources

ISSN 1058-9244/07/$17.00 2007 – IOS Press and the authors. All rights reserved

Page 2: Scientific Programming 15 (2007) 189–190 IOS Press Book Reviewdownloads.hindawi.com/journals/sp/2007/638179.pdf · Book Review WritingScientificSoftwar e–AGuidetoGoodStyle,

190 Book Review

(http://www.sourceforge.net is a good place to start,and of course http://www.Google.com).

The last section (Part V: Design Examples) is wherethe authors put some meat on the bone for the reader.Here they provide short examples, or tutorials on a fewkey design patterns. It is likely that the intended readerwill be most familiar with the application space, andthis section of the book would be most appealing. Iread it with interest, as the techniques are in commonuse by those I work with.

The book itself is not without bugs. There are theoccasional typo’s and use of terminology without in-troducing it. My biggest complaint is that the authorsdid not address the issues of parallelism. As multi-coresystems have completely overtaken, it seems an over-sight to not address this topic. I strongly feel the au-thors should have spoken up and provided their opin-ions, advice and references to where interested readerscould go to learn more.

Despite these minor complaints I do think the au-thors did a great job and should be commended fortheir efforts. Writing scientific software is an excitingand rewarding activity and also a great career for thosetrained (or training) in the sciences and interested inthe topic. As is widely publicized, computational sim-ulation is rapidly becoming accepted as a peer to the-ory and experiment in the quest for knowledge. Writ-ing scientific software is key to enhancing our under-standing of things. Guides to good style are a valuableresource to help us along that path.

Brent GordaLawrence Livermore National Laboratory

Livermore, CA, USA

Page 3: Scientific Programming 15 (2007) 189–190 IOS Press Book Reviewdownloads.hindawi.com/journals/sp/2007/638179.pdf · Book Review WritingScientificSoftwar e–AGuidetoGoodStyle,

Submit your manuscripts athttp://www.hindawi.com

Computer Games Technology

International Journal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Distributed Sensor Networks

International Journal of

Advances in

FuzzySystems

Hindawi Publishing Corporationhttp://www.hindawi.com

Volume 2014

International Journal of

ReconfigurableComputing

Hindawi Publishing Corporation http://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Applied Computational Intelligence and Soft Computing

 Advances in 

Artificial Intelligence

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Advances inSoftware EngineeringHindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Electrical and Computer Engineering

Journal of

Journal of

Computer Networks and Communications

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporation

http://www.hindawi.com Volume 2014

Advances in

Multimedia

International Journal of

Biomedical Imaging

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

ArtificialNeural Systems

Advances in

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

RoboticsJournal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Computational Intelligence and Neuroscience

Industrial EngineeringJournal of

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Modelling & Simulation in EngineeringHindawi Publishing Corporation http://www.hindawi.com Volume 2014

The Scientific World JournalHindawi Publishing Corporation http://www.hindawi.com Volume 2014

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014

Human-ComputerInteraction

Advances in

Computer EngineeringAdvances in

Hindawi Publishing Corporationhttp://www.hindawi.com Volume 2014