IDL, short for Interactive Data Language, is a programming language used for data analysis. It is popular in particular areas of science, such as astronomy, atmospheric physics and medical imaging. IDL shares a common syntax with PV-Wave and originated from the same codebase, though the languages have subsequently diverged in detail. There are also two free implementations, GNU Data Language (GDL) and Fawlty Language (FL).
As a computer language, IDL:
- is dynamically typed.
- has separate namespaces for variables, functions and procedures, but no namespace hierarchy.
- was originally single threaded but now has many multi-threaded functions and procedures.
- has all function arguments passed by reference; but see "problems", below.
- has named parameters called keywords which are passed by reference.
- provides named parameter inheritance in nested routine calls, by reference or value.
- does not require variables to be predeclared.
- provides COMMON block declarations and system variables to share global values among routines.
- provides a basic form of object-oriented programming, somewhat similar to Smalltalk, along with operator overloading.
- implements a persistent, global heap of pointer and object variables, using reference counting for garbage collection.
- compiles to an interpreted, stack-based intermediate p-code (à la Java Virtual Machine).
- provides a simple and efficient index slice syntax to extract data from large arrays.
- provides various integer sizes, as well as single and double precision floating point real and complex numbers.
- provides composite data types such as character strings, homogeneous-type arrays, lists, hash tables, and simple (non-hierarchical) record structures of mixed data types.
|HPC Resources supporting module|