Citation:
Envoyé par
Issam_Lahlali
ça apporte d'autres fonctionnalités et malheureusement l'évolution la plus importante est laissé de coté il s'agit des concepts, en fait on a parler beaucoup de programmation générique et ces bien faits mais le manque de concepts présente une grande lacune pour la conception orienté génériques.
Il est vrai que l'abandon des concepts pour la prochaine norme est domage, mais c'est très loin d'être la seule amélioration...
Dans les améliorations finalement bien plus intéressantes, afin de supprimer un peu de la verbosité de certains concepts tout en apportant de la simplicité et de auto commentaire, on peut citer les lambda expressions, les lvalue references, les fonctions deleted ou la détermination automatique des types...
Et je ne parle ici que des fonctionnalités dont j'ai entendu parler et pour lesquelles j'ai une vague idée de ce que cela apporte.
Tu disais plus haut que, si les lambda expressions étaient abandonnées, on trouverait du monde pour dire que l'on n'en a pas forcément besoin...
Et tu as raison: aucune des nouvelles fonctionnalités que j'ai citée n'est absolument nécessaire étant donné que l'on fait sans depuis près de trente ans.
Cependant, chacune de ces nouvelles fonctionnalités a, justement, pour but de permettre une meilleure mise en oeuvre et trouve un intérêt en simplification du travail.
Citation:
ce qu'il faut surtout c'est une spécification de la couche technique et un developpeur ne peux finalement qu'a apprendre une seule maniere de faire au niveau couche technique et forcement plusieurs implémentations.
ca peut paraitre mission impossible mais dés qu'on a une spec par exemple pour database, crois moi rapidement on aura les wrappers adéquats pour les librairies databases déjà existante, finalement c'est juste des redirections.
Il faut comprendre que SQL, XML, DOM, SAX, MOM, HTTP, UDP et tant d'autres sont eux même autant de spécifications qui ont leur propre standard, qui évoluent à leur propre rythme...
Si tu viens à figer dans la norme d'un langage des choses relatives à des normes en vigueur à un instant T, cela implique soit que, à l'instant T+1 (qui correspond à la sortie de la "nouvelle norme" de ces spécifications) le langage devient obsolète, simplement parce que, justement, il risque de ne plus supporter la nouvelle norme, soit cela oblige à modifier la norme du langage, ce qui n'est absolument pas envisageable lorsque l'on connait les différentes prescriptions que doivent respecter les normes ISO...
Ce n'est pas au langage à prendre ces spécifications externes en compte mais à une bibliothèque dédiée qui utilise, autant que faire se peut, la norme "la plus à jour" du langage pour implémenter la "dernière norme / spécification" du protocole ou du concept qu'elle s'est donné comme objectif de respecter.
Citation:
le but est d'avoir une seule maniere uniforme pour la couche technique et a mon avis ca facilitera pas mal de choses.
La couche technique doit regrouper ce qui est dépendant du langage et qui est à considérer comme le plus grand commun diviseur des différentes possibilités offertes par le langage.
Autrement dit, ce que tu trouve actuellement dans les espaces de noms std et std::tr1 plus les éventuels ajouts décidés par la nouvelle norme.
Tout ce qui est tiré d'autres protocoles / normes / spécifications n'a strictement rien à faire dans le langage, à moins qu'il n'y ait effectivement une unification réelle et remarquable de la manière de les utiliser (par exemple, ce qui a été fait au niveau des threads)
Citation:
d'un coté on a pas a se former a chaque fois sur d'autres librairies et d'autre part le switch d'une implémentation a une autre est trés aisé.
Qu'est ce qui n'est pas aisé dans le fait de passer de la bibliothèque "Alpha" à la bibliothèque machin chose :question:
Le fait que l'une ne fournit des fonctions dont tous les noms sont en minuscule alors que l'autre fournit des noms avec la première lettre en majuscule :question:
Le fait que l'on appellera dans l'une la fonction instance et dans l'autre la fonction getInstance :question:
Le fait qu'il faille, éventuellement invoquer une fonction init avant de faire quoi que ce soit :question:
Le fait que, dans une bibliothèque, un type donné soit nommé TTrucMachinChose et dans l'autre BiduleMachinChose :question:
Laisse moi rire, si tu n'est pas capable de t'adapter à des changements finalement aussi mineurs, tu as peut être loupé ta vocation :aie:
Citation:
combien de fois on se rend compte a la phase de test qu'une librairie ne tient pas la charge ou n'est pas performante ou peut etre manque d'une fonctionnalité pour une évolution.
Tu crois sans doute que c'est mieux dans d'autres langages :question:
Ou peut être crois tu réellement que le fait qu'il n'y ait, à ta connaissance, qu'un seul framework adapté à un besoin particulier limite ce risque :question:
Au contraire, j'aurais tendance à dire que plus tu as de bibliothèques aptes à fournir un service donné, plus tu as de chances d'en trouver une qui sera plus adaptée à une montée en charge ou à un besoin particulier, voire, à trouver la bibliothèque que tu pourra plus facilement adapter à tes besoins...
Citation:
finalement je suis pour une spécification de la couche technique , surtout que cette couche est très maitrisé actuellement alors pourquoi laisser cette jungle.
et j'entends par couche technique : database,xml,distribué,MOM, et autre librairie qui fait partie de la tuyauterie technique.
Ce n'est pas du ressort de la norme d'un langage...
Au mieux est-ce du ressort de la spécification d'une bibliothèque, et surement pas de celle qui est sensée servir de base minimale.
Citation:
la solution dans le monde C++ est de ne pas utiliser une librairie technique directement mais passer par notre couche d'abstraction oop ou generique pour éviter d'être couplé directement avec la librairie en question.
et c'est ce que j'ai pratiquer dans pas mal de projets C++ ou on se rend compte que c'est primordial vu qu'au dernier moment on se rend compte qu'il faut changer de librairie ou des fois proposer deux solutions alternatifs en depend du contexte (utilisation de librairie payante ou free par exemple).
et finalement je me demandais pourquoi chaque boite a besoin de sa propre abstraction, pourquoi ne pas avoir des specs pour la couche technique et éviter toute cette complexité.
Parce que les specs pour les domaines dont tu parle évoluent à leur propre rythme et font partie de standards sur lesquels le C++ n'a strictement aucune emprise...
Il est déjà difficile d'assurer le fait que C++ utilise la norme "officielle" du C dont il hérite pourtant, alors, comprend que cela devienne purement et simplement impossible au sujet de normes qui n'ont strictement rien à voir, surtout si l'on en vient à multiplier les normes à prendre en compte...
Toi qui plaide en faveur d'une simplification, tu obtiendrais justement l'effet strictement inverse, avec une norme qui devrait être mise à jour tous les trois mois, et pour laquelle les fournisseurs de compilateur auraient les plus grandes difficultés à assumer la mise en oeuvre, du moins, si tu veux éviter qu'une partie de la norme ne devienne trop rapidement obsolète.
Citation:
on sait que c'est bien d'avoir plusieurs implémentation pour la couche technique mais l'idéal est d'avoir une seule abstraction pour cette couche ça ne peut être que très bénéfique pour tout le monde.
Pour ce qui est suffisamment stable et implémenté de manière suffisamment homogène uniquement...