stringtranslate.com

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 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 gráfica , 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 es necesario procesar los elementos 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 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:

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 de 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:

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 EULA de IDL 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 , 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):

Véase también

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 .

Enlaces externos