There are a number of books I have found helpful in making me a better IDL programmer. Here are the ones I especially recommend. They can be found or ordered from almost any good technical bookstore. You can also order these books on-line from Amazon.com by clicking the button beside the book's picture.
Coyote's Guide to Traditional IDL Graphics by David W. Fanning
This book describes the traditional graphics commands (e.g., Plot, Contour, Surface) of the IDL language. These are the old school commands that have been a part of IDL from the beginning. But just because they are old school doesn't mean they aren't used every day by IDL programmers. And they don't seem to be going away, even in the face of yet another “new” graphics system in IDL 8.
The reason, of course, is that these venerable old commands are fast, flexible, and firmly established in the minds of IDL programmers the world over. All they really need is to be refurbished to work correctly with today's modern computers. This book describes exactly how to do that, using programs from the powerful Coyote Library. The techniques described in this book work in any version of the IDL language, including the one you are currently using.
Whether you are a beginning IDL programmer, or a veteran of many years experience, you will find something new, interesting, and thought-provoking in the pages of this book. Among the topics you will learn about are these:
Using techniques found in this book, you will not only write graphics programs that duplicate the functionality of the latest of the “new” graphics systems, but you will write programs that are faster (orders of magnitude faster, in some cases!) and simpler. Plus, you will be able to create new displays of graphical information that are simply not possible in the new graphics systems. This is a book that will change the way you write IDL programs forever!
IDL Programming Techniques, 2nd Edition by David W. Fanning
When I wanted to draw my first line plot in IDL (Interactive Data Language from ITTVIS) over 20 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 documentation, separating the twenty percent of the information they need daily from the eighty percent they need 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 programming tasks. The book has been refined over so many years I feel confident predicting you will find described within its pages over eighty percent of what you ever want to do in 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, PNG, 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 (and especially the information on writing widget programs, or programs with graphical user interfaces) can be found nowhere else.
More than anything, I wanted this book to be the one I wish someone had given me when I was learning to use IDL all those years ago.
Practical IDL Programming by Liam Gumley
Liam E. Gumley is a researcher at the Space Science and Engineering Center at the University of Wisconsin-Madison and is a long-time user of IDL. He has developed his expertise by analyzing and visualizing large earth science datasets acquired by NASA earth-orbiting satellites and aircraft. He has developed a number of high-end application programs in IDL, including an application for visualizing data from a NASA airborne imaging sensors.
In this book, Liam shares his hard-won experience with the reader. While covering much the same ground as IDL Programming Techniques, 2nd Edition, Liam does so from a scientist's practical perspective. He presents concise information on how to develop IDL programs that are well structured, reliable, and efficient. The nuts and bolts of IDL are all here in an accessible and informative manner. There is a very nice section on map projections. Details about the book can be found on Liam's web page. Published by Morgan Kaufmann Publishers, ISBN 1-55860-700-5.
An Introduction to Programming with IDL by Ken Bowman
Nothing is more intimidating to a new user of IDL than to sit down at a computer with an empty command line prompt and a stack of manuals on their desk and be told to write an IDL program. Where to begin!? And the experience is especially frightening to a new user with little or no programming experience in any language, let alone IDL.
Ken Bowman has written an IDL book specifically for this user. It is intended as an introductory computer programming course for the research user with little or no training in any computer language, and it evolved from notes Ken uses in his own undergraduate IDL programming courses. It is meant to get the new IDL user analyzing and plotting data as soon as possible.
It is a narrow path he treads, because it is just as easy to offer too much detail as it is to offer too little information to the beginning user. Ken, for the most part, gets it exactly right in covering a broad selection of topics. I quibble with just two chapters. He sweeps aside the complexity of PostScript output by offering the new user two utility programs he fails to explain in the text, and his theoretical explanation of the FFT function left me gasping for breath and lamenting I hadn't paid closer attention in those long-ago math classes.
This is a book that will get you started, but probably won't answer all your questions when you turn your attention to more difficult research problems. Ken doesn't pretend it is anything other than what it is, however, and provides generous and helpful suggestions for where you can find additional information as you become ready for it. Readers already familiar with another programming language will appreciate this introduction to IDL, but might become frustrated with the slower pace and lack of specific detail on many topics.
The book has an associated web page, where you can find, among other things, the source code for all the programs mentioned in the book. There is also a nice section on using Macintosh computers for science applications that is worth looking into if you use a Mac. This friendly book will be a welcome introduction to the subject for many a potential IDL programmer.
Application Development with IDL by Ronn Kling
I've been teaching people how to use IDL for nearly 10 years now. In all that time, I can probably count on one hand the people who just immediately understood the power and versatility of IDL. Ronn Kling was one such student. I remember I couldn't even leave the room on breaks because Ronn kept pestering me with questions. And, sure enough, in almost no time at all Ronn was writing IDL programs that far surpassed my own in terms of complexity and elegance.
Now, in this book, he shares the understanding and excitement of writing complex and interesting IDL programs with us. Teaching is a complex business. It is not always enough to know something. It is often more useful to teach how you came to know something. The process is more important than the final result. Ronn takes you step by step though the development of several extremely useful algorithms and their implementation in IDL. His book is unique in explaining the techniques and thinking required to write complex IDL programs in an elegant and straightforward style. The book is perfect for the intermediate IDL programmer who wants to take his or her IDL programs to the next level. I don't know about you, but I certainly fall into that category and I found this book welcome, indeed.
You can order the book here.
Calling C from IDL: Making Sense of the Sometimes Confusing World of C and IDL by Ronn Kling
OK, it's got a funny cover. I admit it. But there is no other way to say it. If you are calling C programs from IDL, this is the book to get. You cannot live without it! Absolutely full of the kind of expertise it is painful to gain on your own. We have been looking for this book for a long, long time. Ronn does not disappoint.
The book is sub-titled "A Beginners Guide to IDL Object Graphics", and it is just what it claims to be. If you are just starting out on this difficult topic, probably teaching yourself about 3D graphics as you go, then this book can be an invaluable reference. If you follow his advice you will at least see something in your graphics window, and if you read carefully you might even understand why you see something. (You are not likely to learn this from the IDL documentation, unless you plan on shedding a lot of blood.)
Bottom line, if you are starting out with object graphics and are frustrated beyond belief and don't know where to turn, this is the book for you. If you are just frustrated writing object graphics programs...well, that's pretty much par for the course. :-) You can purchase the book at Ronn's web page.
Digital Image Processing, Third Edition, by Gonzalez and Woods
This is the best image processing book I have ever read. It is extremely easy to follow, covers all the relevant ground, and is supported by an outstanding web page where you can get images, answers to problems at the end of the chapters, and other supplemental material. This is the only image processing book I have ever read where I thought to myself, "Why, I could implement that algorithm in IDL!" If you only have one image processing book on your self, it should be this one. Published in hardback by Prentice Hall, 2002. ISBN-0-201-18075-8.
Digital Image Processing Using MATLAB, by Gonzalez, Woods, and Eddins
This is the companion book to Digital Image Processing, by Gonzalez and Woods. Using the two books together, it is dead simple to write IDL code implementing the image processing functionality described in either book. Well, maybe not dead simple, but possible, for sure. I find I read Gonzalez and Woods for the theory, and this book to learn the details of how to implement an algorithm. Basic knowledge of IDL is all that is necessary. Published in hardback by Prentice Hall, 2002. ISBN-0-13-008519-7.
Statistical Methods in the Atmospheric Sciences (2nd Ed.) by Daniel S. Wilks
I judge the usefulness of a book by how quickly I can learn something new and apply it to the problem I am currently working on. Most statistics books, judged by this criteria, fail miserably. But here is a book that not only succeeds, but succeeds so well I actually find myself getting excited about reading the next chapter, which has nothing to do with the problem at hand! By confining himself to just a handful of simple data sets, Wilks makes it possible to work though the examples in detail and in a variety of ways. But the most important benefit to me is that I can immediately turn his examples into IDL code, which I can use to solve my problem. Unlike so many books, which provide the broad theoretical strokes, but leave the details in shadow, Wilks explains the details in simple, straightforward language. His explanation of harmonic analysis and FFT spectral analysis was so crystal clear I believe it was the first time I thought I truly understood this important concept. I can imagine there will be statisticians who will not like this book. But for those of us working with environmental data who need to know some statistics to get our work done, this book is a godsend.
Code Complete: A Practical Handbook of Software Construction by Steve McConnell
If you are looking for a good book to tell you how to write programs, this is the best I have ever seen. McConnell has a world of experience and has made a lot of mistakes. He tells you here in an a extraordinarily readable way how you can avoid the problems he encountered. Numerous IDL programmers have recommended this book to me. If you are going to write large programs, don't start until you read this book. Published in paperback by Microsoft Press. ISBN-1-55615-484-4.
Object-Oriented Design Heuristics by Arthur J. Riel
If you are over the age of 30 or so, this whole object-oriented programming movement may have you scratching your head. If you're like me, you don't want to go back to school to take a C or C++ programming class just to understand what it's all about. But most object-oriented programming books assume you are an expert C++ programmer. Not this one. This is the clearest, best written, most jargon-free book on object-oriented programming I have read. And the best thing about it is that you don't have to know C or C++ at all to understand the concepts. This is the book that gave me the courage to dig into the object graphics system in IDL and understand what I was reading. I highly recommend it. Published in hardback by Addison-Wesley, 1996. ISBN-0-201-63385-X.
Computer Graphics Using OpenGL by F.S.Hill, Jr.
Having trouble understanding IDL object graphics? Here is a book that will explain the fundamental concepts in a way you can understand. Extremely clear explanations and lots of examples. I found the equations and algorithms for doing particular 3D manipulations especially useful. If nothing else, this book is a wonderful help in reading between the lines of the IDL documentation. Published in hardback by Prentice Hall, 2001. ISBN-0-02-354856-8.
Introduction to Computer Graphics by Foley, van Dam, Feiner, Hughes, and Phillips.
This is not the famous Foley and van Dam book, Computer Graphics: Principles and Practice, that most of us who grew up around computer graphics think of as the bible of computer graphics. Rather, it is an updated and simplified book for someone like me who doesn't need to know all the details, but does need to know something about computer graphics. I've found it especially helpful with respect to understanding the object graphics system in IDL. Published in hardback by Addison-Wesley, 1994. ISBN-0-201-60921-5.