Интерактивный язык данных, IDL: Кто-нибудь заботится?

Кто-нибудь использует язык Interactive Data Language, IDL? Он популярен у ученых. Я думаю, что это плохой язык, потому что он проприетарный (для каждого терминала он должен иметь дорогостоящую лицензию), и он имеет минимальную поддержку (попробуйте найти IDL, язык, прямо сейчас в стеке). Я пытаюсь убедить своих коллег прекратить использовать его и изучить C/С++/Python/Fortran/Java/Ruby. Кто-нибудь знает или даже заботится о IDL, чтобы иметь на нем мнения? Что ты думаешь об этом? Должен ли я сказать моим коллегам, чтобы они перестали тратить время на это? Как я могу их убедить?

Изменить: у людей создается впечатление, что я не знаю или использую IDL. Кроме того, я сказал, что IDL имеет минимальную поддержку, которая истинна в одном смысле, поэтому я должен уточнить, что научные библиотеки действительно большие. Я использую IDL все время, но это точно проблема: я использую только IDL, потому что его используют его коллеги. Существует формат IDL файла, который используется в IDL, который может быть открыт только в IDL. Поэтому я должен использовать IDL для работы с этими данными и передачи данных обратно коллегам, но я знаю, что буду более эффективным на другом языке. Это похоже на то, что кто-то отправил вам файл с файлом microsoft в приложении электронной почты, и если вы не понимаете, как это неправильно, то вы, вероятно, пишете слишком много слов, недостаточно кода, и вы купили слово Microsoft.

Изменить: В качестве альтернативы IDL Python популярен. Вот список "Профили" IDL (и минусы) из AstroBetter:

Плюсы IDL

  • Зрелые многочисленные доступные числовые и астрономические библиотеки
  • Широкая астрономическая пользовательская база.
  • Численный аспект, хорошо интегрированный с самим языком
  • Многие локальные пользователи с глубоким опытом
  • Быстрее для небольших массивов
  • Простая установка
  • Хорошая унифицированная документация
  • Стандартный инструмент запуска/отладки GUI (IDLDE)
  • Единая система виджетов (не то, что выбрать или учиться)
  • Функция SAVE/RESTORE
  • Использование аргументов ключевых слов в качестве флагов более удобно

Недостатки IDL

  • Узкая применимость, не подходящая для общего программирования
  • Медленнее для больших массивов
  • Функциональность массива менее мощная
  • Таблица поддерживает бедные
  • Ограниченная возможность расширения с использованием C или Fortran, такие расширения трудно распространять и поддерживать
  • Дорогие, иногда проблемы с другими, которые не имеют или не могут предоставлять лицензии.
  • Закрытый источник (только RSI может исправить ошибки)
  • Очень неудобно интегрироваться с задачами IRAF.
  • Управление памятью более неудобно
  • Единая система виджетов (бесполезная, если работает в другой среде)
  • Черчение:
    • Неловкая поддержка символов и математического текста
    • Многие системы шрифтов, проблемы с переносимостью (v5.1 несколько смягчает)
    • не является гибким или расширяемым.
    • окна графика не являются внутренне интерактивными (например, панорамирование и масштабирование)

Плюсы Python

  • Очень общий и мощный язык программирования, но он прост в освоении. Сильная, но необязательная, поддержка объектно-ориентированного программирования.
  • Очень большое сообщество пользователей и разработчиков, очень обширная и широкая база данных.
  • Очень расширяемый с C, С++ или Fortran, доступные доступные механизмы рассылки
  • Free; неограничивающая лицензия; Открытый исходный код
  • Становление стандартного языка сценариев для астрономии
  • Простота использования с задачами IRAF.
  • Основа усилий приложения STScI.
  • Более общие возможности массива
  • Быстрее для больших массивов, улучшена поддержка отображения памяти
  • Доступны многие книги и доступные ресурсы документации (для языка и его библиотек)
  • Улучшенная поддержка структур таблиц
  • Черчение
    • framework (matplotlib) более расширяемый и общий
    • Улучшенная поддержка и переносимость шрифтов (только один способ сделать это)
    • Используется во многих инфраструктурах окон (GTK, Tk, WX, Qt...)
    • Стандартная функция построения графиков независимо от используемой структуры Графики
    • встраиваются в другие графические интерфейсы.
    • более мощная обработка изображений (несколько одновременных LUTS, необязательная передискретизация/масштабирование, альфа-смешивание и т.д.)
  • Поддержка многих систем виджетов
  • Сильное локальное влияние на возможности, которые разрабатываются для Python

