LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Вывод не окончательный, но пока думаю так:

  • Нормальные структуры данных реализуются поверх cons-ячеек относительно просто (*tree, skiplist), и даже находятся проекты которые так делают, но многие стараются избегать cons-ячейки в пользу структур в стиле С, или примитивов вроде массивов в стиле С
  • Медлительность по сравнению с другими структурами частично компенсируется низкоуровневыми деталями реализации: очень просто брать произвольный хвост и объединять в новый список, из за единого компактного размера удобно работать с ними в gc, или через эвристики подменять принцип хранения
  • (Дополняя предыдущий пункт) при неизменяемости открывается простор для параллельной работы без блокировок: дешево подменить car/cdr на новый список, некоторые более сложные структуры построенные поверх список наследуют эти преимущества, просто реализуется журнал, проще реализовывать транзакционную память.

    Считаю чем дальше, тем больше будут видны эти преимущества, станут популярнее файловые системы с лог-структурой, которые строятся на похожих принципах, и может тогда реализуется мечта Столлмана о версионированной ФС в GNU/OS
  • Просто реализуются на замыканиях без других структур, позволяя тут же строить из них генераторы и обычные списки
  • Существующие реализации Lisp не особо волнуют эти пункты, они склонны игнорировать cons ячейки за пределами простых списков из небольшого количества элементов

Исходная версия MOPKOBKA, :

Вывод не окончательный, но пока думаю так:

  • Нормальные структуры данных реализуются поверх cons-ячеек относительно просто (*tree, skiplist), и даже находятся проекты которые так делают, но многие стараются избегать их
  • Медлительность по сравнению с другими структурами частично компенсируется низкоуровневыми деталями реализации: очень просто брать произвольный хвост и объединять в новый список, из за единого компактного размера удобно работать с ними в gc, или через эвристики подменять принцип хранения
  • (Дополняя предыдущий пункт) при неизменяемости открывается простор для параллельной работы без блокировок: дешево подменить car/cdr на новый список, некоторые более сложные структуры построенные поверх список наследуют эти преимущества, просто реализуется журнал, проще реализовывать транзакционную память.

    Считаю чем дальше, тем больше будут видны эти преимущества, станут популярнее файловые системы с лог-структурой, которые строятся на похожих принципах, и может тогда реализуется мечта Столлмана о версионированной ФС в GNU/OS
  • Просто реализуются на замыканиях без других структур, позволяя тут же строить из них генераторы и обычные списки
  • Существующие реализации Lisp не особо волнуют эти пункты, они склонны игнорировать cons ячейки за пределами простых списков из небольшого количества элементов