astronomy - qué - Lenguaje interactivo de datos, IDL: ¿Alguien le importa?
lenguaje de manipulación de datos (13)
Siendo un Ph.D. estudiante de astronomía comencé a usar IDL hace aproximadamente un año. Tampoco estoy del todo convencido de este lenguaje y, sin duda, bastante molesto por ser propietario (pero echa un vistazo a la variante de código abierto GDL: http://gnudatalanguage.sourceforge.net/ ). Sin embargo, es un lenguaje muy poderoso que tiene muchas herramientas y funciones incorporadas que los científicos usan mucho, por ejemplo, puede hacer todo tipo de ajustes de la caja y tiene una gran cantidad de herramientas gráficas de trazado listas para usar. Además, hay muchas herramientas que se basan en IDL, como la Biblioteca del usuario de Astronomía IDL ( http://idlastro.gsfc.nasa.gov/ ). Entonces, aunque al principio podría haber sido mejor implementar todas estas herramientas en un lenguaje abierto, me temo que ahora no hay respaldo que mucha gente está usando y que ya se ha acostumbrado.
¿Alguien usa un lenguaje llamado Interactive Data Language, IDL? Es popular entre los científicos. Creo que es un lenguaje pobre porque es propietario (cada terminal que se ejecuta tiene que tener una licencia costosa) y tiene un soporte mínimo (intente buscar IDL, el idioma, ahora mismo en la pila). Estoy tratando de convencer a mis colegas para que dejen de usarlo y aprendan C / C ++ / Python / Fortran / Java / Ruby. ¿Alguien sabe o incluso se preocupa por IDL lo suficiente como para tener opiniones al respecto? ¿Que piensas de eso? ¿Debería decirles a mis colegas que dejen de perder su tiempo ahora? ¿Cómo puedo convencerlos?
Editar: La gente está teniendo la impresión de que no sé o no uso IDL. Además, dije IDL tiene un soporte mínimo que es cierto en cierto sentido, por lo que debo aclarar que las bibliotecas científicas son de hecho grandes. Uso IDL todo el tiempo, pero este es exactamente el problema: solo uso IDL porque mis colegas lo usan. Hay un formato de archivo que IDL usa, el .sav, que solo se puede abrir en IDL. De modo que debo usar IDL para trabajar con estos datos y transferir los datos a mis colegas, pero sé que sería más eficiente en otro idioma. Esto es como si alguien le enviara un archivo de Word de Microsoft en un archivo adjunto de correo electrónico y si no entiende qué tan equivocado es, entonces probablemente escriba demasiadas palabras, no el código suficiente y haya comprado Microsoft Word.
Editar: Como alternativa a IDL, Python es popular. Aquí hay una lista de The Pros of IDL (y los contras) de AstroBetter :
Pros de IDL
- Madurar muchas bibliotecas numéricas y astronómicas disponibles
- Amplia base de usuarios astronómicos
- Aspecto numérico bien integrado con el lenguaje mismo
- Muchos usuarios locales con una gran experiencia
- Más rápido para arreglos pequeños
- Instalación más fácil
- Buena documentación unificada
- Herramienta de ejecución / depuración GUI estándar (IDLDE)
- Sistema de widget único (sin angustia sobre la que elegir o aprender)
- SAVE / RESTORE capacidad
- Uso de argumentos de palabras clave como banderas más conveniente
Contras de IDL
- Aplicabilidad estrecha, no muy adecuada para la programación general
- Más lento para matrices grandes
- Array funcionalidad menos poderosa
- Soporte de mesa pobre
- Capacidad limitada para extender usando C o Fortran, tales extensiones difíciles de distribuir y de soporte
- Caro, a veces problemas para colaborar con otros que no tienen o no pueden pagar licencias.
- Fuente cerrada (solo RSI puede corregir errores)
- Muy incómodo para integrarse con las tareas de IRAF
- La gestión de la memoria es más incómoda
- Sistema de widget único (inútil si se trabaja dentro de otro marco)
- Trazado:
- Soporte incómodo para símbolos y texto matemático
- Muchos sistemas de fuentes, problemas de portabilidad (v5.1 alivia algo)
- no tan flexible o tan extensible
- las ventanas de trazado no son intrínsecamente interactivas (p. ej., pan y zoom)
Pros de Python
- Un lenguaje de programación muy general y potente, pero fácil de aprender. Fuerte, pero opcional, soporte de programación orientada a objetos
- Comunidad de usuarios y desarrolladores muy grande, base de biblioteca muy extensa y amplia
- Muy extensible con C, C ++ o Fortran, mecanismos de distribución portátiles disponibles
- Gratis; licencia no restrictiva; Fuente abierta
- Convertirse en el lenguaje de scripting estándar para la astronomía
- Fácil de usar con tareas de IRAF
- Bases de los esfuerzos de aplicación de STScI
- Capacidades de matriz más generales
- Más rápido para arreglos grandes, mejor soporte para mapeo de memoria
- Muchos libros y recursos de documentación en línea disponibles (para el idioma y sus bibliotecas)
- Mejor soporte para estructuras de mesa
- Trazando
- marco (matplotlib) más extensible y general
- Mejor soporte de fuente y portabilidad (solo una forma de hacerlo también)
- Se puede usar en muchos marcos de ventanas (GTK, Tk, WX, Qt ...)
- Funcionalidad de trazado estándar independiente del marco utilizado
- las parcelas son insertables dentro de otras GUI
- manejo de imágenes más potente (múltiples LUTS simultáneos, remuestreo / reescalado opcional, mezcla alfa, etc.)
- Soporte para muchos sistemas de widgets
- Fuerte influencia local sobre las capacidades desarrolladas para Python
Contras de Python
- Más elementos para instalar por separado
- No tan bien aceptado en la comunidad astronómica (pero el apoyo crece claramente)
- Las bibliotecas científicas no son tan maduras:
- Documentación no tan completa, no tan unificada
- No tan profundo en las bibliotecas y utilidades astronómicas
- No todas las funciones de la biblioteca numérica IDL tienen la funcionalidad correspondiente en Python
- Algunas construcciones numéricas no son tan consistentes con el lenguaje (o un poco menos conveniente que IDL)
- Array convención de indexación "hacia atrás"
- Rendimiento de matriz pequeña más lento
- No hay una herramienta de ejecución / depuración GUI estándar
- Soporte para muchos sistemas de widgets (angustia con respecto a los cuales elegir)
- Falta de función actual equivalente a SAVE / RESTORE en IDL
- matplotlib aún no tiene equivalentes para todas las capacidades de trazado IDL 2-D (p. ej., gráficos de superficie)
- El uso de argumentos de palabras clave utilizados como indicadores menos convenientes
- Trazado:
- comparativamente inmaduro, todavía hay mucho desarrollo pasando
- falta algún tipo de gráfica (por ejemplo, superficie)
- La capacidad 3-d requiere VTK (aunque matplotlib tiene alguna capacidad básica 3-d)
¡Bien, busqué IDL en la pila y así es como llegué aquí! :-)
He estado programando durante casi 30 años y estoy aprendiendo IDL. Hasta ahora, admito que no soy demasiado aficionado a eso. Sin embargo, tiene algunas cosas que muchos otros lenguajes no tienen (por ejemplo, las operaciones de matriz matemática se pueden hacer con un solo comando, no con bucles o algún otro dispositivo).
Como otros dijeron, la popularidad de IDL es algo cultural y una cuestión de estar atrincherado. Escuché por primera vez de IDL hace casi 20 años. En ese momento, me pareció que Stallman tenía algunas buenas ideas y algunas herramientas útiles, y Linus aún no había emitido su famoso mensaje comp.os.minix. Por lo tanto, IDL tuvo una buena ventaja sobre cualquier fuente abierta que fuera competitiva; por lo que sé, nada en la comunidad de código abierto es competitivo (y sé de GDL, pero si no me equivoco, está muy por detrás de IDL; me complacería que me corrigieran). Eventualmente, puede ser suplantado, pero no espero que eso suceda pronto.
Corrígeme si me equivoco, pero ¿estás preguntando si deberías decirle a tus colegas que "dejen de perder el tiempo" en un idioma, no lo sabes, pero no me gusta porque es propiedad ????
Bueno, creo que es un poco miope. Primero, debería preguntarles a sus colegas "por qué están usando IDL". He estado usando IDL de forma intermitente durante aproximadamente quince años, y creo que te dirán "porque puedo hacer lo que tengo que hacer rápidamente". He estado programando en IDL / C ++ / LabVIEW / Python / Pascal durante 20 años y creo que debería usar el lenguaje / entorno que mejor se adapte al trabajo. No utilizaría IDL para una aplicación llamativa de interfaz de usuario, pero para el análisis y la visualización de Gigabytes de datos es difícil de superar. (¡Ciertamente no usaría Python o Ruby para eso!)
Y sobre IDL es software propietario. Bueno, eso es cierto (aunque no necesitas licencias costosas para ejecutar una aplicación IDL. Puedes usar la Máquina Virtual para ejecutar aplicaciones, necesitas una licencia cara (verdadera) para desarrollar aplicaciones). Pero, ¿qué hay de malo en ser propietario? Mi coche es un producto de propiedad (y creo que el tuyo también :-)), así como mi televisor, teléfono, etc. etc. IDL es de propiedad exclusiva, lo que significa que no puedes cambiar el idioma (aparte de solicitar cambios a ITTVIS). ), ¡pero ni siquiera sabes el idioma! ¿Entonces, cuál es el problema? (Por cierto, se mencionó la versión de código abierto GDL y hay otras alternativas (de código abierto)). ¿Cuánto has contribuido a C ++ / Python / Ruby, etc.?
Espero que el argumento de propiedad no se (mal) use porque no le gustan los derechos de licencia (altos). Es cierto que hay compiladores C ++ / Python / Java gratuitos (léase: no se transfiere dinero), pero ITTVIS es una empresa comercial que quiere ganar dinero. Bueno, soy un programador profesional, y aunque apoyo el pensamiento de código abierto, me gusta que me paguen a fin de mes (adivine de dónde viene ese dinero :-)). (Por cierto, no soy empleado de ITTVIS).
Entonces, en resumen. Si cree que IDL es demasiado caro, está bien (pero no use el argumento de propiedad). Hay alternativas, eres libre de elegir! Pero antes de que usted (pregunte a sus colegas) cambie, pregúntese cuáles son las consecuencias para su productividad. Puede ahorrar un par de miles de dólares en tarifas de licencia, pero si toma 10 veces más tiempo completar un trabajo .........
Saludos cordiales
Soy investigador de fMRI en el Children''s Hospital en Cincinnati, y durante años los investigadores de radiología han usado IDL para desarrollar un paquete de procesamiento de imágenes (llamado CCHIPS). Es un paquete muy bien desarrollado y ha tenido bastantes personas ampliando su utilidad a lo largo de los años. Aunque soy un usuario bastante duro de MATLAB y, por lo tanto, tengo una tendencia a inclinarme hacia paquetes como SPM para el procesamiento de imágenes fMRI, sigo usando CCHIPS y escribiendo / editando algunos scripts IDL con bastante frecuencia. No es tan "cómodo" para mí como MATLAB (después de todo, todos tenemos nuestros "blankies" favoritos), pero es bastante fácil de aprender.
Supongo que mi punto es este ... Si un recurso de programación funciona bien, está bien establecido, muchos lo usan bien, Y (¡lo más importante!) Todavía hay personas dentro de su organización dispuestas a mantener / depurar / modificar / expandir el recurso , entonces no hay necesidad de adoptar una postura alarmista de que cambiar a algo nuevo debe hacerse de inmediato. Si no hubiera nadie en su institución dispuesto a mantener un recurso más, eso puede ser motivo de preocupación urgente. De lo contrario, te sugiero familiarizarte un poco con lo que no te gusta, luego aplica una presión suave para presentar lo que consideras que es una mejor opción, respaldarlo con razones claras para el cambio.
He estado usando IDL durante 8 años en un laboratorio de investigación de imágenes médicas. También uso MATLAB, LabVIEW y Visual C ++.
Costo de IDL: es cierto que los terminales de programación necesitan licencias de IDL. Sin embargo, puede ejecutar sus aplicaciones de IDL en su "Máquina virtual" gratuita en cualquier terminal si puede soportar una pantalla de bienvenida. Además, muchos otros entornos de idiomas / desarrollo cuestan tanto como IDL (si los usa legalmente). Visual Studio es más caro en esta universidad por licencia que IDL.
IDL / MATLAB vs Visual C ++ / etc: Puede escribir un programa o aplicación de GUI en un día en IDL que tomaría una semana para escribir en C ++ / Visual C ++; esa es una cita de nuestro experto programador de Visual C ++. IDL solo toma dos semanas para aprender, y hay un excelente libro para aprender. Por supuesto, el programa C ++ se ejecutará más rápido y tendrá más controles para jugar si agrega una GUI visual. Sin embargo, si desea prototipar un algoritmo o una aplicación con una interfaz de usuario para analizar datos, IDL (o MATLAB) le ahorrará mucho tiempo.
IDL vs MATLAB: IDL es un poco más detallado que MATLAB, y no tiene la base de usuarios o la cantidad de cajas de herramientas, pero el principal foro de usuarios que tiene es excelente, con un número de expertos receptivos. Solía ser que la interfaz de programación IDL GUI era superior, aunque MATLAB puede haberse puesto al día, todavía me siento más cómodo programando "widgets" de IDL. Además, las funciones incorporadas de IDL a veces parecen tener un poco más de "capacidad incorporada", lo que puede compensar su menor base de usuarios. Un buen ejemplo es el comando convolve: "convól" en IDL vs "conv" en MATLAB. El comando es una palabra más larga en IDL, pero también se incluyen indicadores para normalizar el resultado, así como para tratar datos no válidos y efectos de borde. La sintaxis de MATLAB es más elegante y concisa, y es agradable poder devolver directamente más de un valor de una función.
Créame: aprender lenguajes de "datos científicos" como IDL y MATLAB vale la pena si quiere dedicar más tiempo a trabajar con datos que a trabajar con código. No voy a decir que uno es mejor que el otro, pero idiomas como este pueden ser indispensables en el laboratorio, especialmente en un laboratorio de imágenes.
Tenía pensamientos similares cuando comencé a aprender IDL, y todavía no soy un fanático de eso, pero ahora tengo un código en la naturaleza que apoyo en SolarSoft (un sistema de distribución de software para física solar ... y la mayoría del software está en IDL).
IDL es bueno para procesar grandes cubos de datos e imágenes digitales, y es bastante fácil de aprender si conoce Fortran. (que la mayoría de los científicos de más edad hacen, y tuve que ingresar a la universidad como estudiante de ingeniería que no era CompE)
El caso es que hay MUCHOS códigos en IDL. El costo de convertirlo a otro idioma y darle las pruebas necesarias es simplemente astronómico. La estimación de mi jefe es que tomaría más de una docena de años hombre, y necesitaríamos personas que entendieran IDL, cualquier lenguaje nuevo y ciencia real, así que entendieron por qué la lógica del código está ahí (y no solo una rareza). del lenguaje). ... y luego debes considerar volver a entrenar a todos los científicos. En nuestro nivel de financiación actual, eso no va a suceder.
Dicho todo esto, me encantaría que su motor Regex use PCRE o al menos admitiera aserciones de ancho cero. Finalmente lo hicieron para poder pasar una cadena al analizador XML sin tener que escribirlo primero en un archivo, pero todavía estoy esperando soporte real de SOAP, y no mis intentos de hackeo. Tengo que trabajar en torno a restricciones como matrices sin elemento cero (uso punteros para matrices, así puedo dejar un puntero nulo), espacios de nombres (lo falsifico con objetos) y falta de soporte XPath (he visto algunos problemas extraños cuando después de recorrer el árbol DOM, el tiempo de limpieza se cuadruplica por cada duplicación de elementos en el árbol ... He tenido que devolver grandes conjuntos de registros como delimitación fiscal, en lugar de XML, pero espero probar si su implementación VOTable tiene los mismos problemas)
En este punto, no estoy sugiriendo que la gente deje de usar IDL, pero estoy haciendo campaña para que la gente deje de almacenar y distribuir sus catálogos de datos como archivos de guardado de IDL, debido a la restricción de leerlos con algo más que IDL. Y sé de algunos esfuerzos para hacer servicios para que los científicos ejecuten su preparación de datos, de modo que con suerte puedan evitar exigir a los científicos que tengan IDL para poder usar los datos.
Soy un post-doc en ciencias de la tierra, y he usado IDL extensamente para procesar grandes conjuntos de datos. Tengo que decir que es muy FÁCIL trabajar con (para mí y muchos otros de todos modos), y si me ahorra cientos de horas de depuración de errores de memoria c, entonces vale la pena el costo de la licencia (también tengo un grado de CS , entonces sé lenguajes de programación "reales").
Parece que su problema no es tanto con IDL como con el formato de archivo. En lugar de convencer a sus colegas para que utilicen un idioma diferente, convénzanlos de que utilicen un formato de archivo diferente. Casi nunca he usado archivos .sav, siempre uso formatos comunes para datos como geotiff, HDF, netCDF, o incluso binarios simples o ASCII, según corresponda. De esta forma, todos mis colegas pueden usar su idioma de elección para leerlo.
Llegué aquí buscando información sobre el uso de IDL con SOAP y, lamentablemente, el comentario anterior ganó el concurso de google. Ahora si solo pudiera encontrar información real sobre él :)
Soy científico del clima y uso IDL todos los días. Es una relación de amor-odio. Pero voy a defender a IDL aquí porque no creo que haya expresado buenas razones para que los científicos con los que trabaja cambien.
El único reemplazo viable para IDL en esa lista es Python junto con el conjunto completo de bibliotecas científicas. Incluso entonces, muchas cosas son más difíciles, o más detalladas en Python que en IDL. Los lenguajes como C y Fortran tienen un nivel demasiado bajo para el análisis de un conjunto de datos o para hacer algunas figuras, y carecen de un caparazón interactivo.
La mayoría de los científicos están interesados en obtener respuestas a las preguntas, y herramientas como IDL, Matlab y NCL están diseñadas para ayudarnos a obtener respuestas más rápidamente.
Quizás esto podría ayudar a alguien: GDL maneja (lee y escribe) los archivos IDL .sav. Las rutinas SAVE y RESTORE se implementan con la ayuda de la biblioteca gratuita CMSV (escrita en IDL).
Además, GDL se puede construir como un módulo de Python, uno puede usar los archivos .sav de Python también. El soporte de Python en GDL todavía usa el paquete numarray, por lo que puede que no sea muy conveniente.
Soy astrónomo y he usado IDL durante muchos años. Hay algunas cosas que son muy agradables al respecto, por ejemplo, el manejo de arreglos incluyendo arreglos de cadenas, y bastantes rutinas relacionadas con la astronomía están disponibles. Por otro lado, como idioma prefiero Python. El costo es un problema para las licencias de IDL, no es barato ni siquiera para un solo usuario. También hay otras molestias. Las representaciones de PostScript que hace IDL de forma predeterminada no son muy buenas. Es molesto tener que especificar líneas gruesas cada vez y la fuente es un poco fea. Empecé a usar el módulo matplotlib python y tiene mucho que recomendar. Por ejemplo, uno no necesita rehacer un diagrama para cambiar un título del eje. Ojalá tuviera todas esas prácticas rutinas de la biblioteca de astronomía IDL escritas en python para matplotlib.
¡Tantos fanáticos de IDL aquí! También soy un astrónomo y he usado ampliamente IDL y Python. Todo lo que puedo decir es que IDL sobrevive hasta el día de hoy debido a la pereza de otros astrónomos, que no pueden o no quieren aprender un nuevo y mejor lenguaje de programación. La mayoría de mis colegas no han usado nada más aparte de Fortran o IDL. Para ellos solo hay IDL en todo el mundo. Por cierto, muchos de los estudiantes de astronomía más jóvenes también son todos IDL y ni siquiera quieren comprobar Fortran, o Dios prohíbe Python o C / C ++. Esos son lenguajes para programadores y matemáticos, y no para astrónomos.
Sobre las tarifas de licencia. ¿Cuántas versiones de IDL han sido y cuántas de ellas ha comprado su universidad? Supongo que muchos ...
Sí, adelante, compre esa nueva versión de IDL 8.x. He oído que es el nuevo paquete de trazado lo que le permite modificar partes de la trama una vez que se ha generado. ¡WOOOW! ¡Eso es tan cool!
ps No hay nada en IDL que no se pueda hacer en Python de una manera mucho mejor y más limpia. La mayoría de las herramientas científicas en él son extensas y muy estables. No he tenido problemas para trazar todo tipo de tramas en matplotlib. Sus herramientas GUI son excelentes e intuitivas, y no muy diferentes de los "widgets" de IDL.
Esto es muy parecido a la situación en mi antigua universidad, donde los viejos profesores estaban un poco perplejos por el tiempo, porque se negaban a aprender algo nuevo en la programación. No se volvieron competitivos y dejaron de hacer un trabajo significativo.
Si la desventaja de los gastos es la principal preocupación, y usted solo necesita el intérprete de idiomas IDL, no los paquetes extravagantes, puede estar contento con Fawlty Language, un clon gratis de IDL.
(¡Enlace ahora muerto!) http://fl.net23.net/
De hecho, he hecho un trabajo real lanzado al público con este en lugar de IDL, sin decirle al jefe, como prueba, y tuve éxito, pero luego la mayoría de las veces ejecuto programas que no son de GUI y trabajo de línea de comando interactivo. Los widgets de GUI no estaban completos la última vez que revisé. Sin embargo, Fawlty estaba muy por delante de GDL en términos de programación directa.
Para vencer a tu enemigo debes aprenderlo , aunque no necesariamente dominarlo.
Tomaría un idioma favorito suyo y lo compararía y contrastaría con IDL. ¿Qué ventajas tiene IDL? Que desventajas? Pídales a sus colegas que le muestren algunos de sus códigos favoritos escritos en IDL y compárelos con algunos de sus fragmentos de código favoritos. Puede que no sea del todo malo: la gente está pagando mucho dinero y usándolo después de todo.
Intentar reemplazar algo que es un favorito puede no ser una buena manera de ganar amigos o ganar una discusión. Si llega a la conclusión de que IDL ofrece pocas ventajas o ninguna, intente construir una puerta de acceso desde un lenguaje más nuevo (como Ruby) a IDL para que la gente pueda usarlo en conjunto. Puede estar intentando eliminar una cultura arraigada que es muy feliz con IDL-muchas gracias, aunque si adoptan un enfoque híbrido y eventualmente reemplazan su IDL con otro idioma porque el otro idioma es realmente superior, entonces habrás hecho un impacto positivo.
En cualquier caso, nunca me gustan los cambios de paradigma y perder tiempo y dinero invertido en una herramienta para obtener beneficios ideológicos de otra es una mala decisión comercial. Sin embargo, la tecnología propietaria antigua debe eliminarse cuando tiene sentido hacerlo, aunque un enfoque por etapas es clave.