IDL (programming language)

Source: Wikipedia, the free encyclopedia.
IDL (Interactive Data Language)
ITT Visual Information Solutions (ITT VIS)
First appeared1977
Stable release
IDL 9.0 / November 30, 2023
Dynamic
Websitewww.harrisgeospatial.com/Software-Technology/IDL
Major implementations
IDL, GNU Data Language, Fawlty Language

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.[citation needed] 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 free or costless implementations, such as GNU Data Language (GDL) and Fawlty Language (FL).

Overview

IDL is

image processing). The syntax includes many constructs from Fortran and some from C
.

IDL originated from early VMS Fortran, and its syntax still shows its heritage:

 x = findgen(100)/10
 y = sin(x)/x
 plot,x,y

The findgen function in the above example returns a one-dimensional array of floating point numbers, with values equal to a series of integers starting at 0.

Note that the operation in the second line applies in a vectorized manner to the whole 100-element array created in the first line, analogous to the way general-purpose array programming languages (such as

arithmetic overflow, and store a NaN
value in the corresponding element of the y array (the first one), but the other array elements will be finite. The NaN is excluded from the visualization generated by the plot command.

As with most other array programming languages, IDL is very fast at doing vector operations (sometimes as fast as a well-coded custom loop in Fortran or C) but quite slow if elements need processing individually. Hence part of the art of using IDL (or any other array programming language, for that matter) for numerically heavy computations is to make use of the built-in vector operations.

History

The predecessor versions of IDL were developed in the 1970s at the

Mariner 7 and Mariner 9. Later, Stern wrote a program named SOL, which also ran on the PDP-8. Unlike its predecessors, it was a true programming language with a FORTRAN-like syntax. SOL was an array-oriented language with some primitive graphics capabilities.[1]

Stern left LASP to found Research Systems Inc. (RSI) in 1977. The first RSI product was IDL for the PDP-11.

Naval Research Laboratory
started to use IDL with this version.

In 1987 RSI shifted development work of IDL to the Unix environment, which required a complete re-write of the code in C rather than a port of the existing version of VAX IDL. [1] Stern and Ali Bahrami rewrote IDL for Unix on the Sun 3, taking advantage of the re-write to extend and improve the language. Subsequently, IDL was further expanded and ported to several variants of Unix, VMS, Linux, Microsoft Windows (1992), and Mac OS (1994).

Widgets were added to IDL in 1992, providing

ENVI under the terms of a license agreement with BSC, LLC from 1994 through October 2000. New object and pointer types, and limited object-oriented programming
capabilities, were added to IDL in 1997.

IDL has been applied widely in space science, for example in solar physics. The European Space Agency used IDL to process almost all of the pictures of Halley's Comet taken by the Giotto spacecraft. The team repairing the Hubble Space Telescope used IDL to help them diagnose anomalies in the main mirror. In 1995, astronauts on board a Space Shuttle used IDL loaded on a laptop to study ultraviolet radiation. Currently, amongst other applications, IDL is being used for most of the analysis of the SECCHI part of the STEREO mission at NRL, USA, and at the Rutherford Appleton Laboratory, UK.

RSI became a wholly owned subsidiary of

Harris Geospatial Solutions which later became L3Harris Geospatial Solutions. In April 2023, IDL was acquired by NV5 Geospatial
.

Features

As a computer language, IDL:

Problems

Some of these features, which make IDL very simple to use interactively, also cause difficulties when building large programs. The single namespace is particularly problematic; for example, language updates that include new built-in functions have on occasion invalidated large scientific libraries.[2]

Arrays are passed by reference, and this mechanism is an advertised feature of the language to pass data back out of a subroutine – in contrast, array slices are copied before being passed, so that data modifications do not flow back into array ranges (after the subroutine exits), violating the

principle of least surprise
.

Many historical irregularities survive from the early heritage of the language, requiring individual workarounds by the programmer. As an example:

  • Array indexing and subroutine entry can both be carried out with exactly the same syntax (parentheses); this ambiguity, coupled with the single namespace for all variables and subroutines, can cause code to stop working when newly defined subroutines or language extensions conflict with local variable names. IDL programmers can avoid many of these problems by using square brackets for array indexing, thereby avoiding conflicts with function names which use parentheses.

The preceding issue can be alleviated using this compiler option:

COMPILE_OPT STRICTARR

about the IDL program. Reverse engineering of this file is therefore forbidden under the terms of the IDL End User License Agreement (IDL EULA). All IDL users are required to read and agree to the terms of the IDL EULA at the time that they install IDL. Software that reads or writes files in the IDL Save/Restore format must have a license from NV5 Geospatial Solutions, Inc. explicitly granting the right to do so. In this case, the license will be included with the software for your inspection. Please report software that does not have such a license to your account manager or sales representative." As of August 2023[update], the statement has not been tested in a court of law. Also, that provision of the IDL EULA has no effect in Australia, as a result of sections 47D and 47H of that country's Copyright Act.

Examples

The following graphics were created with IDL (source code included):

See also

  • List of numerical-analysis software
  • ENVI
    – an image processing software package built in IDL
  • IRAF – a free, graphical data reduction environment produced by NOAO
  • MATLAB – a technical computing environment providing similar capabilities to IDL
  • NumPy – an extension for Python that gives it array math capabilities similar to those of IDL
  • Perl Data Language (PDL) – An extension to Perl that gives it array math capabilities similar to those of IDL
  • Scilab - a high-level, numerically oriented programming language designed for Scientific computing and interfaces
  • Solarsoft – library for solar data analysis and spacecraft operation activities written predominately in IDL
  • GDL – GNU Data Language, a free implementation similar to IDL.
  • Fawlty Language – Fawlty Language is an IDL8 (Interactive Data Language) compatible compiler.

References

  1. ^ a b c d Schienle, Mike (1991-01-19). "IDL FAQ". Retrieved 8 February 2019.
  2. ^ Fanning, David. "Program Naming Conflicts in IDL 8". Archived from the original on 6 March 2014. Retrieved 30 September 2014.
  3. ^ Markwardt, Craig (2011-12-21). "Unofficial Format Specification of the IDL "SAVE" File". Retrieved 2013-02-13.

External links