Почему библиотека Локи не так широко используется? - PullRequest
44 голосов
/ 27 февраля 2010

Библиотека Loki реализует некоторые очень широко используемые концепции (интеллектуальный указатель, посетитель, фабрика и т. Д.). Часто упоминается связанная книга «Современный дизайн C ++», но сама библиотека не получила широкого распространения. Почему это так?

Большинство разработчиков предпочитают Boost. В частности, почему люди часто решают использовать умные указатели Boost, а не Loki?

Ответы [ 6 ]

19 голосов
/ 27 февраля 2010

Локи - это предмет исследования / проверки концепции. Александреску выдвигает новые идеи, другие люди принимают их за реальный мир. Также boost::shared_ptr почти буквально в TR1.

16 голосов
/ 18 февраля 2011

Локи страдает от того, что является хорошей библиотекой, затрагивающей несколько функциональных областей (поддержка метапрограммирования шаблонов с несколькими конкретными приложениями: умные указатели, синглтоны, функциональные объекты, ограничители области видимости и т. Д.), Тогда как boost - это совокупность многих библиотек, обычно полностью охватывающих каждая функциональная область и гораздо более настроены на мобильность (сначала).

Когда 9 птиц из 10 могут быть убиты одним и тем же камнем, многие люди просто начинают с повышения и заполняют пробелы сторонними библиотеками. Очень сложно конкурировать с бустом, если ты пересекаешься. Поскольку вы не будете перекрывать большую часть ускорения, люди в любом случае будут загружать / устанавливать повышение, чтобы получить другие функциональные возможности, поэтому, если вы не укажете область, в которой усиление слабое - и разница значительна для проекта, они "уладят" "для повышения там тоже.

Кроме того, Александреску неоднократно предпринимал попытки включить Локи в повышение, и некоторые из ключевых авторов повышения просто не поддержали его. По моему личному мнению, они хотят, чтобы более полная, но гораздо менее удобная для пользователя MPL имела большую «долю рынка»: как авторы библиотеки и печатные книги, которые являются единственной достойной документацией (в резко контрастирует с большинством других библиотек надстроек, которые имеют отличную онлайн-документацию), они очень хорошо справляются с этим.

Если кто-то обижен и не согласен с этим анализом, я весь в ушах.

Другая практическая проблема с чрезвычайно параметризованным кодом состоит в том, что в больших проектах, где разные разработчики / команды работают независимо, они часто заканчивают тем, что используют довольно разные экземпляры одного и того же шаблона довольно произвольно. Это затрудняет передачу значений между этими подсистемами: получателю может потребоваться:

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

Это все возможно, но для навигации по местности нужен великий программист.

11 голосов
/ 27 февраля 2010

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

6 голосов
/ 27 февраля 2010

Я на самом деле предпочитаю способ работы Локи, и я внес в Локи сам шаблон Decorator, который теперь находится в трекере, потому что, насколько мне известно, проект больше не поддерживается .
Я использую boost shared_pointer только потому, что он скоро станет стандартом, мне может не понравиться тот факт, что я не могу настроить его так, чтобы он действовал именно так, как я хочу, но я должен жить с этим.
Использование стандартной библиотеки важно, поскольку она поддерживает код, поддерживаемый другими программистами. Если это открытый исходный код, и вы хотите экспериментировать, используйте Loki. Вас никто не останавливает.
На самом деле Windows Vista использует некоторые функции Loki.
Я предполагаю, что они не используют избыточные реализации интеллектуальных указателей и посетителей.

4 голосов
/ 27 февраля 2010

Говоря как кто-то, кто использовал немало библиотеки Boost, а также неоднократно смотрел на Локи, самой большой проблемой была нехватка документации.Кроме того, Локи использует некоторые из самых ярких битов шаблонов C ++.Захватывающие вещи, но и довольно устрашающие.

2 голосов
/ 27 февраля 2010

Я использовал Loki один раз для небольшого инструмента (в основном, для переводчика), и он мне действительно понравился. Мои сотрудники не были в восторге от библиотеки, поэтому ее использование ограничивалось этим небольшим подпроектом.

...