This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "IDL" programming language – news ·newspapers ·books ·scholar ·JSTOR(February 2010) (Learn how and when to remove this message) |
| IDL (Interactive Data Language) | |
|---|---|
| Paradigm | vector-oriented programming |
| Designed by | David Stern |
| Developer | David Stern &ITT Visual Information Solutions (ITT VIS) |
| First appeared | 1977 |
| Stable release | IDL 9.2 / July, 2025 |
| Typing discipline | Dynamic |
| Website | https://www.nv5geospatialsoftware.com/Products/IDL |
| Majorimplementations | |
| IDL,GNU Data Language, Fawlty Language | |
IDL, short forInteractive Data Language, is aprogramming language used fordata analysis. It is popular in particular areas of science, such asastronomy,atmospheric physics andmedical imaging.[citation needed] IDL shares a commonsyntax withPV-Wave and originated from the samecodebase, though the languages have subsequently diverged in detail. There are alsofree orcostless implementations, such asGNU Data Language (GDL) andFawlty Language (FL).
IDL isvectorized,numerical, and interactive, and is commonly used for interactive processing of large amounts of data (includingimage processing). The syntax includes many constructs fromFortran and some fromC.
IDL originated from earlyVMS Fortran, and its syntax still shows its heritage:
x=findgen(100)/10y=sin(x)/xplot,x,y
Thefindgen 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 asAPL,J orK) would do it. This example contains a division by zero; IDL will report anarithmetic overflow, and store aNaN value in the corresponding element of they array (the first one), but the other array elements will be finite. The NaN is excluded from the visualization generated by theplot 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.
This sectionpossibly containsoriginal research. Pleaseimprove it byverifying the claims made and addinginline citations. Statements consisting only of original research should be removed.(September 2015) (Learn how and when to remove this message) |
The predecessor versions of IDL were developed in the 1970s at theLaboratory for Atmospheric and Space Physics (LASP) at theUniversity of Colorado at Boulder. At LASP, David Stern was involved in efforts to allow scientists to test hypotheses without employing programmers to write or modify individual applications. The first program in the evolutionary chain to IDL that Stern developed was named Rufus; it was a simple vector-oriented calculator that ran on thePDP-12. It accepted two-letter codes that specified an arithmetic operation, the input registers to serve as operands, and the destination register. A version of Rufus developed on thePDP-8 was the Mars Mariner Spectrum Editor (MMED). MMED was used by LASP scientists to interpret data fromMariner 7 andMariner 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.[1] In this release, the graphics supported by IDL were primarily Tektronix terminals and raster graphics displays. RSI sold its first IDL licenses to NASA'sGoddard Space Flight Center andBall Aerospace & Technologies Corp. in 1979. Two years later RSI released an initial VAX/VMS version of IDL, which was written inVAX MACRO and FORTRAN. It took advantage of the VAX virtual memory and 32-bit address space.[1] TheNational Center for Atmospheric Research (NCAR), theUniversity of Michigan, theUniversity of Colorado, and theNaval Research Laboratory started to use IDL with this version.
In 1987 RSI shifted development work of IDL to theUnix 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, providingevent-driven programming withgraphical user interfaces. In 1997 ION (IDL On the Net), a web server-based system, was commercially released. The first version ofENVI, an application forremote sensingmultispectral andhyperspectral image analysis written in IDL, was released in 1994.ENVI was created, developed and owned by Better Solutions Consulting, LLC, until it was purchased from BSC in October 2000 by Eastman Kodak coincident with their purchase of RSI. RSI sold, marketed and supportedENVI under the terms of a license agreement with BSC, LLC from 1994 through October 2000. New object and pointer types, and limitedobject-oriented programming capabilities, were added to IDL in 1997.
IDL has been applied widely in space science, for example insolar physics. TheEuropean Space Agency used IDL to process almost all of the pictures ofHalley's Comet taken by theGiotto spacecraft. The team repairing theHubble Space Telescope used IDL to help them diagnose anomalies in the main mirror. In 1995, astronauts on board aSpace 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 theSTEREO mission atNRL, USA, and at the Rutherford Appleton Laboratory, UK.
RSI became a wholly owned subsidiary ofITT Industries in March 2004. As of 15 May 2006, RSI began doing business asITT Visual Information Solutions. Effective 31 October 2011, as a result of restructuring, that company becameExelis Visual Information Solutions. In 2015, IDL was purchased byHarris Geospatial Solutions which later becameL3Harris Geospatial Solutions. In April 2023, IDL was acquired byNV5 Geospatial.
As a computer language, IDL:
This sectionpossibly containsoriginal research. Pleaseimprove it byverifying the claims made and addinginline citations. Statements consisting only of original research should be removed.(August 2014) (Learn how and when to remove this message) |
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 theprinciple of least surprise.
Many historical irregularities survive from the early heritage of the language, requiring individual workarounds by the programmer. As an example:
The preceding issue can be alleviated using this compiler option:
COMPILE_OPT STRICTARR
ITT Visual Information Solutions (ITT VIS), the developers of IDL, have taken explicit steps to preventbytecode compatibility with other environments. Files containing compiled routines use a binary tagged-data-structure format that has not been officially published but has been investigated and documented by users[3] but also contain the following notice as ASCII text embedded within each saved file:
IDL Save/Restore files embody unpublished proprietary information 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 sections47D and47H of that country's Copyright Act.
The following graphics were created with IDL (source code included):