Запуск и распространение Icon-программ

После установки Icon (описанной в предыдущем посте) уже вполне можно приступать к работе.
Однако, тут я должен сделать небольшое “лирическое отступление” относительно того, как работать с транслятором и что из себя представляют программы на Icon.
Во-первых, программы на Icon бывают двух видов - это программы в ucode и программы в icode. Оба формата программ представляют собой инструкции для виртуального Icon-компьютера , только ucode - это явное описание этих команд (язык,чем-то похожий на ассемблер), а icode - уже форменный байт-код.
В основном используется формат icode, который транслятор Icon помещает в тело shell-скрипта и в последствии, пользователь может запустить такой своеобразный shell-скрипт на выполнение. Отсюда вытекает сам принцип распространения программ : оттранслированная программа на Icon (т.е вышеупомянутый shell-скрипт с включенным внутрь icode’ом) и программа-интерпретатор байт-кода оставляют единый пакет. Замечу, что исполнитель байт-кода Icon очень мал по размеру (чуть менее 500 Кбайт, если не изменяет память) :slight_smile:
Формат ucode используется для создания подгружаемых библиотек для Icon-программ (вся IPL - Icon Programming Library состоит из ucode-файлов и исходников). ucode представляет собой два файла с расширениями .u1 и.u2, в которых в форме мнемоник представлены команды для Icon-компьютера. В самой программе используется указание расположения файла *.u1 (в команде link программы), а второй файл транслятор находит уже сам, и в процессе компиляции оба файла превращаются в байт-код, который включается в тело shell-скрипта.
Вообщем, отступление закончено, теперь о практических вопросах.
Транслятор Icon запускается командой :

icont [аргументы] исходный файл

Аргументы могут быть :

  • -с Генерация ucode
  • o Генерация исполняемого файла (в данном случае shell-скрипта с байт-кодом). Требует еще дополнительный параметр имя (или имя с путем) для выходного файла, т.е команда имеет вид : icont -o выходной_файл входной_файл
  • -x Запуск на выполнение. Ставиться после имени входного файла, т.е формат команды такой : icont входной_файл -x [аргументы для скомпилированной программы]

Выводы:

# Распространять программы на Icon лучше всего в виде пакета, состоящего из shell-скрипта с байт-кодом и бинарного файла iconx (помещается в /usr/bin/ или в ту папку, где лежит сам скрипт)