Недостатки Python

  • Дополнительные элементы для установки отдельно
  • Не так хорошо принят в астрономическом сообществе (но поддержка явно растет).
  • Научные библиотеки не столь зрелые:
    • Документация не такая полная, а не как унифицированная
    • Не так глубоко в астрономических библиотеках и утилитах
    • Не все функции числовой библиотеки IDL имеют соответствующую функциональность в Python
  • Некоторые числовые конструкции не совсем согласуются с языком (или немного менее удобным, чем IDL)
  • Соглашение об индексировании массива "назад"
  • Малая производительность системы медленнее
  • Нет стандартного средства запуска/отладки GUI
  • Поддержка многих систем виджетов (топор, который выбирает)
  • Текущая нехватка функции, эквивалентной SAVE/RESTORE в IDL
  • matplotlib еще не имеет эквивалентов для всех возможностей 2D-построения IDL (например, поверхностных графиков).
  • Использование аргументов ключевого слова, используемых как флаги, менее удобно
  • Черчение:
    • сравнительно незрелый, еще много развития
    • отсутствует некоторый тип графика (например, поверхность)
    • Для трехмерной возможности требуется VTK (хотя matplotlib имеет некоторые базовые 3-мерные возможности)

Ответ 1

Так много поклонников IDL здесь! Я также астроном, и я широко использовал IDL и Python. Все, что я могу сказать, это то, что IDL выживает по сей день из-за лени других астрономов, которые не могут или не хотят изучать новый лучший язык программирования. Большинство моих коллег не использовали ничего, кроме Fortran или IDL. Для них существует только IDL во всем мире. Кстати, многие из младших студентов-астрономов тоже все о IDL и даже не хотят проверять Fortran, или бог запрещает Python или C/С++. Это языки для программистов и математиков, а не для астрономов.

О лицензировании. Сколько было версий IDL и сколько из них купили ваш университет? Я думаю, многие...

Да, купите эту новую версию IDL 8.x. Я слышал, что его новый пакет построения позволяет вам изменять части графика после его создания. Wooow! Это так здорово!

p.s. В IDL нет ничего, что нельзя было бы сделать на Python намного лучше и чище. Большинство научных инструментов в нем обширны и очень стабильны. У меня не было никаких проблем с планированием всех видов сюжетов в matplotlib. Его графические инструменты превосходны и интуитивно понятны и не похожи на дрянные IDL "виджеты".

Это очень похоже на ситуацию в моем старом университете, где старые профессора были немного тупики, потому что они отказались узнать что-то новое в программировании. Они стали неконкурентоспособными и перестали делать значительную работу.

Ответ 2

Я исследователь fMRI в Детской больнице в Цинциннати, и в течение многих лет исследователи радиологии использовали IDL для разработки пакета обработки изображений (CCHIPS). Это очень хорошо разработанный пакет, и на протяжении многих лет его было много. Несмотря на то, что я довольно хардкорный пользователь MATLAB и поэтому имею тенденцию склоняться к пакетам, таким как SPM для обработки изображений fMRI, я все еще в конечном итоге использую CCHIPS и часто пишу/редактирую несколько сценариев IDL. Это не так "комфортно" для меня, как MATLAB (у всех нас есть любимые "гадания"!), Но это довольно легко узнать.

Я думаю, моя точка зрения заключается в том, что... Если ресурс программирования работает хорошо, он хорошо зарекомендовал себя, он хорошо используется многими, И (самое главное!) в вашей организации все еще есть люди, желающие поддерживать/отлаживать/расширьте ресурс, тогда нет необходимости принимать паникерскую позицию, что переход на что-то новое должен быть сделан немедленно. Если бы в вашем учреждении не было никого, кто бы желал сохранить ресурс, это может вызвать серьезную озабоченность. В противном случае я бы посоветовал получить немного больше информации о том, что вам не нравится, а затем приложить мягкое давление, чтобы представить то, что вы считаете лучшим вариантом, подкрепляя его ясными причинами изменений.

Ответ 3

Чтобы победить своего врага вы должны изучить его, хотя не обязательно его освоить.

Я бы взял ваш любимый язык и сравнил его с IDL. Какие преимущества имеет IDL? Какие недостатки? Попросите своих коллег показать вам свой любимый код, написанный в IDL, и сравнить его с некоторыми из ваших любимых фрагментов кода. Это может быть не все плохо - люди платят большие деньги и используют его в конце концов.

