Парадигма | векторно-ориентированное программирование |
---|---|
Разработано | Дэвид Стерн |
Разработчик | Дэвид Стерн и ITT Visual Information Solutions (ITT VIS) |
Впервые появился | 1977 г. |
Стабильный выпуск | IDL 8.8 / август 2020 г. |
Печатная дисциплина | Динамический |
Веб-сайт | www.harrisgeospatial.com / Software-Technology / IDL |
Основные реализации | |
IDL, язык данных GNU, язык фолти |
IDL, сокращение от Interactive Data Language, - это язык программирования, используемый для анализа данных. Он популярен в определенных областях науки, таких как астрономия, физика атмосферы и получение изображений в медицине. IDL имеет общий синтаксис с PV-Wave и происходит из той же кодовой базы, хотя впоследствии языки разошлись в деталях. Существуют также бесплатные или бесплатные реализации, такие как GNU Data Language (GDL) и Fawlty Language (FL).
IDL является векторизованным, числовым и интерактивным, и обычно используется для интерактивной обработки больших объемов данных (включая обработку изображений ). Синтаксис включает множество конструкций из Фортрана и некоторых из Си.
IDL произошел от ранних VAX / VMS / Fortran, и его синтаксис все еще показывает свое наследие:
x = findgen(100)/10 y = sin(x)/x plot,x,y
Функция findgen в приведенном выше примере возвращает одномерный массив чисел с плавающей запятой со значениями, равными серии целых чисел, начинающихся с 0.
Обратите внимание, что операция во второй строке применяется векторизованным образом ко всему массиву из 100 элементов, созданному в первой строке, аналогично тому, как это делали бы языки программирования массивов общего назначения (такие как APL, J или K ). Этот пример содержит деление на ноль; IDL сообщит об арифметическом переполнении и сохранит значение NaN в соответствующем элементе массива y (первом), но остальные элементы массива будут конечными. NaN исключается из визуализации, созданной командой plot.
Как и большинство других языков программирования массивов, IDL очень быстро выполняет векторные операции (иногда так же быстро, как хорошо закодированный пользовательский цикл в Fortran или C), но довольно медленно, если элементы требуют обработки по отдельности. Следовательно, часть искусства использования IDL (или любого другого языка программирования массивов, если на то пошло) для числовых вычислений заключается в использовании встроенных векторных операций.
Предыдущие версии IDL были разработаны в 1970-х годах в Лаборатории атмосферной и космической физики (LASP) Университета Колорадо в Боулдере. В LASP Дэвид Стерн принимал участие в попытках позволить ученым проверять гипотезы, не нанимая программистов для написания или модификации отдельных приложений. Первая программа в эволюционной цепочке IDL, разработанная Стерном, была названа Rufus; это был простой векторно-ориентированный калькулятор, работавший на PDP-12. Он принимал двухбуквенные коды, которые определяли арифметическую операцию, входные регистры, служащие операндами, и регистр назначения. Версия Rufus, разработанная на PDP-8, была Mars Mariner Spectrum Editor (MMED). MMED использовался учеными LASP для интерпретации данных Mariner 7 и Mariner 9. Позже Стерн написал программу под названием SOL, которая также работала на PDP-8. В отличие от своих предшественников, это был настоящий язык программирования с синтаксисом, подобным FORTRAN. SOL был языком, ориентированным на массивы, с некоторыми примитивными графическими возможностями.
Стерн покинул LASP, чтобы основать Research Systems Inc. (RSI) в 1977 году. Первым продуктом RSI был IDL для PDP-11. В этом выпуске графика, поддерживаемая IDL, была в основном терминалами Tektronix и дисплеями с растровой графикой. RSI продала свои первые лицензии IDL Центру космических полетов имени Годдарда НАСА и Ball Aerospace amp; Technologies Corp. в 1979 году. Два года спустя RSI выпустила первоначальную версию IDL VAX / VMS, которая была написана на VAX-11 MACRO и FORTRAN. Он использовал преимущества виртуальной памяти VAX и 32-битного адресного пространства. Национальный центр атмосферных исследований (NCAR), то Мичиганский университет, то университет штата Колорадо, и научно - исследовательская лаборатория ВМС начали использовать IDL с этой версией.
В 1987 году RSI перенесла разработку IDL в среду Unix, что потребовало полной переписывания кода на C, а не переноса существующей версии VAX IDL. Стерн и Али Бахрами переписали IDL для Unix на Sun 3, воспользовавшись переписыванием для расширения и улучшения языка. Впоследствии IDL был дополнительно расширен и перенесен на несколько вариантов Unix, VMS, Linux, Microsoft Windows (1992) и Mac OS (1994).
В 1992 году в IDL были добавлены виджеты, обеспечивающие программирование, управляемое событиями, с графическим пользовательским интерфейсом. В 1997 г. была коммерчески выпущена система ION (IDL On the Net), основанная на веб-сервере. Первая версия ENVI, приложения для дистанционного зондирования мультиспектрального и гиперспектрального анализа изображений, написанного на IDL, была выпущена в 1994 году. ENVI была создана, разработана и принадлежала Better Solutions Consulting, LLC, пока она не была приобретена у BSC в октябре 2000 года компанией Eastman. Kodak совпала с покупкой RSI. RSI продавала, продавала и поддерживала ENVI в соответствии с условиями лицензионного соглашения с BSC, LLC с 1994 по октябрь 2000 года. В 1997 году в IDL были добавлены новые типы объектов и указателей, а также ограниченные возможности объектно-ориентированного программирования.
IDL широко применяется в космической науке, например, в физике Солнца. Европейское космическое агентство используется IDL для обработки почти всех снимков кометы Галлея, принятых Джотто космических аппаратов. Команда, ремонтирующая космический телескоп Хаббл, использовала IDL, чтобы помочь им диагностировать аномалии в главном зеркале. В 1995 году астронавты на борту космического челнока использовали IDL, загруженный на ноутбук, для изучения ультрафиолетового излучения. В настоящее время, среди других приложений, IDL используется для большей части анализа части SECCHI миссии STEREO в NRL, США, и в лаборатории Rutherford Appleton, Великобритания.
RSI стала полностью дочерней компанией ITT Industries в марте 2004 года. С 15 мая 2006 года RSI начала вести бизнес как ITT Visual Information Solutions. С 31 октября 2011 года в результате реструктуризации эта компания стала Exelis Visual Information Solutions. По состоянию на 2015 год IDL теперь принадлежит и обслуживается компанией Harris Geospatial Solutions.
В качестве компьютерного языка IDL:
Некоторые из этих функций, которые делают IDL очень простым для интерактивного использования, также вызывают трудности при построении больших программ. Единое пространство имен особенно проблематично; например, языковые обновления, которые включают новые встроенные функции, иногда делают недействительными большие научные библиотеки.
Массивы передаются по ссылке, и этот механизм является объявленной функцией языка для передачи данных обратно из подпрограммы - напротив, срезы массива копируются перед передачей, так что изменения данных не возвращаются в диапазоны массивов (после выход из подпрограммы), нарушая принцип наименьшего удивления.
Многие исторические неточности сохранились благодаря раннему наследию языка, требуя от программиста индивидуальных решений. В качестве примера:
Предыдущую проблему можно решить с помощью этой опции компилятора:
COMPILE_OPT STRICTARR
Кроме того, это положение IDL EULA не действует в Австралии в результате разделов 47D и 47H Закона об авторском праве этой страны.
Следующие рисунки были созданы с помощью IDL (включая исходный код):