Вы можете присоединить любой файл исходного кода Euphoria, имеющийся в данном пакете, к своей программе "как есть", либо со своими модификациями. (Вам, вероятно, понадобится несколько стандартных файлов из каталога euphoria\include для создания любой большой программы).
Нам будет приятно, если вы скажете людям, что разработали свою программу с использованием Euphoria, и дадите им адрес http://www.RapidEuphoria.comнашего узла Web, но мы не требуем подобного рода изъявлений благодарности.
Файлы значков, такие как euphoria.icoиз каталога euphoria\bin, могут распространяться с вашими изменениями или без них.
Высокоскоростная версия исполнительного блока интерпретатора Euphoria написана на ANSI C, и может быть откомпилирована с помощью многих различных компиляторов Си. Полный исходный код имеется в каталоге euphoria\source, вместе с execute.e, альтернативной версией написанного на Euphoria исполнительного блока. Наша весьма щедрая Лицензия открытого кодапозволяет и персональное, и коммерческое использование кода, и, в отличие от многих других лицензий открытого кода, ваши изменения в этом коде не должны быть обязательно также открытыми.
Некоторые дополнительные ограничения со стороны третьих лиц могут иметь место, когда вы используете транслятор с Euphoria на Си.
Все данные, обрабатываемые в Euphoria, называются объектами, а объекты могут быть атомамиили рядами. Каждый атом-- это единственное число. Каждый ряд-- это набор объектов.
Те объекты, которые содержатся в ряде, могут быть произвольной смесью атомов и рядов. Ряд представляется списком объектов, заключённым в фигурные скобки. Объекты в этом списке разделены запятыми. Атомы могут иметь любую величину в пределах от приблизительно -1e300 (минус 10 в степени 300) до +1e300 (10 в степени 300) с 15-ю значащими десятичными цифрами -- целую или двойной точности с плавающей точкой. Вот некоторые примеры объектов Euphoria:
-- примеры атомов:
0
1000
98.6
-1e6
-- примеры рядов:
{2, 3, 5, 7, 11, 13, 17, 19}
{1, 2, {3, 3, 3}, 4, {5, {6}}}
{{"jon", "smith"}, 52389, 97.25}
{} -- пустой ряд
Числа могут быть шестнадцатеричными. Например:
#FE -- 254
#A000 -- 40960
#FFFF00008 -- 68718428168
-#10 -- -16
В шестнадцатеричных числах разрешены только заглавные буквы A, B, C, D, E, F. Шестнадцатеричные числа всегда положительные, если только перед символом # не стоит знак минус. То есть, например, #FFFFFFFF - это громадное положительное число (4294967295), а *не* -1, как могут ожидать некоторые программисты, практикующие программирование на машинном языке.
Ряды могут быть вложенными на любую глубину, т.е. вы можете иметь ряды внутри рядов внутри рядов и так далее до любого уровня (пока будет хватать памяти на вашей машине). Фигурные скобки можно использовать, чтобы конструировать ряды из списка выражений. Эти выражения могут быть постоянными или вычисляться во время исполнения программы, например:
{x+6, 9, y*w+2, sin(0.5)}
Слова "Hierarchical Objects" - "Иерархические Объекты"в акрониме Euphoria отражают именно иерархическую многоуровневую структуру вложенных рядов. Не следует путать это с иерархией классов в некоторых объектно-ориентированных языках.
Почему же мы назвали их атомами? Почему не просто "числами"? Хорошо, нет проблемы, атом являетсяпросто числом, но мы хотели иметь отдельный термин, подчёркивающий тот факт, что атом принципиально отличается от ряда и не имеет неких более элементарных составляющих частей среди объектов Euphoria. Конечно, в мире физики "неделимые" атомы были расщеплены на элементарные частицы много лет назад, но в Euphoria они остаются основными строительными блоками для всех данных, которыми Euphoria манипулирует. Согласно же нашей "химической" аналогии, рядыможно представить себе как некие "молекулы", собранные из атомов и других молекул. Но лучшей аналогией являются каталоги и файлы на диске компьютера. Точно так же как каталог на диске может содержать и файлы, и другие каталоги, ряд может содержать и атомы, и другие ряды (а теряды могут содержать атомы и другие ряды, и так далее).
Как вы скоро сами убедитесь, ряды делают Euphoria очень простой иочень мощной. Понимание атомов и рядов является ключом к пониманию Euphoria.
Примечание о производительности:Не означает ли это, что все атомы размещены в памяти как 8-байтовые числа с плавающей точкой? Нет. Интерпретатор Euphoria обычно размещает целочисленные атомы как машинные целые (4 байта), чтобы сэкономить память и увеличить скорость вычислений. Но когда результат становится дробным или число слишком увеличивается, автоматически производится преобразование к формату с плавающей точкой.
Читать дальше