HOME

TheInfoList



OR:

IDL, short for Interactive Data Language, is a
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
used for
data analysis Data analysis is the process of inspecting, Data cleansing, cleansing, Data transformation, transforming, and Data modeling, modeling data with the goal of discovering useful information, informing conclusions, and supporting decision-making. Da ...
. It is popular in particular areas of science, such as
astronomy Astronomy is a natural science that studies celestial objects and the phenomena that occur in the cosmos. It uses mathematics, physics, and chemistry in order to explain their origin and their overall evolution. Objects of interest includ ...
, atmospheric physics and
medical imaging Medical imaging is the technique and process of imaging the interior of a body for clinical analysis and medical intervention, as well as visual representation of the function of some organs or tissues (physiology). Medical imaging seeks to revea ...
. IDL shares a common
syntax In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
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) an
Fawlty Language
(FL).


Overview

IDL is vectorized, numerical, and interactive, and is commonly used for interactive processing of large amounts of data (including
image processing An image or picture is a visual representation. An image can be two-dimensional, such as a drawing, painting, or photograph, or three-dimensional, such as a carving or sculpture. Images may be displayed through other media, including a pr ...
). 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 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 APL, J or K) would do it. This example contains a division by zero; IDL will report an arithmetic overflow, and store a NaN value in the corresponding element of the array (the first one), but the other array elements will be finite. The NaN is excluded from the visualization generated by the 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 Laboratory for Atmospheric and Space Physics (LASP) at the University 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 the PDP-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 the PDP-8 was the Mars Mariner Spectrum Editor (MMED). MMED was used by LASP scientists to interpret data from 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. Stern left LASP to found Research Systems Inc. (RSI) in 1977. The first RSI product was IDL for the PDP-11. In this release, the graphics supported by IDL were primarily Tektronix terminals and raster graphics displays. RSI sold its first IDL licenses to NASA's Goddard Space Flight Center and Ball Aerospace & Technologies Corp. in 1979. Two years later RSI released an initial VAX/VMS version of IDL, which was written in VAX MACRO and FORTRAN. It took advantage of the VAX virtual memory and 32-bit address space. The National Center for Atmospheric Research (NCAR), the
University of Michigan The University of Michigan (U-M, U of M, or Michigan) is a public university, public research university in Ann Arbor, Michigan, United States. Founded in 1817, it is the oldest institution of higher education in the state. The University of Mi ...
, the University of Colorado, and the 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. 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
event-driven programming In computer programming, event-driven programming is a programming paradigm in which the Control flow, flow of the program is determined by external Event (computing), events. User interface, UI events from computer mouse, mice, computer keyboard, ...
with
graphical user interface A graphical user interface, or GUI, is a form of user interface that allows user (computing), users to human–computer interaction, interact with electronic devices through Graphics, graphical icon (computing), icons and visual indicators such ...
s. In 1997 ION (IDL On the Net), a web server-based system, was commercially released. The first version of ENVI, an application for
remote sensing Remote sensing is the acquisition of information about an physical object, object or phenomenon without making physical contact with the object, in contrast to in situ or on-site observation. The term is applied especially to acquiring inform ...
multispectral and hyperspectral 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 supported 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 Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
capabilities, were added to IDL in 1997. IDL has been applied widely in space science, for example in solar physics. The
European Space Agency The European Space Agency (ESA) is a 23-member International organization, international organization devoted to space exploration. With its headquarters in Paris and a staff of around 2,547 people globally as of 2023, ESA was founded in 1975 ...
used IDL to process almost all of the pictures of
Halley's Comet Halley's Comet is the only known List of periodic comets, short-period comet that is consistently visible to the naked eye from Earth, appearing every 72–80 years, though with the majority of recorded apparitions (25 of 30) occurring after ...
taken by the Giotto spacecraft. The team repairing the
Hubble Space Telescope The Hubble Space Telescope (HST or Hubble) is a space telescope that was launched into low Earth orbit in 1990 and remains in operation. It was not the Orbiting Solar Observatory, first space telescope, but it is one of the largest and most ...
used IDL to help them diagnose anomalies in the main mirror. In 1995, astronauts on board a
Space Shuttle The Space Shuttle is a retired, partially reusable launch system, reusable low Earth orbital spacecraft system operated from 1981 to 2011 by the U.S. National Aeronautics and Space Administration (NASA) as part of the Space Shuttle program. ...
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 ITT Industries in March 2004. As of 15 May 2006, RSI began doing business as ITT Visual Information Solutions. Effective 31 October 2011, as a result of restructuring, that company became Exelis Visual Information Solutions. In 2015, IDL was purchased by Harris Geospatial Solutions which later became L3Harris Geospatial Solutions. In April 2023, IDL was acquired b
NV5 Geospatial


Features

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 Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
, 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 A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descr ...
). * 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.


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. 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 ITT Visual Information Solutions (ITT VIS), the developers of IDL, have taken explicit steps to prevent
bytecode Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (normal ...
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 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.
, 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 section
47D
an

of that country's Copyright Act.


Examples

The following graphics were created with IDL (source code included): * Image of random data plus trend, with best-fit line and different smoothings * Plots of delta-o-18 against age and depth (from EPICA and Vostok)
coyote IDL gallery
examples of IDL imaging


See also

* List of numerical-analysis software * ENVI – an image processing software package built in IDL *
IRAF IRAF (Image Reduction and Analysis Facility) is a collection of software written at the National Optical Astronomy Observatory (NOAO) geared towards the reduction of astronomical images and spectra in pixel array form. This is primarily data tak ...
– 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 Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language". Perl was developed ...
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


External links


IDL home pageCoyote's Guide to IDL ProgrammingThe IDL Astronomy User's Library at NASA Goddard

Fawlty Language home page
{{Image processing software Array programming languages Earth sciences graphics software Numerical programming languages Plotting software Programming languages created in 1977