A Radical Approach to Application Development / Радикальный подход к разработке приложений: 2.4 Myth 4: Property Lists are Bad

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

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

Свойства - изящный, понятный способ ассоциировать информацию с символами в дополнение к ячейке значения/функции. Они крайне гибки, так как количество и тип данных статически не фиксированы

mmamkin 23.04.13 в 11:18

0

Кажется многие думают, что списки свойств слишком устарели и примитивны, чтобы их использовать в наше время. Вместо этого должны быть использованы более продвинутые структуры данных. Хотя это верно в некоторых случаях, в зависимости от общего количества свойств в символе, порог окупаемости может оказаться выше чем ожидается.

mmamkin 23.04.13 в 11:22

0

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

mmamkin 23.04.13 в 11:33

0

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

mmamkin 23.04.13 в 11:43

0

Другой аргумент против свойств - их заявленная глобальная видимость. Это верно в той же степени, как то что глобальны элемент в C-структуре или переменная экземпляра в Java-объекте.

mmamkin 23.04.13 в 11:48

0

Конечно в глобальном символе свойство тоже глобально, но в типичной разработке приложений свойства хранятся в анонимных символах, объектах или элементах базы данных, которые доступны только в четко определенном контексте. Поэтому свойство "цвет" может быть использовано в определенном смысле в одном контексте, и в совершенно другом смысле в другом контексте, без всяких помех.

mmamkin 23.04.13 в 11:53

0
Минутку...