Попытка заменить то, что является фаворитом, может быть не лучшим способом победить друзей или выиграть аргумент. Если вы сделаете вывод о том, что IDL предлагает только тонкие или никакие преимущества, попробуйте создать шлюз с более нового языка (например, Ruby) в IDL, чтобы люди могли использовать их совместно. Возможно, вы пытаетесь удалить укоренившуюся культуру, которая очень-счастлива с IDL-благодарю вас очень-очень, хотя, если они подходят к гибридному подходу и в конечном итоге заменяют их IDL другим языком, потому что другой язык на самом деле превосходит тогда вы окажете положительное влияние.

В любом случае Я никогда не являюсь поклонником сдвигов парадигмы, а потеря времени и денег, вложенных в один инструмент для идеологических преимуществ другого, является плохим бизнес-решением. Однако старые запатентованные технологии должны быть постепенно отменены, когда имеет смысл это сделать - хотя ключевой является поэтапный подход.

Ответ 4

Будучи кандидатом наук. студент в астрономии Я начал использовать IDL около года назад. Я также не совсем убежден в этом языке и, конечно, очень недоволен тем, что он является собственностью (но посмотрите вариант с открытым исходным кодом GDL: http://gnudatalanguage.sourceforge.net/). Тем не менее, это очень мощный язык, который имеет множество инструментов и функций, встроенных в то, что ученые используют много, например. он может делать всевозможные приставки из коробки и имеет большое количество графических инструментов построения графиков, готовых к использованию. Кроме того, есть много инструментов, которые построены на IDL, например, в Библиотеке пользователей астрономии IDL (http://idlastro.gsfc.nasa.gov/). Поэтому, хотя вначале было бы лучше реализовать все эти инструменты на открытом языке, я боюсь, что нет возврата назад, когда так много людей используют и - и привыкли к этому.

Ответ 5

Я ученый по климату, и каждый день я использую IDL. Это отношения любви-ненависти. Но я собираюсь прийти на защиту IDL здесь, потому что я не думаю, что вы сформулировали веские причины для ученых, с которыми вы работаете, чтобы сделать переключатель.

Единственной жизнеспособной заменой IDL в этом списке является Python в сочетании с полным набором научных библиотек. Даже тогда многие вещи сложнее или сложнее в python, чем в IDL. Языки, такие как C и Fortran, являются слишком низким уровнем для инструментария для анализа набора данных или создания некоторых цифр, и им не хватает интерактивной оболочки.

Большинство ученых заинтересованы в получении ответов на вопросы, а инструменты, такие как IDL, Matlab и NCL, созданы специально для того, чтобы помочь нам быстрее получить ответы.

Ответ 6

Если основная проблема связана с расходами, и вам нужен только интерпретатор языка IDL, а не привлекательные пакеты, вы можете быть счастливы с Fawlty Language, свободным клоном IDL.

(ссылка сейчас мертва!) http://fl.net23.net/

Я действительно сделал реальную работу, выпущенную для публики, вместо этого, вместо IDL, без объяснения босса в качестве теста и преуспел, но тогда я в основном запускаю программы без GUI и выполняю интерактивную работу в командной строке. Виджеты GUI не были выполнены в последний раз, когда я проверил. Однако Fawlty опережает GDL с точки зрения простого программирования.

Ответ 7

Я астроном и уже много лет использую IDL. Есть некоторые вещи, которые очень приятны в этом отношении - например, массив, включая строковые массивы, - и имеется довольно много процедур, связанных с астрономией. С другой стороны, в качестве языка я предпочитаю питон. Стоимость является проблемой для лицензий IDL - не дешево даже для одного пользователя. Есть и другие неприятности. Графики PostScript, которые IDL делает по умолчанию, не очень хороши. Это раздражает, чтобы каждый раз указывать толстые строки, а шрифт - некрасиво. Я начал использовать модуль matplotlib python, и ему есть что порекомендовать. Например, не нужно переделывать сюжет для изменения названия оси. Я только хочу, чтобы у меня были все эти удобные подпрограммы библиотеки астрономии IDL, написанные на python для matplotlib.

Ответ 8

Хорошо, я искал IDL в стеке и это как я сюда попал!: -)

Я программировал почти 30 лет, и я просто изучаю IDL. До сих пор я признаю, что я не слишком люблю это. Однако у него есть некоторые вещи, которых нет у многих других языков (например, операции с математическим массивом могут выполняться с помощью одной команды, а не с помощью циклов или какого-либо другого устройства).

Как утверждают другие, популярность IDL несколько культурна и является вопросом укоренения. Я впервые услышал об IDL почти 20 лет назад. В тот момент мне показалось, что у Сталлмена были хорошие идеи и несколько полезных инструментов, и Линус еще не выпустил свое знаменитое сообщение comp.os.minix. Таким образом, у IDL было хорошее начало для чего-либо открытого источника, который был бы конкурентоспособным; Насколько мне известно, ничто в сообществе с открытым исходным кодом еще не является конкурентоспособным (и я знаю о GDL, но если я не ошибаюсь, это путь за IDL - я был бы рад, если бы исправил это). В конце концов, он может быть заменен, но я не ожидаю, что это произойдет в ближайшее время.

Ответ 9

Исправьте меня, если я ошибаюсь, но вы просите, чтобы вы сказали своим коллегам "перестать тратить свое время" на язык, вы не знаете, но не любите, потому что он проприетарный????

Ну, я думаю, это немного недальновидно. Во-первых, вы должны спросить своих коллег, "почему они используют IDL". Я использую IDL в течение пятнадцати лет, и я думаю, они скажут вам, "потому что я могу делать то, что мне нужно сделать быстро". Я программировал в IDL/С++/LabVIEW/Python/Pascal в течение 20 лет, и я думаю, вы должны использовать язык/среду, наиболее подходящую для работы. Я бы не использовал IDL для яркого приложения для пользовательского интерфейса, но для анализа и визуализации гигабайт данных, которые сложно превзойти. (Я, конечно, не использовал бы Python или Ruby для этого!)

И о IDL, являющемся проприетарным программным обеспечением. Хорошо, что это правда (хотя вам не нужны дорогие лицензии для запуска приложения IDL. Вы можете использовать виртуальную машину для запуска приложений, вам нужна дорогостоящая (настоящая) лицензия для разработки приложений). Но что случилось с тем, что являетесь собственностью? Моя машина является запатентованным продуктом (и я думаю, что ваш тоже:-)), так же как и мой телевизор, телефон и т.д. Таким образом, IDL является собственностью, что означает, что вы не можете изменить язык (кроме запроса ITTVIS на изменения), но вы даже не знаете язык! Так в чем проблема? (Кстати, была упомянута версия GDL с открытым исходным кодом и существуют другие (с открытым исходным кодом) альтернативы). Сколько вы внесли в С++/Python/Ruby и т.д.

Я надеюсь, что проприетарный аргумент не используется (неверно), потому что вам не нравятся (высокие) лицензионные сборы? Это правда, что есть свободные (читай: деньги не передаются) Компиляторы С++/Python/Java, но ITTVIS - коммерческая компания, которая хочет зарабатывать деньги. Ну, я профессиональный программист, и хотя я поддерживаю идею с открытым исходным кодом, мне нравится, когда мне платят в конце месяца (угадайте, откуда эти деньги должны прийти:-)). (BTW Я не сотрудник ITTVIS.)

Итак, короче. Если вы считаете, что IDL слишком дорогая, это нормально (но не используйте собственный аргумент). Есть альтернативы, вы можете выбирать! Но прежде чем вы (попросите своих коллег) переключиться, спросите себя, каковы последствия для вашей производительности! Вы можете сэкономить пару тысяч долларов на лицензионных сборах, но если это займет в 10 раз больше времени для завершения работы.........

С уважением

Ответ 10

Я использую IDL в течение 8 лет в исследовательской лаборатории медицинских изображений. Я также использую MATLAB, LabVIEW и Visual С++.

Стоимость IDL: правда, что терминалам программирования нужны лицензии IDL. Тем не менее, вы можете запускать свои приложения IDL под своей бесплатной "виртуальной машиной" на любом терминале, если вы можете мириться с заставкой. Кроме того, многие другие языки/среды разработки стоят столько же, сколько IDL (если вы используете их на законных основаниях). Visual Studio дороже в этом университете за лицензию, чем IDL.

IDL/MATLAB vs Visual С++/etc: вы можете написать программу или приложение GUI за один день в IDL, который займет неделю для написания на С++/Visual С++, - это цитата из нашего экспертного программиста Visual С++. IDL занимает всего две недели, чтобы учиться, и есть отличная книга для изучения. Конечно, программа на С++ будет работать быстрее, и с вами будет больше элементов управления, если вы добавите визуальный графический интерфейс. Однако, если вы хотите прототипировать алгоритм или приложение с пользовательским интерфейсом для анализа данных, IDL (или MATLAB) сэкономит вам много времени.

IDL vs MATLAB: IDL немного более многословный, чем MATLAB, и не имеет базы пользователей или количества ящиков инструментов, но основной форум пользователя, который у него есть, отличный, с рядом отзывчивых экспертов. Раньше было, что интерфейс программирования IDL GUI был превосходным, хотя MATLAB, возможно, догнал - мне все еще гораздо удобнее программировать IDL "виджеты". Кроме того, встроенные функции IDL иногда кажутся немного более "встроенными", что может компенсировать меньшую пользовательскую базу. Хорошим примером является команда convolve: "convol" в IDL против "conv" в MATLAB. Команда является более длинным словом в IDL, но также есть флаги для нормализации результата, а также для обработки недействительных данных и краевых эффектов. Синтаксис MATLAB более изящный и лаконичный, и приятно иметь возможность напрямую возвращать более одного значения из функции.

