Interactive Data Language
   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. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
used for
data analysis Data analysis is a process of inspecting, cleansing, transforming, and modeling data with the goal of discovering useful information, informing conclusions, and supporting decision-making. Data analysis has multiple facets and approaches, enco ...
. It is popular in particular areas of science, such as
astronomy Astronomy () is a natural science that studies astronomical object, celestial objects and phenomena. It uses mathematics, physics, and chemistry in order to explain their origin and chronology of the Universe, evolution. Objects of interest ...
,
atmospheric physics Within the atmospheric sciences, atmospheric physics is the application of physics to the study of the atmosphere. Atmospheric physicists attempt to model Earth's atmosphere and the atmospheres of the other planets using fluid flow equations, chem ...
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 rev ...
. 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 ( constituency) ...
with
PV-Wave PV-WAVE (Precision Visuals - Workstation Analysis and Visualization Environment) is an array oriented fourth-generation programming language used by engineers, scientists, researchers, business analysts and software developers to build and deploy ...
and originated from the same
codebase In software development, a codebase (or code base) is a collection of source code used to build a particular software system, application, or software component. Typically, a codebase includes only human-written source code files; thus, a codeb ...
, though the languages have subsequently diverged in detail. There are also free or costless implementations, such as
GNU Data Language The GNU Data Language (GDL) is a free alternative to IDL (Interactive Data Language), achieving full compatibility with IDL 7 and partial compatibility with IDL 8.http://aramis.obspm.fr/~coulais/IDL_et_GDL/Adass2011/O11_ADASS2011_GDL_Coulais.pdf ...
(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 is a visual representation of something. It can be two-dimensional, three-dimensional, or somehow otherwise feed into the visual system to convey information. An image can be an artifact, such as a photograph or other two-dimensiona ...
). 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 Arithmetic () is an elementary part of mathematics that consists of the study of the properties of the traditional operations on numbers—addition, subtraction, multiplication, division, exponentiation, and extraction of roots. In the 19th ce ...
, and store a
NaN Nan or NAN may refer to: Places China * Nan County, Yiyang, Hunan, China * Nan Commandery, historical commandery in Hubei, China Thailand * Nan Province ** Nan, Thailand, the administrative capital of Nan Province * Nan River People Given name ...
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 The Laboratory for Atmospheric and Space Physics (LASP) is a research organization at the University of Colorado Boulder. LASP is a research institute with over one hundred research scientists ranging in fields from solar influences, to Earth' ...
(LASP) at the
University of Colorado at Boulder The University of Colorado Boulder (CU Boulder, CU, or Colorado) is a public research university in Boulder, Colorado. Founded in 1876, five months before Colorado became a state, it is the flagship university of the University of Colorado sys ...
. 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 The PDP-12 (Programmed Data Processor) was created by Digital Equipment Corporation (DEC) in 1969 and was marketed specifically for science and engineering.see Mini-Computer section and press see more, then press see more again It was the third i ...
. 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 The PDP-8 is a 12-bit computing, 12-bit minicomputer that was produced by Digital Equipment Corporation, Digital Equipment Corporation (DEC). It was the first commercially successful minicomputer, with over 50,000 units being sold over the model's ...
was the Mars Mariner Spectrum Editor (MMED). MMED was used by LASP scientists to interpret data from
Mariner 7 A sailor, seaman, mariner, or seafarer is a person who works aboard a watercraft as part of its crew, and may work in any one of a number of different fields that are related to the operation and maintenance of a ship. The profession of the s ...
and
Mariner 9 Mariner 9 (Mariner Mars '71 / Mariner-I) was a robotic spacecraft that contributed greatly to the exploration of Mars and was part of the NASA Mariner program. Mariner 9 was launched toward Mars on May 30, 1971 from LC-36B at Cape Canaveral Air ...
. 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 The Goddard Space Flight Center (GSFC) is a major NASA space research laboratory located approximately northeast of Washington, D.C. in Greenbelt, Maryland, United States. Established on May 1, 1959 as NASA's first space flight center, GSFC empl ...
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 VAX MACRO is the computer assembly language implementing the VAX instruction set architecture for the OpenVMS operating system, originally released by Digital Equipment Corporation (DEC) in 1977. The syntax, directives, macro language, and lexica ...
and FORTRAN. It took advantage of the VAX virtual memory and 32-bit address space. The
National Center for Atmospheric Research The US National Center for Atmospheric Research (NCAR ) is a US federally funded research and development center (FFRDC) managed by the nonprofit University Corporation for Atmospheric Research (UCAR) and funded by the National Science Foundatio ...
(NCAR), the
University of Michigan , mottoeng = "Arts, Knowledge, Truth" , former_names = Catholepistemiad, or University of Michigania (1817–1821) , budget = $10.3 billion (2021) , endowment = $17 billion (2021)As o ...
, the
University of Colorado The University of Colorado (CU) is a system of public universities in Colorado. It consists of four institutions: University of Colorado Boulder, University of Colorado Colorado Springs, University of Colorado Denver, and the University of Co ...
, and the
Naval Research Laboratory The United States Naval Research Laboratory (NRL) is the corporate research laboratory for the United States Navy and the United States Marine Corps. It was founded in 1923 and conducts basic scientific research, applied research, technological ...
started to use IDL with this version. In 1987 RSI shifted development work of IDL to the
Unix Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
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 flow of the program is determined by events such as user actions ( mouse clicks, key presses), sensor outputs, or message passing from other programs or t ...
with
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
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 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 information about Earth ...
multispectral Multispectral imaging captures image data within specific wavelength ranges across the electromagnetic spectrum. The wavelengths may be separated by filters or detected with the use of instruments that are sensitive to particular wavelengths, ...
and
hyperspectral Hyperspectral imaging collects and processes information from across the electromagnetic spectrum. The goal of hyperspectral imaging is to obtain the spectrum for each pixel in the image of a scene, with the purpose of finding objects, identifyi ...
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", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pr ...
capabilities, were added to IDL in 1997. IDL has been applied widely in space science, for example in
solar physics Solar physics is the branch of astrophysics that specializes in the study of the Sun. It deals with detailed measurements that are possible only for our closest star. It intersects with many disciplines of pure physics, astrophysics, and compu ...
. The
European Space Agency , owners = , headquarters = Paris, Île-de-France, France , coordinates = , spaceport = Guiana Space Centre , seal = File:ESA emblem seal.png , seal_size = 130px , image = Views in the Main Control Room (1205 ...
used IDL to process almost all of the pictures of
Halley's Comet Halley's Comet or Comet Halley, officially designated 1P/Halley, is a short-period comet visible from Earth every 75–79 years. Halley is the only known short-period comet that is regularly visible to the naked eye from Earth, and thus the o ...
taken by the
Giotto Giotto di Bondone (; – January 8, 1337), known mononymously as Giotto ( , ) and Latinised as Giottus, was an Italian painter and architect from Florence during the Late Middle Ages. He worked during the Gothic/Proto-Renaissance period. Giot ...
spacecraft. The team repairing the
Hubble Space Telescope The Hubble Space Telescope (often referred to as HST or Hubble) is a space telescope that was launched into low Earth orbit in 1990 and remains in operation. It was not the first space telescope, but it is one of the largest and most versa ...
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 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. Its official program na ...
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 Stereophonic sound, or more commonly stereo, is a method of sound reproduction that recreates a multi-directional, 3-dimensional audible perspective. This is usually achieved by using two independent audio channels through a configuration ...
mission at
NRL The National Rugby League (NRL) is an Australasian rugby league club competition which contains clubs from New South Wales, Queensland, Victoria, the Australian Capital Territory and New Zealand. The NRL formed in 1998 as a joint partnership ...
, USA, and at the Rutherford Appleton Laboratory, UK. RSI became a wholly owned subsidiary of
ITT Industries ITT Inc., formerly ITT Corporation, is an American worldwide manufacturing company based in Stamford, Connecticut. The company produces specialty components for the aerospace, transportation, energy and industrial markets. ITT's three businesse ...
in March 2004. As of 15 May 2006, RSI began doing business as
ITT Visual Information Solutions L3Harris Geospatial develops products for the visualization, analysis, and management of geospatial imagery and scientific data. The company develops products such as IDL (programming language), IDL, ENVI, and Jagwire which are used in a variety ...
. Effective 31 October 2011, as a result of restructuring, that company became
Exelis Visual Information Solutions L3Harris Geospatial develops products for the visualization, analysis, and management of geospatial imagery and scientific data. The company develops products such as IDL, ENVI, and Jagwire which are used in a variety of industries including def ...
. , IDL is now owned and maintained by Harris Geospatial Solutions.


Features

As a computer language, IDL: * is
dynamically typed In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a type to every "term" (a word, phrase, or other set of symbols). Usually the terms are various constructs of a computer progra ...
. * has separate
namespaces In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified. 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 parameter In computer programming, named parameters, named argument or keyword arguments refer to a computer language's support for function calls that clearly state the name of each parameter within the function call. Overview A function call using na ...
s 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 an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by Alan Ka ...
, along with
operator overloading In computer programming, operator overloading, sometimes termed ''operator ad hoc polymorphism'', is a specific case of polymorphism, where different operators have different implementations depending on their arguments. Operator overloading is ...
. * 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 type In computer science, a composite data type or compound data type is any data type which can be constructed in a program using the programming language's primitive data types and other composite types. It is sometimes called a structure or aggreg ...
s such as character strings, homogeneous-type arrays, lists,
hash table In computing, a hash table, also known as hash map, is a data structure that implements an associative array or dictionary. It is an abstract data type that maps keys to values. A hash table uses a hash function to compute an ''index'', als ...
s, 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 (norma ...
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 ITT Visual Information Solutions 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 ITT Visual Information Solutions..." , 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 Listed here are notable end-user computer applications intended for use with numerical or data analysis: Numerical-software packages General-purpose computer algebra systems Interface-oriented Language-oriented Historically signific ...
* ENVI – an image processing software package built in IDL * IRAF – a free, graphical data reduction environment produced by NOAO *
MATLAB MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementation ...
– a technical computing environment providing similar capabilities to IDL * NumPy – an extension for
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
that gives it array math capabilities similar to those of IDL *
Perl Data Language Perl Data Language (abbreviated PDL) is a set of free software array programming extensions to the Perl programming language. PDL extends the data structures built into Perl, to include large multidimensional arrays, and adds functionality to m ...
(PDL) – An extension to
Perl Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offici ...
that gives it array math capabilities similar to those of IDL *
Scilab Scilab is a free and open-source, cross-platform numerical computational package and a high-level, numerically oriented programming language. It can be used for signal processing, statistical analysis, image enhancement, fluid dynamics simulat ...
- a high-level, numerically oriented programming language designed for Scientific computing and interfaces *
Solarsoft Solarsoft is a collaborative software development system created at Lockheed-Martin to support solar data analysis and spacecraft operation activities. It is widely recognized in the solar physics community as having revolutionized solar data anal ...
– 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 GoddardFawlty Language home page
{{Image processing software Array programming languages Earth sciences graphics software Numerical programming languages Plotting software Programming languages created in 1977