Icon| Файл:Iconlogo.gif </span> |
<tr><th style="padding:3px">Семантика:</th><td class="" style="padding:3px">
мультипарадигменный: императивный, логический
</td></tr><tr><th style="padding:3px">Тип исполнения:</th><td class="" style="padding:3px">
интерпретатор
</td></tr><tr><th style="padding:3px">Появился в:</th><td class="" style="padding:3px">
1974 г.
</td></tr><tr><th style="padding:3px">Автор(ы):</th><td class="" style="padding:3px">
Ralph E. Griswold
</td></tr><tr><th style="padding:3px">Типизация данных:</th><td class="" style="padding:3px">
динамическая
</td></tr><tr><th style="padding:3px">Основные реализации:</th><td class="" style="padding:3px">
Icon, Jcon, Unicon
</td></tr><tr><th style="padding:3px">Испытал влияние:</th><td class="" style="padding:3px">
Снобол
</td></tr>
</table>
Icon — язык программирования, унаследовавший идеологию более раннего языка того же автора Снобол. Название языка не имеет ничего общего с «иконками», а является сокращением от слова англ. iconoclastic (иконоборческий), используемом в смысле борьбы с конформизмом в разработке языков программирования.
Язык Icon имеет много общего, роднящего его с языками логического программирования, так Thomas W. Christopher, автор Icon Programming Language Handbook пишет: «Самое большое различие между Icon и другими языками программирования — это то, что выражения в Icon — генераторы».
Пример использования генератора:
procedure main()
L:=["1","22","333"] # Список строк
every writes(" ",! L)
end
----
Выход: 1 22 333
Язык является динамически типизированным, имеет встроенные мощные типы данных. Процедуры в Icon'е относятся к величинам первого класса (англ. first class values), что означает возможность присваивания переменным значений самих процедур, а не результатов их выполнения. Существует механизм со-выражений (англ. co-expression), позволяющий создавать сопрограммы.
Авторская реализация Icon, написанная в Аризонском Университете (т.н. аризонский icon) распространяется в соответствии с лицензией GPL.
Языки Icon и Снобол послужили своего рода полигоном для отработки некоторых идиом программирования, особенно это касается конструкций содержащих && или || и первым языком, использующим регулярные выражения (хотя и в форме, отличающейся от ныне принятой). Впоследствии эти механизмы были использованы в Unix-среде, в языках C, AWK и Perl.
Вот пример подобной идиомы:
[ $ringing != 0 ]&&echo Phone ringing!!!
Другой пример, пусть есть конструкия в shell:
xview -root `gtk-shell -t "Which image?" -fs`
Даже если вы не выберете имя файла-картинки, xview все равно
будет запущен. А в языке Icon этого никогда бы не произошло.
Аналоги регулярных выражений являются частью самого языка,
позволяя использовать системы обработки текста неограниченной
сложности.
Гибкость языка позволяет записывать очень большое количество действий, не уменьшая при этом читабельность текста.
Разработка классического аризонского айкона в настоящее время заморожена. Развивающейся ветвью Icon является язык Unicon,
транслятор которого также распространяемый под лицензией GNU GPL. Это объектно-ориентированный диалект языка, с улучшенной интеграцией с окружающей средой ОС, включая, к примеру, поддержку взаимодействия с БД.
en:Icon (programming language)
es:Icon
fa:آیکون (زبان برنامهنویسی)
fr:ICON
ja:Icon
ko:아이콘 (프로그래밍 언어)
pl:Icon
pt:Icon
sv:Programspråket Icon
tg:Icon
Served in 1.037 secs.