Книга: Язык программирования Euphoria. Справочное руководство

2.1.1 Атомы и ряды

2.1.1 Атомы и ряды

Все данные, обрабатываемые в 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 байта), чтобы сэкономить память и увеличить скорость вычислений. Но когда результат становится дробным или число слишком увеличивается, автоматически производится преобразование к формату с плавающей точкой.

Оглавление книги


Генерация: 1.944. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз