IDL (lenguaje de programación) - IDL (programming language)

IDL (lenguaje de datos interactivo)
Paradigma programación orientada a vectores
Diseñada por David Stern
Desarrollador David Stern & ITT Visual Information Solutions (ITT VIS)
Apareció por primera vez 1977
Lanzamiento estable
IDL 8.8 / agosto de 2020
Disciplina de mecanografía Dinámica
Sitio web www .harrisgeospatial .com / Software-Technology / IDL
Implementaciones importantes
IDL, lenguaje de datos GNU , lenguaje Fawlty

IDL , abreviatura de Interactive Data Language , es un lenguaje de programación utilizado para el análisis de datos . Es popular en áreas específicas de la ciencia, como la astronomía , la física atmosférica y las imágenes médicas . IDL comparte una sintaxis común con PV-Wave y se originó en la misma base de código , aunque los lenguajes han divergido posteriormente en detalle. También hay implementaciones gratuitas o sin costo , como GNU Data Language (GDL) y Fawlty Language (FL).

Visión general

IDL es vectorizado , numérico e interactivo, y se usa comúnmente para el procesamiento interactivo de grandes cantidades de datos (incluido el procesamiento de imágenes ). La sintaxis incluye muchas construcciones de Fortran y algunos de C .

IDL se originó a partir de los primeros VAX / VMS / Fortran, y su sintaxis aún muestra su herencia:

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

La función findgen en el ejemplo anterior devuelve una matriz unidimensional de números de punto flotante, con valores iguales a una serie de números enteros que comienzan en 0.

Tenga en cuenta que la operación en la segunda línea se aplica de manera vectorizada a toda la matriz de 100 elementos creada en la primera línea, de forma análoga a la forma en que lo harían los lenguajes de programación de matrices de propósito general (como APL , J o K ). Este ejemplo contiene una división por cero; IDL informará un desbordamiento aritmético y almacenará un valor NaN en el elemento correspondiente de la matriz y (el primero), pero los otros elementos de la matriz serán finitos. El NaN se excluye de la visualización generada por el comando plot .

Al igual que con la mayoría de los otros lenguajes de programación de matrices, IDL es muy rápido para realizar operaciones vectoriales (a veces tan rápido como un bucle personalizado bien codificado en Fortran o C) pero bastante lento si los elementos necesitan procesarse individualmente. Por lo tanto, parte del arte de usar IDL (o cualquier otro lenguaje de programación de matrices, para el caso) para cálculos numéricamente pesados ​​es hacer uso de las operaciones vectoriales integradas.

Historia

Las versiones predecesoras de IDL se desarrollaron en la década de 1970 en el Laboratorio de Física Atmosférica y Espacial (LASP) de la Universidad de Colorado en Boulder . En LASP, David Stern participó en los esfuerzos para permitir a los científicos probar hipótesis sin emplear programadores para escribir o modificar aplicaciones individuales. El primer programa en la cadena evolutiva de IDL que desarrolló Stern se llamó Rufus; era una simple calculadora orientada a vectores que se ejecutaba en el PDP-12 . Aceptaba códigos de dos letras que especificaban una operación aritmética, los registros de entrada para que sirvieran como operandos y el registro de destino. Una versión de Rufus desarrollada en el PDP-8 fue Mars Mariner Spectrum Editor (MMED). Los científicos de LASP utilizaron MMED para interpretar datos de Mariner 7 y Mariner 9 . Más tarde, Stern escribió un programa llamado SOL, que también se ejecutó en el PDP-8. A diferencia de sus predecesores, era un verdadero lenguaje de programación con una sintaxis similar a FORTRAN. SOL era un lenguaje orientado a matrices con algunas capacidades gráficas primitivas.

Stern dejó LASP para fundar Research Systems Inc. (RSI) en 1977. El primer producto RSI fue IDL para el PDP-11. En esta versión, los gráficos admitidos por IDL eran principalmente terminales Tektronix y pantallas de gráficos de trama. RSI vendió sus primeras licencias IDL al Goddard Space Flight Center y Ball Aerospace & Technologies Corp. de la NASA en 1979. Dos años más tarde RSI lanzó una versión inicial VAX / VMS de IDL, que fue escrita en VAX-11 MACRO y FORTRAN. Aprovechó la memoria virtual VAX y el espacio de direcciones de 32 bits. El Centro Nacional de Investigación Atmosférica (NCAR), la Universidad de Michigan , la Universidad de Colorado y el Laboratorio de Investigación Naval comenzaron a utilizar IDL con esta versión.

