This book describes the essential IDL (Interactive Data Language) programming techniques readers need to write programs in the IDL language. It not only covers all the basics of line plots, contour and surface plots, image display, color handling, and hardcopy output, but it is also the only book currently available that shows readers how to write an IDL program with a graphical user interface and how to create and use objects in IDL. It is full of examples, tips, and tricks IDL programmers need to write powerful and elegant IDL programs. The book describes over 50 IDL programs that can be used to enhance the reader's own IDL programs.
When I wanted to draw my first line plot in IDL (Interactive Data Language from Research Systems, Inc.) over 12 years ago, I had to read through the entire manual--twice--to understand how it was done. Although the documentation has changed dramatically in the intervening years, it is still difficult for someone new to IDL to sift through the voluminous documentation, separating the small percentage of information they need daily from the much larger percentage they use infrequently.
What I set out to do in this book is to describe by example those IDL programming techniques I find essential in my own daily IDL programming tasks. The book has been refined over so many years I feel confident predicting readers will find described within its pages over eighty percent of what they ever need to know to work with IDL.
Another goal for this book was to demonstrate for fellow scientists who may have taught themselves computer programming how to write an "elegant" IDL program. I've been teaching people how to use IDL for almost as long as I have been using it myself. I've seen a lot of programs that "work", but are otherwise poorly written. (Alas, many of these programs have been my own.) These programs are difficult to extend, modify, and maintain.
In this book I wanted to lay out a handful of simple IDL programming principles that would allow users to write elegant programs with resizeable graphics windows, easy and automatic access to PostScript, TIFF, and JPEG file output, intelligent use of color, and with intuitive graphical user interfaces.
Moreover, I wanted to describe an object-oriented programming style that makes programs easy to maintain, modify, and extend over time. These principles, along with the information on how to write proper widget programs (programs with graphical user interfaces) and to create IDL objects themselves, can be found nowhere else.
More than anything, I wanted this book to be the book I wish someone had given me when I was learning to use IDL.