Основные элементы языка программирования Icon. Чанышев О.Г. - 3 стр.

UptoLike

Составители: 

5
Введение
В предисловии к одной из лучших монографий, посвящен-
ных Прологу [1], И. Братко писал: «В средние века знание латин-
ского и греческого языков являлось существенной частью образо-
вания любого ученого. Ученый, владеющий только одним языком,
неизбежно чувствовал себя неполноценным, поскольку он был
лишен той полноты восприятия, которая возникает благодаря воз-
можности посмотреть
на мир сразу с двух точек зрения. Таким же
неполноценным ощущает себя сегодняшний исследователь в об-
ласти искусственного интеллекта, если он не обладает основатель-
ным знакомством как с Лиспом, так и с Прологомэтими двумя
основополагающими языками искусственного интеллекта, без
знания которых невозможен более широкий взгляд на предмет
исследования».
С
полной уверенностью могу добавить к этим языкам и Icon,
который прост и могуч во многом потому, что наследует идеоло-
гию мощного семейства языков SNOBOL, первые представители
которых появились еще в начале 60-х. Название языка не имеет
ничего общего с «иконками», а является сокращением от слова
«iconoclastic» (иконоборец) [1], используемом в смысле борьбы с
конформизмом
в разработке языков программирования.
Настоящий материал следует рассматривать как введение в
программирование на Icon’е. Этоне учебник по программирова-
нию, он рассчитан на студентов, уже имеющих опыт программи-
рования на Си или Паскале. «Императивная» внешность Icon’а
способствует быстрому усвоению языка. Простота синтаксиса,
небольшое, но функционально мощное множество структур дан-
ных делают
его очень удобным языком быстрого прототипирова-
ния, т. е. за более короткое время, чем программирование на Си,
можно написать и отладить программу, при помощи которой про-
веряются основные идеи концепции.
Сохраняя внешне стиль императивных языков, на самом де-
ле Icon имеет много инструментов, роднящих его с языками логи-
ческого программирования. Например, «
бэктрекинг», или генера-
торы. Christopher [2] пишет: «Самое большое различие между
Icon'ом и другими языками программированияэто то, что выра-
6
жения Icon'агенераторы». Выражения генерируют последова-
тельности значений, используя «бэктрекинг».
Пример
использования генератора:
procedure main()
L:=["mmm","nnnnn","oooooo"] # Список строк
every writes(" ",! L)
end
Выход: mmm nnnnn oooooo
Icon не является строго типизированным (тип имеют кон-
станты, но не переменные). Это и не плохо и не хорошо, но чаще
всего удобно. Будьте внимательны и следуйте модульному стилю
программирования.
Icon обладает мощными встроенными типами данных для
организации сложно структурированной информации: ассоциатив-
ные таблицы, списки, записи
, множества по модулю 2 (автомати-
чески исключающие дублирование), символьные множества. Поч-
ти любой тип из этого перечня может быть элементом другого ти-
па. Например, элементами таблиц могут быть списки. Списки мо-
гут состоять из записей и т. п. Только не надо специально услож-
нять структуры. Все должно быть ЦЕЛЕСООБРАЗНЫМ. («Красо-
та
это целесообразность» – Иван Ефремов (?)).
Процедуры в Icon'е «относятся к величинам первого класса
(first class values, что означает возможность присваивания перемен-
ным значений самих процедур, а не результатов их выполнения).
В Icon встроен механизм «совыражений» (co-expression) –
почти независимо выполняющихся частей программы, что дает
возможность как создавать классические сопрограммы, так и реа-
лизовывать произвольные псевдопараллельные алгоритмы.
Icon поддерживает
автоматическую конверсию типов.
Icon включает кросс-платформенные графические возмож-
ности.
Мой собственный опыт подтверждает, что программы на
Icon'е быстро разрабатываются, быстро и надежно работают. Я
даже стал задумываться: а не изменить ли моей старой любви
Prolog'у?! (Тем более что Icon распространяется свободно (не для
коммерческого использования!) и Вы можете свободно распро
-
                          Введение                                 жения Icon'а – генераторы». Выражения генерируют последова-
                                                                   тельности значений, используя «бэктрекинг».
      В предисловии к одной из лучших монографий, посвящен-                Пример использования генератора:
ных Прологу [1], И. Братко писал: «В средние века знание латин-            procedure main()
ского и греческого языков являлось существенной частью образо-             L:=["mmm","nnnnn","oooooo"] # Список строк
вания любого ученого. Ученый, владеющий только одним языком,               every writes(" ",! L)
неизбежно чувствовал себя неполноценным, поскольку он был                  end
лишен той полноты восприятия, которая возникает благодаря воз-             Выход: mmm nnnnn oooooo
можности посмотреть на мир сразу с двух точек зрения. Таким же             Icon не является строго типизированным (тип имеют кон-
неполноценным ощущает себя сегодняшний исследователь в об-         станты, но не переменные). Это и не плохо и не хорошо, но чаще
ласти искусственного интеллекта, если он не обладает основатель-   всего удобно. Будьте внимательны и следуйте модульному стилю
ным знакомством как с Лиспом, так и с Прологом – этими двумя       программирования.
основополагающими языками искусственного интеллекта, без                   Icon обладает мощными встроенными типами данных для
знания которых невозможен более широкий взгляд на предмет          организации сложно структурированной информации: ассоциатив-
исследования».                                                     ные таблицы, списки, записи, множества по модулю 2 (автомати-
      С полной уверенностью могу добавить к этим языкам и Icon,    чески исключающие дублирование), символьные множества. Поч-
который прост и могуч во многом потому, что наследует идеоло-      ти любой тип из этого перечня может быть элементом другого ти-
гию мощного семейства языков SNOBOL, первые представители          па. Например, элементами таблиц могут быть списки. Списки мо-
которых появились еще в начале 60-х. Название языка не имеет       гут состоять из записей и т. п. Только не надо специально услож-
ничего общего с «иконками», а является сокращением от слова        нять структуры. Все должно быть ЦЕЛЕСООБРАЗНЫМ. («Красо-
«iconoclastic» (иконоборец) [1], используемом в смысле борьбы с    та – это целесообразность» – Иван Ефремов (?)).
конформизмом в разработке языков программирования.                         Процедуры в Icon'е «относятся к величинам первого класса
      Настоящий материал следует рассматривать как введение в      (first class values, что означает возможность присваивания перемен-
программирование на Icon’е. Это – не учебник по программирова-     ным значений самих процедур, а не результатов их выполнения).
нию, он рассчитан на студентов, уже имеющих опыт программи-                В Icon встроен механизм «совыражений» (co-expression) –
рования на Си или Паскале. «Императивная» внешность Icon’а         почти независимо выполняющихся частей программы, что дает
способствует быстрому усвоению языка. Простота синтаксиса,         возможность как создавать классические сопрограммы, так и реа-
небольшое, но функционально мощное множество структур дан-         лизовывать произвольные псевдопараллельные алгоритмы.
ных делают его очень удобным языком быстрого прототипирова-                Icon поддерживает автоматическую конверсию типов.
ния, т. е. за более короткое время, чем программирование на Си,            Icon включает кросс-платформенные графические возмож-
можно написать и отладить программу, при помощи которой про-       ности.
веряются основные идеи концепции.                                          Мой собственный опыт подтверждает, что программы на
      Сохраняя внешне стиль императивных языков, на самом де-      Icon'е быстро разрабатываются, быстро и надежно работают. Я
ле Icon имеет много инструментов, роднящих его с языками логи-     даже стал задумываться: а не изменить ли моей старой любви –
ческого программирования. Например, «бэктрекинг», или генера-      Prolog'у?! (Тем более что Icon распространяется свободно (не для
торы. Christopher [2] пишет: «Самое большое различие между         коммерческого использования!) и Вы можете свободно распро-
Icon'ом и другими языками программирования – это то, что выра-

                               5                                                                   6