En 1987 RSI cambió el trabajo de desarrollo de IDL al entorno Unix , que requirió una reescritura completa del código en C en lugar de un puerto de la versión existente de VAX IDL. Stern y Ali Bahrami reescribieron IDL para Unix en Sun 3, aprovechando la reescritura para ampliar y mejorar el lenguaje. Posteriormente, IDL se expandió aún más y se trasladó a varias variantes de Unix, VMS, Linux, Microsoft Windows (1992) y Mac OS (1994).

Los widgets se agregaron a IDL en 1992, proporcionando programación basada en eventos con interfaces gráficas de usuario . En 1997 se lanzó comercialmente ION (IDL On the Net), un sistema basado en servidor web. La primera versión de ENVI , una aplicación para análisis de imágenes de teledetección multiespectral e hiperespectral escrita en IDL, fue lanzada en 1994. ENVI fue creada, desarrollada y propiedad de Better Solutions Consulting, LLC, hasta que fue comprada a BSC en octubre de 2000 por Eastman Kodak coincidió con la compra de RSI. RSI vendió, comercializó y dio soporte a ENVI bajo los términos de un acuerdo de licencia con BSC, LLC desde 1994 hasta octubre de 2000. En 1997, se agregaron a IDL nuevos tipos de objetos y punteros, y capacidades limitadas de programación orientada a objetos .

IDL se ha aplicado ampliamente en la ciencia espacial, por ejemplo, en la física solar . La Agencia Espacial Europea utilizó IDL para procesar casi todas las imágenes del cometa Halley tomadas por la nave espacial Giotto . El equipo que reparaba el telescopio espacial Hubble utilizó IDL para ayudarlos a diagnosticar anomalías en el espejo principal. En 1995, los astronautas a bordo de un transbordador espacial utilizaron IDL cargado en una computadora portátil para estudiar la radiación ultravioleta. Actualmente, entre otras aplicaciones, IDL se utiliza para la mayor parte del análisis de la parte SECCHI de la misión STEREO en NRL , EE. UU., Y en el laboratorio Rutherford Appleton, Reino Unido.

RSI se convirtió en una subsidiaria de propiedad total de ITT Industries en marzo de 2004. A partir del 15 de mayo de 2006, RSI comenzó a operar como ITT Visual Information Solutions . A partir del 31 de octubre de 2011, como resultado de la reestructuración, esa empresa se convirtió en Exelis Visual Information Solutions . A partir de 2015, IDL ahora pertenece y es mantenida por Harris Geospatial Solutions .

Características

Como lenguaje informático, IDL:

  • se escribe dinámicamente .
  • tiene espacios de nombres separados para variables, funciones y procedimientos, pero no tiene jerarquía de espacios de nombres.
  • originalmente era de un solo subproceso, pero ahora tiene muchas funciones y procedimientos de varios subprocesos.
  • tiene todos los argumentos de la función pasados ​​por referencia ; pero vea "problemas", a continuación.
  • ha nombrado parámetros llamados palabras clave que se pasan por referencia.
  • proporciona herencia de parámetros con nombre en llamadas de rutina anidadas, por referencia o valor.
  • no requiere que las variables sean declaradas previamente.
  • proporciona declaraciones de bloques COMUNES y variables del sistema para compartir valores globales entre rutinas.
  • proporciona una forma básica de programación orientada a objetos, algo similar a Smalltalk , junto con la sobrecarga de operadores .
  • implementa un montón global y persistente de punteros y variables de objeto, utilizando el recuento de referencias para la recolección de basura.
  • se compila en un código p intermedio interpretado y basado en pila (al estilo de la máquina virtual Java ).
  • proporciona una sintaxis de segmento de índice simple y eficiente para extraer datos de matrices grandes.
  • proporciona varios tamaños de enteros, así como números reales y complejos de coma flotante de precisión simple y doble.
  • proporciona tipos de datos compuestos como cadenas de caracteres, matrices de tipo homogéneo, listas, tablas hash y estructuras de registro simples (no jerárquicas) de tipos de datos mixtos.