Поверьте мне: изучение "научных данных", таких как IDL и MATLAB, стоит, если вы хотите потратить больше времени на работу с данными, чем на работу с кодом. Я не скажу, что один лучше, чем другой, но такие языки могут быть незаменимыми в лаборатории, особенно в лаборатории изображений.

Ответ 11

У меня были подобные мысли, когда я начал изучать IDL - и я все еще не поклонник этого, но теперь у меня есть код в дикой природе, который я поддерживаю в SolarSoft (система распространения программного обеспечения для солнечной физики... и большую часть программного обеспечения в IDL).

IDL подходит для обработки больших кубов данных и цифровых изображений, и это довольно легко узнать, если вы знаете Fortran. (что делает большинство старших ученых, и мне пришлось учиться в колледже как студент-инженер, который не был CompE)

Дело в том, что в IDL есть много кода. Стоимость преобразования всего этого на какой-то другой язык и предоставление ему необходимого тестирования просто астрономическая. Моя оценка босса заключается в том, что ей понадобится дюжина человеко-лет, и нам понадобятся люди, которые понимали IDL, какой бы новый язык и настоящую науку, чтобы они поняли, почему существует логика кода (а не просто какая-то странность языка).... и тогда вы должны рассмотреть возможность переподготовки всех ученых. На нашем нынешнем уровне финансирования это просто не произойдет.

Все сказанное, я бы хотел, чтобы их механизм Regex использовал PCRE или, по крайней мере, поддерживал утверждения с нулевой шириной. Они, наконец, сделали это, поэтому я могу передать строку в синтаксический анализатор XML без необходимости сначала записывать его в файл, но я все еще жду поддержки реального SOAP, а не моих попыток взломать его. Я должен работать с ограничениями, например без массивов нулевых элементов (я использую указатели на массивы, поэтому я могу оставить нулевой указатель), пространства имен (я подделываю его с помощью объектов) и отсутствие поддержки XPath (я видел некоторые странные проблемы, когда после прохождения дерева DOM время очистки увеличивается в четыре раза за каждое удвоение элементов в дереве... Мне пришлось возвращать большие записи в качестве налогового делителя, а не XML, но надеемся проверить, имеют ли их реализацию VOTable те же проблемы)

На данный момент я не предлагаю, чтобы люди перестали использовать IDL, но я провожу кампанию, чтобы заставить людей перестать хранить и распространять свои каталоги данных в качестве файлов с сохранением IDL из-за ограничения на их чтение чем-либо другим, кроме IDL. И я знаю о нескольких усилиях по оказанию услуг ученым для подготовки своих данных, так что, надеюсь, они могут уйти от необходимости, чтобы ученые имели IDL, чтобы иметь возможность использовать данные.

Ответ 12

Я пост-док в области наук о Земле и широко использовал IDL для обработки больших наборов данных. Я должен сказать, что очень удобно работать (для меня и многих других в любом случае), и если это избавит меня от сотен часов отладки ошибок памяти c, то это будет стоить стоимости лицензии (у меня также есть степень CS, поэтому я знаю "реальные" языки программирования).

Похоже, ваша проблема связана не столько с IDL, сколько с файловым форматом. Вместо того, чтобы убеждать своих коллег использовать другой язык, убедите их использовать другой формат файла. Я почти никогда не использовал .sav файлы, я всегда использую общие форматы для таких данных, как geotiff, HDF, netCDF или даже простые двоичные файлы или ASCII, если это необходимо. Таким образом, все мои коллеги могут использовать свой язык выбора, чтобы прочитать его.

Я нашел здесь информацию об использовании IDL с SOAP, и, к сожалению, комментарий выше выиграл конкурс google. Теперь, если бы я мог найти какую-то фактическую информацию об этом:)

Ответ 13

Возможно, это может кому-то помочь: GDL обрабатывает (считывает и записывает) файлы IDS.sav. Процедуры SAVE и RESTORE реализуются с помощью бесплатной библиотеки CMSV (написанной в IDL).

Кроме того, GDL может быть построен как модуль Python - тогда можно также использовать .sav файлы из Python. Поддержка Python в GDL по-прежнему использует пакет numarray, поэтому, возможно, это не очень удобно.