2010-11-20 2 views
6

** S'il vous plaît, cette question n'est pas destinée à déclencher une guerre de flammes. **Est-ce que les bibliothèques existantes meurent lorsqu'une nouvelle fonctionnalité entre dans le noyau du langage?

J'essaie de comprendre ce qui arrive aux bibliothèques existantes implémentant certaines fonctionnalités quand la même fonctionnalité qui n'existait pas auparavant dans le langage vient maintenant dans le langage. Par exemple C++ aurait bientôt std :: thread comme partie de la norme de langage, alors qu'advient-il des bibliothèques POSIX ou Boost?

Je serais également désireux de comprendre quelles expériences les utilisateurs d'autres langages de programmation pourraient avoir à cet égard.

+0

Les unités d'exécution POSIX ne seront pas remplacées par une bibliothèque C++. Ils sont les appels système natifs. D'autres langages et bibliothèques vont s'appuyer sur eux pour créer un support de threads sur Unix, les programmeurs C continueront à les utiliser et vous pouvez toujours les utiliser en code C++ pour accéder à des fonctionnalités système de bas niveau (par exemple un appel système NUMA spécialisé) . –

Répondre

2

C++ std :: thread est en grandes parties basées sur des threads boost. Ainsi, les threads de boost ne disparaîtront jamais vraiment, ils continueront à vivre dans la bibliothèque C++ standard. En outre, sur de nombreuses plateformes, les threads boost utilisent des threads posix comme backend, de sorte qu'ils ne disparaissent jamais aussi.

+0

Ce n'est pas parce que l'un est inspiré par l'autre que c'est la même chose. En fait, il y aura probablement une part équitable de programmes qui incluent à la fois std :: thread et boost :: thread. Mais à un moment donné, soit boost :: thread est mis en boîte, soit ils décident de le garder en parallèle (pour une compatibilité ascendante). – Tom

+0

... bien que je suppose qu'ils vont probablement le garder indéfiniment pour supporter les utilisateurs qui n'ont pas accès à std :: thread. Ce qui signifie que les threads de boost ne disparaîtront jamais vraiment. – Tom

9

L'adoption d'une nouvelle technologie n'arrive jamais du jour au lendemain. Il y aura un décalage pendant que les compilateurs implémenteront les nouvelles versions de la bibliothèque standard, puis un autre décalage pendant que ces compilateurs atteindront les développeurs.

Mes deux derniers travaux ont comporté une interaction occasionnelle avec Visual C++ 6, qui a plus de 10 ans. Il y a une grande réticence à passer du code de travail à un nouveau modèle amélioré.

Si les anciennes bibliothèques meurent, c'est par un processus d'obsolescence progressive plutôt que par une extinction massive soudaine. En fonction de la bibliothèque, il est possible que la norme suivante capture simplement un instantané de la fonction en cours, et que la bibliothèque parente continue d'évoluer en tant qu'incubateur pour C++ 1x, C++ 2x et ainsi de suite.

-3

Une telle chose n'est pas encore arrivée. C++ n'a qu'une seule implémentation jusqu'à présent.

+0

Eh, la mise en œuvre est vraiment un mauvais mot ici. Je veux dire qu'il n'y a qu'une seule version de la norme C++ et un brouillon. – milan

+0

Vous pouvez modifier votre message d'origine et corriger ce peu d'informations. – jwueller

+1

nah, ça va m'apprendre à taper plus consciencieusement :) – milan

4

Parfois, les auteurs de bibliothèques continuent à gérer leur bibliothèque car leur bibliothèque fait quelque chose de légèrement différent de la façon dont elle est effectuée dans la langue: soit cette différence offre un avantage unique ou est fondamentalement plus facile à générer. Quoi qu'il en soit, s'il y a assez de volonté de l'utilisateur pour le voir continuer ou si l'auteur est têtu, il continuera à être maintenu. Finalement, cependant, les gens utilisent simplement ce qui vient naturellement dans une langue si l'avantage n'est pas assez grand.

Questions connexes