Articulo de referencia

IDL (lenguaje de programación)

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 astr...

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 . [ cita requerida ] IDL comparte una sintaxis común con PV-Wave y se originó a partir de la misma base de código , aunque los lenguajes han divergido posteriormente en detalles. También existen implementaciones gratuitas o sin costo , como GNU Data Language (GDL) y Fawlty Language (FL).

Descripción general

IDL es un lenguaje vectorizado , numérico e interactivo que se utiliza habitualmente para el procesamiento interactivo de grandes cantidades de datos (incluido el procesamiento de imágenes ) . La sintaxis incluye muchas construcciones de Fortran y algunas de C.

IDL se originó a partir del primer VMS Fortran, y su sintaxis aún muestra su herencia:

 x = findgen ( 100 ) / 10 y = sin (x) / x
 trazar ,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 manera 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 la mayoría de los demás 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, en realidad) para cálculos numéricamente pesados ​​es hacer uso de las operaciones vectoriales integradas.

Historia

Las versiones anteriores 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 el 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 hacia IDL que desarrolló Stern se llamó Rufus; era una calculadora simple 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 que servían como operandos y el registro de destino. Una versión de Rufus desarrollada en el PDP-8 fue el Editor de Espectros Mars Mariner (MMED). MMED fue utilizado por los científicos del LASP para interpretar datos del Mariner 7 y el Mariner 9. Más tarde, Stern escribió un programa llamado SOL, que también se ejecutaba 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. [1]

Stern dejó LASP para fundar Research Systems Inc. (RSI) en 1977. El primer producto de RSI fue IDL para el PDP-11. [1] En esta versión, los gráficos compatibles con IDL eran principalmente terminales Tektronix y pantallas de gráficos rasterizados. RSI vendió sus primeras licencias IDL al Goddard Space Flight Center de la NASA y a Ball Aerospace & Technologies Corp. en 1979. Dos años después, RSI lanzó una versión VAX/VMS inicial de IDL, que estaba escrita en VAX MACRO y FORTRAN. Aprovechaba la memoria virtual VAX y el espacio de direcciones de 32 bits. [1] 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 trasladó el trabajo de desarrollo de IDL al entorno Unix , lo que requirió una reescritura completa del código en C en lugar de una adaptación de la versión existente de VAX IDL. [1] Stern y Ali Bahrami reescribieron IDL para Unix en Sun 3, aprovechando la reescritura para extender y mejorar el lenguaje. Posteriormente, IDL se expandió aún más y se adaptó a varias variantes de Unix, VMS, Linux, Microsoft Windows (1992) y Mac OS (1994).

En 1992 se añadieron widgets a IDL, lo que proporcionaba una 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. En 1994 se lanzó la primera versión de ENVI , una aplicación para el análisis de imágenes multiespectrales e hiperespectrales de teledetección escrita en IDL. ENVI fue creado, desarrollado y propiedad de Better Solutions Consulting, LLC, hasta que Eastman Kodak lo compró a BSC en octubre de 2000, coincidiendo con la compra de RSI. RSI vendió, comercializó y brindó soporte a ENVI según los términos de un acuerdo de licencia con BSC, LLC desde 1994 hasta octubre de 2000. En 1997 se añadieron a IDL nuevos tipos de objetos y punteros, y capacidades limitadas de programación orientada a objetos .

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

RSI se convirtió en una subsidiaria de propiedad absoluta 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 . En 2015, IDL fue adquirida por Harris Geospatial Solutions , que luego se convirtió en L3Harris Geospatial Solutions. En abril de 2023, IDL fue adquirida por NV5 Geospatial.

Características

Como lenguaje informático, IDL:

  • es de tipo dinámico .
  • 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 múltiples subprocesos.
  • tiene todos los argumentos de función pasados ​​por referencia ; pero vea "problemas" a continuación.
  • tiene parámetros nombrados 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 estén predeclaradas.
  • Proporciona declaraciones de bloques COMUNES y variables de sistema para compartir valores globales entre rutinas.
  • Proporciona una forma básica de programación orientada a objetos, algo similar a Smalltalk , junto con sobrecarga de operadores .
  • Implementa un montón global y persistente de variables de puntero y objeto, utilizando el conteo 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 números enteros, así como números reales y complejos de punto 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 registros simples (no jerárquicas) de tipos de datos mixtos.

Problemas

Algunas de estas características, que hacen que IDL sea muy fácil de usar de forma interactiva, también causan dificultades a la hora de crear programas de gran tamaño. El espacio de nombres único es especialmente problemático; por ejemplo, las actualizaciones del lenguaje que incluyen nuevas funciones integradas han invalidado en ocasiones grandes bibliotecas científicas. [2]

Las matrices se pasan por referencia, y este mecanismo es una característica publicitada del lenguaje para pasar datos de vuelta desde una subrutina; en contraste, las porciones de la matriz se copian antes de pasarse, de modo que las modificaciones de los datos no vuelvan a fluir hacia los rangos de la matriz (después de que la subrutina sale), violando el principio de mínima sorpresa .

Sobreviven muchas irregularidades históricas de la herencia temprana del lenguaje, que requieren soluciones individuales por parte del programador. A continuación, se muestran algunos ejemplos:

  • Tanto la indexación de matrices como 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 provocar que el código deje de funcionar cuando las subrutinas o extensiones del lenguaje recién definidas entren en conflicto con los nombres de las variables locales. Los programadores 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 utilizando 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 del código de bytes con otros entornos. Los archivos que contienen rutinas compiladas utilizan un formato de estructura de datos etiquetados binarios que no se ha publicado oficialmente, pero que los usuarios han investigado y documentado [3], pero que también contiene el siguiente aviso como texto ASCII incrustado en cada archivo guardado:

Los archivos de IDL Save/Restore contienen información de propiedad no publicada 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 de instalar IDL. El software que lee o escribe archivos en el formato IDL Save/Restore debe tener una licencia de NV5 Geospatial Solutions, Inc. que otorgue explícitamente el derecho a hacerlo. En este caso, la licencia se incluirá con el software para su inspección. Informe a su gerente de cuenta o representante de ventas sobre el software que no tenga dicha licencia.

A fecha de agosto de 2023 [update], la declaración no ha sido puesta a prueba en un tribunal de justicia. Además, esa disposición del EULA de IDL no tiene efecto en Australia, como resultado de las secciones 47D y 47H de la Ley de Derechos de Autor de ese país.

Ejemplos

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

  • Imagen de datos aleatorios más tendencia, con línea de mejor ajuste y diferentes suavizados
  • Gráficos de delta-o-18 en función de la edad y la profundidad (de EPICA y Vostok)
  • Galería de coyotes IDL Ejemplos de imágenes IDL

Véase también

  • Lista de software de análisis numérico
  • ENVI : un paquete de software de procesamiento de imágenes creado en IDL
  • IRAF : un entorno gráfico de reducción de datos gratuito producido por NOAO
  • MATLAB : un entorno informático técnico que ofrece capacidades similares a IDL
  • NumPy : una extensión para Python que le otorga capacidades matemáticas de matriz similares a las de IDL
  • Lenguaje de datos Perl (PDL): una extensión de Perl que le otorga 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 computación científica e interfaces.
  • Solarsoft : biblioteca para análisis de datos solares y actividades de operación de naves espaciales escrita predominantemente en IDL
  • GDL – Lenguaje de datos GNU, una implementación libre similar a IDL.
  • Fawlty Language – Fawlty Language es un compilador compatible con IDL8 (lenguaje de datos interactivo).

Referencias

  1. ^ abcd Schienle, Mike (19 de enero de 1991). «IDL FAQ» . Consultado el 8 de febrero de 2019 .
  2. ^ Fanning, David. "Conflictos de nombres de programas en IDL 8". Archivado desde el original el 6 de marzo de 2014. Consultado el 30 de septiembre de 2014 .
  3. ^ Markwardt, Craig (21 de diciembre de 2011). "Especificación de formato no oficial del archivo IDL "SAVE"" . Consultado el 13 de febrero de 2013 .
  • Página de inicio de IDL
  • Guía de programación IDL de Coyote
  • La biblioteca de usuarios de astronomía IDL en el Centro Goddard de la NASA Archivado el 30 de agosto de 2005 en Wayback Machine
  • Página de inicio de Fawlty Language
Retrieved from "https://en.wikipedia.org/w/index.php?title=IDL_(programming_language)&oldid=1247842864"