Problemas

Algunas de estas características, que hacen que IDL sea muy simple de usar de forma interactiva, también causan dificultades al crear programas grandes. El espacio de nombres único es particularmente problemático; por ejemplo, las actualizaciones de idiomas que incluyen nuevas funciones integradas han invalidado en ocasiones grandes bibliotecas científicas.

Las matrices se pasan por referencia, y este mecanismo es una característica anunciada del lenguaje para devolver datos de una subrutina; por el contrario, las secciones de matriz se copian antes de pasar, de modo que las modificaciones de datos no fluyan de regreso a los rangos de matriz (después de la salidas de subrutina), violando el principio de mínima sorpresa .

Muchas irregularidades históricas sobreviven desde la herencia temprana del lenguaje, lo que requiere soluciones individuales por parte del programador. Como ejemplo:

  • La indexación de matrices y la entrada de subrutinas se pueden realizar con exactamente la misma sintaxis (paréntesis); esta ambigüedad, junto con el espacio de nombres único para todas las variables y subrutinas, puede hacer que el código deje de funcionar cuando las subrutinas recién definidas o las extensiones de idioma entran en conflicto con los nombres de las variables locales. Los programadores de IDL pueden evitar muchos de estos problemas utilizando corchetes para la indexación de matrices, evitando así conflictos con los nombres de funciones que utilizan paréntesis.

El problema anterior se puede solucionar con esta opción del compilador:

COMPILE_OPT STRICTARR
  • ITT Visual Information Solutions (ITT VIS) , los desarrolladores de IDL, han tomado medidas explícitas para evitar la compatibilidad de códigos de bytes con otros entornos. Los archivos que contienen rutinas compiladas utilizan un formato binario de estructura de datos etiquetados que no se ha publicado oficialmente, pero que los usuarios lo han investigado y documentado, pero que también contiene el siguiente aviso como texto ASCII incrustado en cada archivo guardado: "Los archivos IDL Guardar / Restaurar incorporan archivos no publicados información patentada sobre el programa IDL. Por lo tanto, la ingeniería inversa de este archivo está prohibida según los términos del Acuerdo de licencia de usuario final de IDL (IDL EULA). Todos los usuarios de IDL deben leer y aceptar los términos del IDL EULA en el momento en que instalan IDL. El software que lee o escribe archivos en el formato IDL Save / Restore debe tener una licencia de ITT Visual Information Solutions que otorgue explícitamente el derecho a hacerlo. En este caso, la licencia se incluirá con el software para su inspección. Informe sobre el software que no tenga dicha licencia a ITT Visual Information Solutions ... "A partir de febrero de 2010, la declaración no ha sido probada en un tribunal de justicia.

Además, esa disposición del IDL EULA no tiene ningún efecto en Australia, como resultado de las secciones 47D y 47H de la Ley de derechos de autor de ese país.

Ejemplos de

Los siguientes gráficos fueron creados con IDL (código fuente incluido):

Ver también

  • Lista de software de análisis numérico
  • ENVI : un paquete de software de procesamiento de imágenes integrado en IDL
  • IRAF : un entorno gratuito de reducción de datos gráficos producido por NOAO
  • MATLAB : un entorno informático técnico que proporciona capacidades similares a IDL
  • NumPy : una extensión para Python que le brinda capacidades matemáticas de matriz similares a las de IDL
  • Lenguaje de datos de Perl (PDL): una extensión de Perl que le brinda capacidades matemáticas de matriz similares a las de IDL
  • Scilab : un lenguaje de programación de alto nivel orientado numéricamente diseñado para interfaces y computación científica
  • Solarsoft : biblioteca para análisis de datos solares y actividades de operación de naves espaciales escrita predominantemente en IDL
  • GDL - GNU Data Language, una implementación gratuita similar a IDL.
  • Fawlty Language : Fawlty Language es un compilador compatible con IDL8 (Interactive Data Language).

Referencias

enlaces externos