46 votes

Pourquoi la bibliothèque Loki n'est-elle pas plus largement utilisée?

La bibliothèque Loki met en œuvre des concepts très largement utilisés (pointeur intelligent, visiteur, usine, etc.). Le livre associé "Modern C ++ Design" est souvent mentionné, mais la bibliothèque elle-même n'est pas largement utilisée. Pourquoi donc?

La plupart des développeurs semblent préférer Boost. En particulier, pourquoi les gens décident-ils souvent d'utiliser les indicateurs intelligents de Boost plutôt que ceux de Loki?

19voto

Nikolai N Fetissov Points 52093

Loki est une sorte de recherche / preuve de concept. Alexandrescu pousse de nouvelles idées, d'autres les adoptent pour le monde réel. De plus, boost::shared_ptr est presque littéralement dans TR1.

16voto

Tony D Points 43962

Loki souffre peut-être une bonne bibliothèque de toucher à plusieurs domaines fonctionnels (modèle metaprogamming de soutien avec quelques applications spécifiques: des pointeurs intelligents, les singletons, la fonction des objets, de la portée des gardes etc.), alors que boost est une collection de plusieurs bibliothèques de manière exhaustive couvrant chaque domaine fonctionnel et bien plus encore très à l'écoute pour la portabilité (premier).

Lorsque 9 oiseaux sur 10 peuvent être tués avec la même pierre, beaucoup de gens simplement de commencer avec de stimuler et de combler les lacunes avec des bibliothèques tierces. Il est très difficile de rivaliser avec boost si vous chevauchement. Parce que vous n'aurez pas de chevauchement avec beaucoup de boost, les gens vont télécharger/installer boost de toute façon pour obtenir les autres fonctionnalités, de sorte que si vous avez des ongles un domaine que l'amplification est faible - et la différence est significative pour le projet, ils vous "contenter" de boost là aussi.

De plus, Alexandrescu fait des tentatives répétées pour obtenir Loki inclus dans boost, et quelques-uns des principaux stimuler les auteurs n'étaient pas à la coopérative. Mon avis personnel est qu'ils veulent le plus complet, mais beaucoup moins convivial MPL pour avoir plus de "part de marché": comme les auteurs de la bibliothèque et le papier des livres qui sont le seul décent de la documentation (en contraste avec la plupart des autres bibliothèques boost qui ont une excellente documentation en ligne), ils le font assez bien de cette.

Si quelqu'un est offensé par et n'est pas d'accord avec cette analyse, je suis tout ouïe.

Une autre question pratique extrêmement paramétrable code, c'est que dans les grands projets où les différents développeurs et les équipes de travailler de façon autonome, ils finissent souvent en utilisant subtilement les différentes instanciations du même modèle assez arbitrairement. Cela rend plus difficile le passage de valeurs entre ces sous-systèmes: le récepteur peut avoir besoin de:

  • être paramétré (c'est à dire basé sur un modèle, et donc en ligne, qui présente la compilation des dépendances et le ralentissement de la construit à l'échelle de l'entreprise systèmes)
  • fournir un minimum de couverture pour toutes les instanciations possibles (par exemple, la vérification des codes d'erreur et d'attendre/gestion des exceptions)
  • de travail par le biais de certains de compilation à l'exécution à la main plus sur la base d'un résumé de la base de accesseur avec des implémentations pour chaque instanciation) qui compromet certains des avantages de performance de paramétrage

C'est possible, mais il faut un grand programmeur de naviguer sur le terrain.

11voto

Martin Beckett Points 60406

Vous voulez utiliser une bibliothèque que le prochain programmeur va connaître et qui sera bien supportée dans le futur - vous devez donc choisir une bibliothèque majeure. Parce que c'est une bibliothèque majeure, beaucoup de gens l'utilisent, ce qui en fait le choix par défaut.

6voto

the_drow Points 6141

Je préfère Loki la façon de faire les choses et j'ai contribué à Loki moi-même un Décorateur modèle qui se trouve maintenant dans le tracker, parce que le projet autant que je sache, n'est plus maintenu.
J'utilise boost shared_pointer tout simplement parce que ce sera la norme très bientôt, je n'aime pas le fait que je ne peux pas le personnaliser à agir exactement comme je le veux, mais je dois vivre avec elle.
L'utilisation de la bibliothèque standard est important car cela permet de garder le code maintenable par d'autres programmeurs. Si c'est open source et vous voulez expérimenter aller de l'avant et à l'utilisation de Loki. Personne ne vous en empêche.
En fait Windows Vista utilise une partie de Loki ses caractéristiques.
Je suppose qu'ils ne sont pas à l'aide de la redondante implémentations de pointeurs intelligents et les visiteurs.

4voto

Charles Anderson Points 3837

En tant que personne qui a utilisé pas mal de choses de la bibliothèque Boost et qui a également regardé Loki plus d’une fois, le plus gros problème était la rareté de la documentation. De plus, Loki utilise certains des modèles de modèles C ++ les plus poilus. Des choses passionnantes, mais aussi plutôt intimidantes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X