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