IDL (язык программирования) - IDL (programming language)
Эта статья нужны дополнительные цитаты для проверка.Февраль 2010 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Парадигма | векторно-ориентированное программирование |
---|---|
Разработано | Дэвид Стерн |
Разработчик | Дэвид Стерн и Визуальные информационные решения ITT (ITT VIS) |
Впервые появился | 1977 |
Стабильный выпуск | IDL 8.8 / август 2020 г. |
Печатная дисциплина | Динамический |
Интернет сайт | www |
Основной реализации | |
IDL, Язык данных GNU, Язык фолти |
IDL, Короче для Интерактивный язык данных, это язык программирования используется для анализ данных. Он популярен в определенных областях науки, таких как астрономия, физика атмосферы и медицинская визуализация.[нужна цитата ] IDL разделяет общие синтаксис с PV-волна и возник из того же кодовая база, хотя впоследствии языки в деталях разошлись. Это также свободный или же бесплатный реализации, такие как Язык данных GNU (GDL) и Язык фолти (Флорида).
Обзор
IDL - это векторизованный, числовой, и интерактивный, и обычно используется для интерактивной обработки больших объемов данных (включая обработка изображений ). Синтаксис включает множество конструкций из Фортран и некоторые из C.
IDL возникла с ранних VAX / VMS / Fortran, и его синтаксис все еще показывает свое наследие:
Икс = Findgen(100)/10 у = грех(Икс)/Икс участок, х, у
В Findgen Функция в приведенном выше примере возвращает одномерный массив чисел с плавающей запятой со значениями, равными серии целых чисел, начинающихся с 0.
Обратите внимание, что операция во второй строке применяется векторизованным образом ко всему массиву из 100 элементов, созданному в первой строке, аналогично тому, как языки программирования массивов общего назначения (например, APL, J или же K ) сделал бы это. Этот пример содержит деление на ноль; IDL сообщит о арифметическое переполнение, и хранить NaN значение в соответствующем элементе у array (первый), но остальные элементы массива будут конечными. NaN исключается из визуализации, создаваемой участок команда.
Как и большинство других языков программирования массивов, IDL очень быстро выполняет векторные операции (иногда так же быстро, как хорошо закодированный пользовательский цикл в Fortran или C), но довольно медленно, если элементы требуют обработки по отдельности. Следовательно, часть искусства использования IDL (или любого другого языка программирования массивов, если на то пошло) для численно тяжелых вычислений заключается в использовании встроенных векторных операций.
История
Эта секция возможно содержит оригинальные исследования.Сентябрь 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Предыдущие версии IDL были разработаны в 1970-х гг. Лаборатория физики атмосферы и космоса (LASP) в Колорадский университет в Боулдере. В LASP Дэвид Стерн принимал участие в попытках позволить ученым проверять гипотезы, не нанимая программистов для написания или модификации отдельных приложений. Первая программа в эволюционной цепочке IDL, разработанная Стерном, была названа Rufus; это был простой векторно-ориентированный калькулятор, работавший на PDP-12. Он принимал двухбуквенные коды, определяющие арифметическую операцию, входные регистры, служащие операндами, и регистр назначения. Версия Руфуса, разработанная на PDP-8 был редактором спектра Mars Mariner Spectrum Editor (MMED). MMED использовался учеными LASP для интерпретации данных из Маринер 7 и Маринер 9. Позже Стерн написал программу под названием SOL, которая также работала на PDP-8. В отличие от своих предшественников, это был настоящий язык программирования с синтаксисом, подобным FORTRAN. SOL был языком, ориентированным на массивы, с некоторыми примитивными графическими возможностями.[1]
Стерн покинул LASP и основал Research Systems Inc. (RSI) в 1977 году. Первым продуктом RSI был IDL для PDP-11.[1] В этом выпуске графика, поддерживаемая IDL, была в основном терминалами Tektronix и дисплеями растровой графики. RSI продала свои первые лицензии IDL НАСА Центр космических полетов Годдарда и Ball Aerospace & Technologies Corp. в 1979 году. Два года спустя RSI выпустила начальную версию IDL для VAX / VMS, которая была написана на VAX-11 MACRO и FORTRAN. Он использовал преимущества виртуальной памяти VAX и 32-битного адресного пространства.[1] В Национальный центр атмосферных исследований (NCAR), университет Мичигана, то Колорадский университет, а Лаборатория военно-морских исследований с этой версии начал использовать IDL.
В 1987 году RSI перенесла разработку IDL на Unix среда, которая потребовала полной переписывания кода на C, а не порта существующей версии VAX IDL. [1] Стерн и Али Бахрами переписали IDL для Unix на Sun 3, воспользовавшись преимуществами переписывания для расширения и улучшения языка. Впоследствии IDL был дополнительно расширен и перенесен на несколько вариантов Unix, VMS, Linux, Microsoft Windows (1992) и Mac OS (1994).
Виджеты были добавлены в IDL в 1992 году, обеспечивая событийно-ориентированное программирование с графический пользовательский интерфейс. В 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 года. Новые типы объектов и указателей, а также ограниченные объектно-ориентированного программирования возможности, были добавлены в IDL в 1997 году.
IDL широко применяется в космической науке, например, в солнечная физика. В Европейское космическое агентство использовал IDL для обработки почти всех изображений Комета Галлея взято Джотто космический корабль. Бригада, ремонтирующая Космический телескоп Хаббла использовали IDL, чтобы помочь им диагностировать аномалии в главном зеркале. В 1995 году космонавты на борту космического корабля Космический шатл использовал IDL, загруженный на ноутбук, для изучения ультрафиолетового излучения. В настоящее время, среди других приложений, IDL используется для большей части анализа части SECCHI СТЕРЕО миссия в NRL, США, и в лаборатории Резерфорда Эпплтона, Великобритания.
RSI стала 100% дочерней компанией ITT Industries в марте 2004 г. С 15 мая 2006 г. RSI начала свою деятельность как Решения ITT для визуальной информации. С 31 октября 2011 года в результате реструктуризации эта компания стала Решения для визуальной информации Exelis. По состоянию на 2015 год[Обновить], IDL теперь принадлежит и поддерживается Геопространственные решения Harris.
Функции
В качестве компьютерного языка IDL:
- является динамически типизированный.
- имеет отдельный пространства имен для переменных, функций и процедур, но без иерархии пространств имен.
- изначально был однопоточным, но теперь имеет множество многопоточных функций и процедур.
- имеет все аргументы функции передано по ссылке; но см. «проблемы» ниже.
- имеет именованные параметры называемые ключевые слова, которые передаются по ссылке.
- обеспечивает наследование именованных параметров во вложенных вызовах подпрограмм по ссылке или значению.
- не требует предварительного объявления переменных.
- предоставляет ОБЩИЕ объявления блоков и системные переменные для совместного использования глобальных значений между подпрограммами.
- предоставляет базовую форму объектно-ориентированного программирования, в чем-то похожую на Болтовня, вместе с перегрузка оператора.
- реализует постоянную глобальную кучу переменных указателя и объекта, используя подсчет ссылок для вывоза мусора.
- компилируется в интерпретируемый промежуточный p-код на основе стека (а ля Виртуальная машина Java ).
- обеспечивает простой и эффективный синтаксис среза индекса для извлечения данных из больших массивов.
- предоставляет различные целочисленные размеры, а также действительные и комплексные числа с плавающей запятой одинарной и двойной точности.
- обеспечивает составные типы данных такие как символьные строки, массивы однородного типа, списки, хеш-таблицы, и простые (неиерархические) структуры записей смешанных типов данных.
Проблемы
Эта секция возможно содержит оригинальные исследования.Август 2014 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Некоторые из этих функций, которые делают IDL очень простым в использовании в интерактивном режиме, также вызывают трудности при создании больших программ. Единое пространство имен особенно проблематично; например, языковые обновления, которые включают новые встроенные функции, иногда делают недействительными крупные научные библиотеки.[2]
Массивы передаются по ссылке, и этот механизм является объявленной функцией языка для передачи данных обратно из подпрограммы - напротив, фрагменты массива копируются перед передачей, так что изменения данных не возвращаются в диапазоны массивов (после выход из подпрограммы), нарушая принцип наименьшего удивления.
Многие исторические несоответствия сохранились благодаря раннему наследию языка, требуя от программиста индивидуальных решений. В качестве примера:
- И индексирование массива, и ввод подпрограммы могут выполняться с одинаковым синтаксисом (круглые скобки); эта неоднозначность в сочетании с единым пространством имен для всех переменных и подпрограмм может привести к прекращению работы кода, когда вновь определенные подпрограммы или расширения языка конфликтуют с именами локальных переменных. Программисты IDL могут избежать многих из этих проблем, используя квадратные скобки для индексации массива, тем самым избегая конфликтов с именами функций, в которых используются круглые скобки.
Предыдущую проблему можно решить с помощью этой опции компилятора:
COMPILE_OPT STRICTARR
- Визуальные информационные решения ITT (ITT VIS), разработчики IDL, предприняли явные шаги для предотвращения байт-код совместимость с другими средами. Файлы, содержащие скомпилированные процедуры, используют двоичный формат структуры данных с тегами, который не был официально опубликован, но был исследован и задокументирован пользователями.[3] но также содержат следующее уведомление в виде текста ASCII, встроенного в каждый сохраненный файл: «Файлы сохранения / восстановления IDL содержат неопубликованную частную информацию о программе IDL. Поэтому обратное проектирование этого файла запрещено условиями Лицензионного соглашения с конечным пользователем IDL (IDL EULA). Все пользователи IDL должны прочитать и согласиться с условиями IDL EULA во время установки IDL. Программное обеспечение, которое читает или записывает файлы в формате IDL Save / Restore, должно явно иметь лицензию от ITT Visual Information Solutions. предоставления права на это. В этом случае лицензия будет включена в программное обеспечение для вашей проверки. Сообщите ITT Visual Information Solutions о программном обеспечении, не имеющем такой лицензии ... »По состоянию на февраль 2010 г.[Обновить], утверждение не было проверено в суде.
Кроме того, это положение IDL EULA не действует в Австралии в связи с разделами 47D и 47H Закона об авторском праве этой страны.
Примеры
Следующая графика была создана с помощью IDL (включая исходный код):
- Изображение случайных данных плюс тренд с наиболее подходящей линией и различными сглаживаниями
- Графики дельта-о-18 в зависимости от возраста и глубины (из EPICA и Восток)
- койот IDL галерея примеры визуализации IDL
Смотрите также
- Список программного обеспечения для численного анализа
- ENVI - программный комплекс для обработки изображений, встроенный в IDL
- ИРАФ - бесплатная графическая среда обработки данных, созданная NOAO
- MATLAB - техническая вычислительная среда, обеспечивающая аналогичные возможности IDL
- NumPy - расширение для Python что дает ему математические возможности массива, аналогичные IDL
- Язык данных Perl (PDL) - Расширение Perl что дает ему математические возможности массива, аналогичные таковым в IDL
- Solarsoft - библиотека для анализа солнечных данных и операций по эксплуатации космических аппаратов, написанная преимущественно на IDL
- GDL - GNU Data Language, бесплатная реализация, похожая на IDL.
- Язык фолти - Fawlty Language - компилятор, совместимый с IDL8 (Interactive Data Language).
Рекомендации
- ^ а б c d Шинле, Майк (1991-01-19). "IDL FAQ". Получено 8 февраля 2019.
- ^ Фаннинг, Дэвид. «Конфликты именования программ в IDL 8». Архивировано из оригинал 6 марта 2014 г.. Получено 30 сентября 2014.
- ^ Маркуардт, Крейг (21 декабря 2011 г.). "Неофициальная спецификация формата файла IDL" SAVE ". Получено 2013-02-13.