Icon – свободный язык программирования, унаследовавший идеологию более раннего языка того же автора Снобол. Название языка не имеет ничего общего с «иконками», а является сокращением от слова англ. iconoclastic (иконоборческий), используемом в смысле борьбы с конформизмом в разработке языков программирования.
Icon является сверхвысокоуровневым языком программирования, который имеет много общего с языками логического программирования.
Таке язык программирования Icon является динамически типизированным, имеет встроенные мощные типы данных. Процедуры в Icon’е относятся к величинам первого класса (англ. first class values), что означает возможность присваивания переменным значений самих процедур, а не результатов их выполнения. Существует механизм со-выражений (англ. co-expression), позволяющий создавать сопрограммы.
Авторская реализация Icon, написанная в Аризонском Университете (т. н. аризонский icon) распространяется в соответствии с лицензией GNU General Public License.
Примечание
Icon 9.3 (последняя версия имеющая нативную поддержку Microsoft Windows) была реализована как компилятор в байт-код с генерацией исполняемого файла содержащего интерпретатор этого байт-кода. Начиная с версии 9.4 аризонский Icon реализован как классический скриптовый язык Unix.
После смерти автора языка, разработка классического аризонского айкона долгое время была заморожена, предпоследняя версия Icon v.9.4.3 была выпущена 14 ноября 2005, однако в настоящее время его поддержка возобновлена его учеником Грегом Таунсендом. 12 апреля 2010 выпущена новая версия транслятора.
Активно развивающейся ветвью Icon является язык Unicon, транслятор которого основан на его коде, и также распространяемый под лицензией GNU General Public License. Это объектно-ориентированный диалект языка, с улучшенной интеграцией с окружающей средой операционных систем, включая, к примеру, поддержку взаимодействия с базами данных. Подобно icon v.9.3, Unicon – это транслятор ориентированный на генерацию исполняемых файлов.
Также активно развивается диалект ObjectIcon, базирующийся на ранних версиях Unicon и являющийся форком последнего. ObjectIcon, как следует из названия, является расширенной объектно-ориентированной версией Icon, с расширенным синтаксисом для ООП (в частности, в отличие Unicon, в ObjectIcon есть модификаторы полей доступа к методам). В ObjectIcon сильно изменен состав библиотек (большая часть IPL была сильно переработана – некоторые модули были удалены, были полностью изменены графические библиотеки.), добавлена поддержка Unicode, поддержка пространств имен, добавлены множественное наследование и автоматическая инициализация констант и переменных – и теперь это современный и мощный ООП-язык. Разрабатывается Робертом Парлеттом и распространяется по лицензии MIT License. Доступен к загрузке на Google Code, работает пока в среде Linux/Unix.
В последнее время в связи с небольшим всплеском интереса к Icon несколькими энтузиастами был создан проект IconDevelopmentPackage целями которого стали массовость и доступность Icon. IconDevelopmentPackage не является самостоятельным приложением, а является небольшим комплектом инструментов разработчика (распространяемых под GNU General Public License и подобными лицензиями), интегрированных в единый пакет с собственным установщиком. Пакет содержит: редактор (в первых версиях – jEdit, в текущих заменен на ConText), транслятор и его компоненты (icont, Wi и т. д.), небольшой комплект пособий по Icon (справочники на русском и английском языке), также пакет содержит графическую оболочку к компилятору icont(создана непосредственной командой IDP и написана на PureBasic), которая носит название gIcont и небольшую графическую обертку для утилиты UPX (Также написана на PureBasic). Пакет IDP (сокращение от IconDevelopmentPackage) также доступен на Google Code и распространяется абсолютно бесплатно. Пакет IDP собран под платформу Microsoft Windows, хотя доступна версия под Linux в виде установочного shell-скрипта, использующего библиотеку Dialog для взаимодействия с пользователем.
Ссылки