Book review: Fortran 90/95 for Scientists and Engineers

When I started my new job three months ago, I didn’t know how to write a Fortran program. I had to modify an already existign Fortran 77 program to enhance and parallelize it. So I went to the library and I took this book aimed at people like me.

Content and opinions

There is no clear delimitation between the 16 chapters, this is the only glitch in the table of contents. Also, some chapters talk about a subject, then another is introduced, and the one after deals about enhancements of the first subject. But all in one, the difficulty is growing through the book (that’s obviously the reason of no clear delimitations ebtween subjects).

If you just need basic Fortran, then the first 8 chapters will be enough. If you need more advanced techniques, you can directly go to the last chapters. Obsolete and bad Fortran pratices are grouped in the last chapter, and it’s a good thing to have a small place where you can refer to if you encounter some obsolete Fortran features.

There are a lot of examples, with explanations, notes, Fortran good practices, … Each chapter ends with a summary, with the main ideas (once you’ve read the chapter, they are the only things that matter) and the associated good practices. It is to be noted that almost every Fortran practice is explained, the good as the bad ones, the one you should use as the one you should not, but you can still encounter them in old code (or Fortran 77 code). But the book is clear about which you must use. The end of each chapter is a set of “cards” with the new tools (statements, functions, …).

Each time I encountered a problem, I found something in this book. And it is usually in the summaries (because you do not need every explanation if you’re only looking for a specific answer).

Conclusion

The book was really easy to read. It seems to cover almost every part of the Fortran standard, even those which should not be used anymore. I didn’t see a warning about the danger of passing twice the same array to a function that will modify it, but it is the only thing I found missing.

Leave a Reply