|
IDL, short for interactive data language, is a programming language which is a popular data analysis language among scientists. IDL is often confused, at the acronym level, with another (unrelated) "IDL": the Interface description language. Computer code (HTML with JavaScript) in a tool that uses colors to help the developer see the function of each piece of code. ...
An interface description language, (alternatively interface definition language) (IDL), is a computer language or simple syntax for describing the interface of a software component. ...
Overview
IDL is vectorized, numerical, interactive, and is commonly used for interactive processing of large amounts of data (including image processing), right from the keyboard. The syntax includes many constructs from Fortran and some from C. Array programming languages (also known as vector or multidimensional languages) generalize operations on scalars to apply transparently to vectors, matrices, and higher dimensional arrays. ...
This article needs to be cleaned up to conform to a higher standard of quality. ...
Fortran (also FORTRAN) is a computer programming language originally developed in the 1950s; it is still used for scientific computing and numerical computation half a century later. ...
The C Programming Language, Brian Kernighan and Dennis Ritchie, the original edition that served for many years as an informal specification of the language The C programming language is a standardized imperative computer programming language developed in the early 1970s by Dennis Ritchie for use on the Unix operating system. ...
IDL originated from early VAX/VMS/Fortran, and its syntax still shows its heritage: OpenVMS V7. ...
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 APL or J) would do it. This example contains a divide by zero; IDL will report an 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 visualisation generated by the plot command. APL (for A Programming Language, or sometimes Array Processing Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ...
The J programming language, developed in the early 90s by Ken Iverson and Roger Hui, is a synthesis of APL (also by Iverson) and the FP and FL functional programming languages created by John Backus (of FORTRAN, ALGOL, and BNF fame). ...
The term arithmetic overflow or simply overflow has the following meanings. ...
In computing, NaN (Not a Number) is a value or symbol that is usually produced as the result of an operation on invalid input operands, especially in floating-point calculations. ...
As most other array programming languages, IDL is very fast 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 inbuilt vector operations. Fortran (also FORTRAN) is a computer programming language originally developed in the 1950s; it is still used for scientific computing and numerical computation half a century later. ...
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 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, 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 with some primitive graphics capabilities. The Laboratory for Atmospheric and Space Physics (LASP) is a research organization at the University of Colorado at Boulder. ...
It has been suggested that multiple sections of Boulder, Colorado be merged into this article or section. ...
PDP is also used as an acronym for Plasma Display Panel. ...
A PDP-8 on display at the Smithsonians National Museum of American History in Washington, D.C.. This example is from the first generation of PDP-8s, built with discrete transistors and later known as the Straight 8. ...
As part of the wider Mariner program, in 1969 Mariner 6 and Mariner 7 completed the first dual mission to Mars, flying by over the equator and south polar regions and analysing atmosphere and surface with remote sensors as well as recording and relaying hundreds of pictures. ...
Mariner 9 launch Mariner 9 was a NASA space probe orbiter that helped in the exploration of Mars and was part of the Mariner program. ...
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 in 1979. Two years later RSI released an initial VAX/VMS version of IDL, which was written in VAX-11 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 Colorado, and the Naval Research Laboratory started to use IDL with this version. Aerial view of Goddard Space Flight Center. ...
Ball Aerospace & Technologies Corp. ...
The National Center for Atmospheric Research (NCAR), in Boulder, Colorado, was established in 1960 to serve as a focus for United States research on atmospheric and related science problems, including climate change, atmospheric chemistry, changes in atmospheric composition, mesoscale and microscale meteorology, Earth-Sun interactions, weather formation and forecasting, and...
The University of Michigan, Ann Arbor (UM or U of M) is a coeducational public research university in the U.S. state of Michigan. ...
The University of Colorado (CU) System consists of five campuses: University of Colorado at Boulder University of Colorado at Colorado Springs University of Colorado at Denver University of Colorado Health Sciences Center Fitzsimons campus of the University of Colorado Health Sciences Center, scheduled to open in 2007 in Aurora, Colorado...
-1...
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 MacOS (1994). Wikibooks has more about this subject: Guide to UNIX Unix or UNIX is a computer operating system originally developed in the 1960s and 1970s by a group of AT&T Bell Labs employees including Ken Thompson, Dennis Ritchie, and Douglas McIlroy. ...
Widgets were added to IDL in 1992, providing event-driven programming with graphical user interfaces. 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 multispectral and hyperspectral image analysis written in IDL, was released in 1994. New object and pointer types, and limited Object-Oriented Programming capabilities were added to IDL in 1997. To meet Wikipedias quality standards, this article or section may require cleanup. ...
Is the ability of a remote sensing device to detect electromagnetic energy in at least two or more individual wavelength intervals ...
The term hyperspectral is found in military and remote sensing jargon and denotes, a sensor system observing a target in very different spectral bands, by different types of sensors, e. ...
In computer science, object-oriented programming, OOP for short, is a computer programming paradigm. ...
IDL has been applied widely in space science. 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 lens. In 1995 astronauts on board a space shuttle used IDL loaded on a laptop to study ultraviolet radiation. The European Space Agency (ESA), established in 1975,is an inter-governmental organisation dedicated to exploration of space with currently 17 member states. ...
Comet Halley as taken with the Halley Multicolor Camera on the ESA Giotto mission. ...
There are several things that have been named Giotto: Giotto di Bondone an Italian painter. ...
The Hubble Space Telescope (HST) is a telescope in orbit around the Earth. ...
Features As a computer language, IDL: - is dynamically typed.
- has a single namespace.
- was originally single threaded but now has many multi-threaded functions and procedures.
- has all function arguments passed by reference ("IN-OUT")
- 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 only COMMON block declarations to share global values among routines.
- provides a basic form of object-oriented programming, somewhat similar to Smalltalk.
- implements a persistent, global heap of pointer and object variables.
- compiles to an interpreted, stack-based intermediate p-code (à la Java VM).
- 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, and simple (non-hierarchical) record structures of mixed data types.
One major distinction made in the nature and behaviour of programming languages is that of its typing. ...
In general, a namespace is an abstract container, which is or could be filled by names, or technical terms, or words, and these represent (stand for) real-world things. ...
In computer programming, naming of parameters (or named parameters) means that the method signature clearly states the name (meaning) of each parameter. ...
Smalltalk is a dynamically typed object oriented programming language designed at Xerox PARC by Alan Kay, Dan Ingalls, Ted Kaehler, Adele Goldberg, and others during the 1970s. ...
A Java virtual machine or JVM is a virtual machine that runs Java byte code. ...
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 in those cases, although object oriented methods can alleviate some of this difficulty. IDL also lacks empty arrays, variable-sized dynamic arrays (lists), and nested arrays (that is, arrays of arrays are not permitted). The object-oriented features of the language require that the programmer be responsible for managing memory allocation/deallocation. This article needs to be cleaned up to conform to a higher standard of quality. ...
In computer programming, an array, also known as a vector or list, is one of the simplest data structures. ...
The syntax lacks a foreach statement for looping over array elements, requiring instead the following more verbose syntax: For each (or foreach) is a computer language idiom for traversing items in a collection. ...
num = n_elements(myarray) for index = 0, num-1 do begin myvalue = myarray[index] ...other code... endfor Many historical irregularities survive from the early heritage of the language, requiring individual work-arounds by the programmer. Dynamic typing does not include automatic promotion-on-overflow; one consequence is that (for loops) built in the usual way may fail on the 32,768th iteration, unless the iteration variable is explicitly initialized with a longer integer type. Another solution is to define the default type for all integers to 32-bit unsigned (this can be done at startup, or embedded in source code), or by specifying the lower loop bound as a "long" (32-bit) number (e.g. do i=0L,40000). 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. This behavior can also be required using compiler directives. In most imperative computer programming languages, a for loop is a control structure which allows code to be executed iteratively. ...
Examples The following graphics were created with IDL (source code included): Image of random data plus trend, with best-fit line and different smoothings The data is 1000 points, with a trend of 1-in-100, with random normal noise of SD 10 superimposed. ...
Image File history File links Plots of delta-o-18 against age and depth (from EPICA and Vostok) Note that the Vostok core is deeper, but does not extend so far back in time. ...
See also GDL - GNU Data Language is a GNU free software package. ...
IRAF stands for the Image Reduction and Analysis Facility. ...
The National Optical Astronomy Observatory (NOAO) consists of four observatories under one management structure: Kitt Peak National Observatory Cerro Tololo Inter-American Observatory Gemini Observatory National Solar Observatory It is run by the Association of Universities for Research in Astronomy (AURA), with a cooperative agreement with the National Science Foundation...
Numerical Python (often abbreviated NumPy although technically NumPy refers uniquely to the latest edition of Numerical Python) is an extension to the Python programming language, adding support for large, multi-dimensional arrays and matrices, along with a large library of high-level mathematical functions to operate on these arrays. ...
Python is an interpreted programming language created by Guido van Rossum in 1990. ...
PDL (short for Perl Data Language) is a set of Array programming extensions to the Perl programming language. ...
Perl, also Practical Extraction and Report Language (a backronym, see below) is an interpreted procedural programming language designed by Larry Wall. ...
External link |