A Radical Approach to Application Development / Радикальный подход к разработке приложений: 2.2 Myth 2: Lisp Needs Plenty of Data Types

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Функцию Фибоначчи, описанную в примере выше можно ускорить, объявив переменную N как целое число. Но тогда данный пример покажет, насколько сильно влияют на Lisp требования поддержки компилятора. Компилятор может выдавать более эффективный код, если типы данных жестко заданы. Common Lisp поддерживает много различных типов данных, включая различные целочисленные типы, типы с фиксированной/плавающей точкой, дробные числа, символы, строки, структуры, хэш-таблицы, а также векторные типы в дополнение к спискам.

SauleSaulite 16.04.13 в 10:58

0

С другой стороны, Pico Lisp поддерживает только три встроенных типа данных - числа, символы и списки, и вполне прекрасно обходится только этими типами. Lisp-система работает быстрее с меньшим количеством типов данных, потому что меньшее количество опций необходимо проверять во время выполнения. Может быть, это повлечет за собой менее эффективное использование памяти, но зато меньшее количество типов позволяет сохранить место за счет того, что требуется меньше бит для тэгов.

SauleSaulite 16.04.13 в 11:09

0

Главная причина использования всего трех типов данных заключается в простоте, и преимущество в простоте превышает пользу от компенсации в скорости и занимаемой памяти.

SauleSaulite 16.04.13 в 11:13

0

На самом деле, Pico Lisp на самом низком уровне использует только один тип данных, ячейки, которые используются для формирования чисел, символов и списков. Небольшое число или минимальный символ занимают только одну ячейку памяти, динамически увеличивающуюся при необходимости. Эта модель памяти позволяет проводить эффективную сборку мусора и полностью избежать фрагментации (как это было бы, например, с векторами).

SauleSaulite 16.04.13 в 11:18

0

На самом высоком уровне всегда можно эмулировать другие типы данных, используя эти три примитивных типа данных. Так, мы эмулируем деревья с помощью списков, строки, классы и объекты с помощью символов. Пока не наблюдается проблем с производительностью, зачем усложнять?

SauleSaulite 16.04.13 в 11:21

0
Минутку...