|
Python Scripting for Computational Science (Texts in Computational Science and...
Product Review From the reviews of the second edition: "This book addresses primarily a CSE (computational science and engineering) audience. gives a clear and detailed account on the ways in which the surprisingly powerful Python language may aid the CSE community." (H. Muthsam, Monatshefte für Mathematik, Vol. 151 (4), 2007) Product Description The goal of this book is to teach computational scientists how to develop tailored, flexible, and human-efficient working environments built from small programs (scripts) written in the easy-to-learn, high-level language Python. The focus is on examples and applications of relevance to computational scientists: gluing existing applications and tools, e.g. for automating simulation, data analysis, and visualization; steering simulations and computational experiments; equipping old programs with graphical user interfaces; making computational Web applications; and creating interactive interfaces with a Maple/Matlab-like syntax to numerical applications in C/C++ or Fortran. In short, scripting with Python makes you much more productive, increases the reliability of your scientific work and lets you have more fun - on Unix, Windows and Macintosh. All the tools and examples in this book are open source codes. The third edition is compatible with the new NumPy implementation and features updated information, correction of errors, and improved associated software tools. Reader Reviews This review is from: Python Scripting for Computational Science (Texts in Computational Science and Engineering) (Hardcover) The author has 2 main goals: 1) To improve the productivity of scientists familiar with specific software systems (especially Matlab, Maple, and Mathematica) by teaching them to "glue" applications together. 2) To advocate Python as the preferred "glue" language. In his own words, "I hope to convince computational scientists having experience with Perl that Python is a preferable alternative, especially for large long-term projects." He has certainly done a creditable job. As an expert in computational differential equations, he neglects neither efficiency nor correctness, while stressing both simplicity and reliability. In this sense, he has done a great service to the Python community. The question is: What justifies the purchase of his book? The answer is: Chapters 4, 9, and 10. Contents: 1. Introduction--26pp Very convincing arguments. 2. Getting Started With Python Scripting--38pp Interesting examples. 3. Basic Python--56pp A too-quick tutorial. Go to python dot org instead. 4. Numerical Computing in Python--48pp Stellar explanations of vectorized array operations. 5. Combining Python with Fortran, C, and C++--36pp Details use of Fortran2Py and SWIG. Mentions many alternatives. 6. Introduction to GUI Programming--70pp Useful examples of Tkinter/pmw widgets. 7. Web Interfaces and CGI Programming--24pp Good source of ideas. 8. Advanced Python--132pp Deep and extensive. Includes: option parsing, regular expressions, data persistence and compression, object-oriented programming, exceptions, generic programming, efficiency. 9. Fortran Programming with NumPy Arrays--32pp All about efficiency and re-use. 10. C and C++ Programming with NumPy Arrays--40pp More about efficiency. NumPy C API, C++ objects, and SCXX. 11. More Advanced GUI Programming--73pp Tedious discussion of both Web and standalone GUIs. BLT, canvas, cgi. 12. Tools and Examples--70pp Excellent examples of PDE solvers, with a powerful GUI, but quite long and tedious. A. Setting up the Required Software Environment--16pp Wonderfully specific installation instructions! B. Elements of Software Engineering--50pp Python's strength! Very practical advice on modularity, documentation, coding style, regression-testing, version-control. Strengths: + Downloadable py4cs package, esp. numpytools module + Great advice everywhere, e.g. CGI checklist, Pythonic programming, and trouble-shooting. + Concrete evidence for most assertions. + Very attractive presentation. Sturdy, high-quality cover, binding and pages. Brief, elegant code fragments (except in Chapter 12). Readable prose. No wasted space. + Available as 5MB pdf file, after purchase of hardcopy. Very nice. + Slides, installation instructions, and errata also at web site. Very professional. My peeves: - Not enough tables to be a useful manual. - On p.428(#7) he points out that handling a raised exception is very slow. However, when I time his example with a positive argument, the try-except version is 20% faster (b/c the if clause is skipped), so he is actually giving bad advice for the general case. Luckily, he contradicts himself later, on page 685: "Exceptions should be used instead of if-else tests." The best advice: Avoid common exceptions in inner loops. - The 10-page index is not as great as it at first seems. (See Martelli's Python in a Nutshell for a better one.) - Pure interface functions should 'raise NotImplementedError', rather than 'return'. - Exceptions should never be trapped mindlessly with 'except:'. That would hide your own SyntaxErrors! - Too many exercises. (It's published as a textbook.) Since there are no answers, the exercises are useless for non-students. (See Lutz's Learning Python for effective exercises with answers.) Overall rating: This contains the best information on numerical programming in Python that I've seen. Though expensive, it could easily be your only Python book, given the excellent online documenation already available. Comment | | (Report this)
|

