Lesa Williams, ITT VIS Programming Consultant, recently wrote a great review of Modern IDL for an internal ITT VIS newsletter. I had gotten word of the review last week, but today I received permission to post the whole review here:

Mike Galloy spent nearly five years writing this 462-page book covering modern topics in IDL, and it certainly shows. This virtual tome (available in both PDF and spiral-bound versions) contains a wealth of information on the IDL programming language, with sections for beginners and advanced users alike. It provides a wide range of topics spanning from IDL basics such as variables, file input/output, programming calls, and direct graphics to more advanced concepts such as widget/object graphics applications, IDL compound widgets and composite graphic classes, optimizing code performance, and external development using bridges, Python, etc.

One impressive aspect of Modern IDL is how well it illustrates some of the basic components of the IDL programming language from a fresh, unique perspective. Those with a chemistry or physics background will appreciate Galloy’s innovative way of viewing the IDL operator hierarchy via the “Periodic Table of IDL Operators.” Similarly, for those who are more literary in nature, there is an extensive section on strings and string manipulation, with an especially helpful segment on the often confusing, but very powerful, use of regular expressions. For visual learners, Modern IDL has an exemplary set of diagrams depicting the concept and use of pointer variables in IDL. The mathematically-minded will thoroughly enjoy the four-page section explaining the use of the IDLgrModel’s transformation matrix, as well as the seven-plus pages describing the simplistically beautiful, yet amazingly clever, HISTOGRAM function. Lastly, hard-core programmers will hone in on the chapter covering code performance in which Galloy addresses various ways to speed up and to make IDL code more computationally and memory efficient (e.g., taking advantage of IDL’s array operators, minimizing the number of interpreted statements, using IDL thread? aware operators/routines, etc.).

Accompanying the wide array of material in the Modern IDL text itself are over 50 pages of additional resources and information contained within the appendices. The book is also filled with numerous exercises and examples, which makes it a very practical, hands-on instructional guide. In my opinion, Galloy has written an outstanding and comprehensive book covering a vast range of topics relevant to the current world of IDL programming. This is a terrific resource — one that I will definitely revisit time and time again.