Подтвердить что ты не робот

Почему библиотека Локи не используется более широко?

Библиотека Loki реализует некоторые очень широко используемые понятия (умный указатель, посетитель, factory и т.д.). Часто упоминается связанная книга "Modern С++ Design", но сама библиотека широко не используется. Почему это?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

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

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

Это все возможно, но для навигации по ландшафту требуется отличный программист.

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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