Готовый перевод A Radical Approach to Application Development / Радикальный подход к разработке приложений: 2.4 Myth 4: Property Lists are Bad
Свойства - изящный, понятный способ ассоциировать информацию с символами в дополнение к ячейке значения/функции. Они крайне гибки, так как количество и тип данных статически не фиксированы
Кажется многие думают, что списки свойств слишком устарели и примитивны, чтобы их использовать в наше время. Вместо этого должны быть использованы более продвинутые структуры данных. Хотя это верно в некоторых случаях, в зависимости от общего количества свойств в символе, порог окупаемости может оказаться выше чем ожидается.
Предыдущие версии Pico Lisp экспериментировали с хэш-таблицами и самобалансирующимися двоичными деревьями для хранения свойств, но мы нашли, что обычные списки более эффективны. Мы должны принять во внимание суммарный эффект всей системы, и накладные расходы как для поддержки большого количества внутренних структур данных (смотри выше), так и более сложных алгоритмов поиска часто больше чем при использовании простого линейного поиска. А когда мы также касаемся вопроса эффективности использования памяти, преимущества списков свойств однозначно выигрывают
Pico Lisp реализует свойства в виде списка пар ключ-значение. Единственная уступка в пользу оптимизации скорости - схема "наиболее недавно использовавшийся", немного ускоряющая повторяющийся доступ, но у нас нет конкретных признаков, что это было на самом деле необходимо.
Другой аргумент против свойств - их заявленная глобальная видимость. Это верно в той же степени, как то что глобальны элемент в C-структуре или переменная экземпляра в Java-объекте.
Конечно в глобальном символе свойство тоже глобально, но в типичной разработке приложений свойства хранятся в анонимных символах, объектах или элементах базы данных, которые доступны только в четко определенном контексте. Поэтому свойство "цвет" может быть использовано в определенном смысле в одном контексте, и в совершенно другом смысле в другом контексте, без всяких помех.
Переведено на Нотабеноиде
http://notabenoid.org/book/39472/145878
Переводчики: mmamkin
Настройки
Готово:
