IDL stands for Interactive Data Language and is a modern general purpose computer language with many of the best features of other well known languages; the resulting combination is powerful and easy to use. It has FORTRAN like statements for doing mathematical computations and allows FORTRAN formatting for output. IDL also resembles APL by making array operations a natural part of the language. Like APL and BASIC, IDL is an interpreted language making it very easy to try ideas and develop techniques, often using interactive commands; you are not forced to write or modify a program for each little change. IDL includes a set of powerful array operators like APL, but uses standard keyboard characters instead of the special characters needed by APL. Like the C language IDL has a complete set of program flow statements. Also like C memory may be allocated as needed and structures may be used. Pretty much unique to IDL are the standard graphics and imaging commands, these are what makes IDL so special. While other languages may have similar capabilities none are as portable as IDL which is now available for most workstations, home computers, and some supercomputers. Through the years, as computers have become faster, IDL has lived up to its name by becoming even more interactive. In the past it has not been a widely known language but now it is in a position for possible explosive growth, it could easily become one of the major languages of the 90s and beyond. IDL is maintained and distributed by Research Systems, Inc. (RSI) of Boulder, Colorado. The inventor of the language and founder of the company is David Stern.
It is not necessary to be familiar with other computer languages before learning IDL, it is very easy to start using powerful language features after just a short start up time. However as you learn more about the language it will become possible to write more efficient software.
IDL has a variety of data types: bytes, short integers, long integers, floating, double, complex, and strings. There may be multidimensional arrays of these data types; there may also be structures. IDL allows modern structured programming by including FOR loops, WHILE loops, REPEAT UNTIL loops, CASE statements, statement blocks, program modules, and more. IDL is best known for its graphics and image display capabilities. For example it is possible to display a 2 dimensional array in the following ways: as an image, as a surface grid plot, as a shaded surface plot, as a contour plot, and as a combination of several of these. Images may be displayed in black and white, pseudo color, or true color. Graphics may be as simple as an X,Y plot or as complex as you want to make them. A number of graphics formats are supported, and graphics and images may be directed to various hardcopy devices, or sent to a file in one of a number of standard graphics formats. IDL I/O makes it possible to read almost any data set if its format is known. There is very good string handling support. Commands may be sent to the operating system and the results returned for examination or processing. A useful example of such a command is to send a graphics file generated by IDL (such as a PostScript plot) to a graphics printer for hardcopy. IDL routines may be called recursively. It is possible to call routines written in other languages from IDL. A set of widgets are included that allows graphical user interfaces be created. Data may be displayed on a variety of map projections along with continent outlines and map grid lines. A library of statistical routines is also included. This is nowhere near a complete listing of the capabilities of IDL but may be enough to let you decide if it is worth your time to look more closely at the language.
Ray Sterner