writes:
| Ivan Vecerina wrote:
| > "Alain Naigeon" wrote in message
| > news:4204038c$0$602$
| > > "Ivan Vecerina"
| > > a écrit dans
| > > le message news: cu0s5d$jn2$
| > >> On ne perd certainement pas en puissance et en
| > >> flexibilité en faisant du tout-object et
| > >> tout-dynamique. Cependant, même dans des applications
| > >> banales, ceci a un coût souvent rédhibitoire.
| > > C'est marrant, quand il s'est agi de passer de C à C++,
| > > on affirmait le contraire à ceux qui émettaient des
| > > doutes (ou qui ne voyaient pas ce qu'on gagnait en temps
| > > de mise au point et en sécurité)
| > L'orienté-objet introduit par le C++ n'a rien à voir avec
| > le dynamisme quasi-total offert par un language comme
| > SmallTalk.
| Oui et non. La notion de la résolution à l'execution y
| est. Mais comme Eiffel, il ne rénonce pas à la vérification
| statique des types, et je crois que Stroustrup a été
| influencé par Meyers pour certaines choses.
BS avait formulé dès 77-78 qu'il avait vraiment besoin de la
vérification statique des types et c'était à la base de ses
travaux avec « C with Classes. » Voir D&E.
Ce que je sais de source sûre, c'est qu'il avait décidé de ne
pas tomber dans la trappe, comme Eiffel, avec la
contravariance.
| (En revanche, je ne suis pas sûr qu'il n'a pas introduit
| l'héritage avant de connaître l'oeuvre de Meyers. Il
| faudrait lui démander.)
C'est simple : C++ est influencé directement par Simula et
Simula avait la notion d'héritage, qu'on retrouvera dans « C
with Classes ». Et c'était quand déjà ? Voir D&E.
kanze@gabi-soft.fr writes:
| Ivan Vecerina wrote:
| > "Alain Naigeon" <anaigeon@free.fr> wrote in message
| > news:4204038c$0$602$636a15ce@news.free.fr...
| > > "Ivan Vecerina"
| > > <INVALID_use_webform_instead@vecerina.com> a écrit dans
| > > le message news: cu0s5d$jn2$1@news.hispeed.ch...
| > >> On ne perd certainement pas en puissance et en
| > >> flexibilité en faisant du tout-object et
| > >> tout-dynamique. Cependant, même dans des applications
| > >> banales, ceci a un coût souvent rédhibitoire.
| > > C'est marrant, quand il s'est agi de passer de C à C++,
| > > on affirmait le contraire à ceux qui émettaient des
| > > doutes (ou qui ne voyaient pas ce qu'on gagnait en temps
| > > de mise au point et en sécurité)
| > L'orienté-objet introduit par le C++ n'a rien à voir avec
| > le dynamisme quasi-total offert par un language comme
| > SmallTalk.
| Oui et non. La notion de la résolution à l'execution y
| est. Mais comme Eiffel, il ne rénonce pas à la vérification
| statique des types, et je crois que Stroustrup a été
| influencé par Meyers pour certaines choses.
BS avait formulé dès 77-78 qu'il avait vraiment besoin de la
vérification statique des types et c'était à la base de ses
travaux avec « C with Classes. » Voir D&E.
Ce que je sais de source sûre, c'est qu'il avait décidé de ne
pas tomber dans la trappe, comme Eiffel, avec la
contravariance.
| (En revanche, je ne suis pas sûr qu'il n'a pas introduit
| l'héritage avant de connaître l'oeuvre de Meyers. Il
| faudrait lui démander.)
C'est simple : C++ est influencé directement par Simula et
Simula avait la notion d'héritage, qu'on retrouvera dans « C
with Classes ». Et c'était quand déjà ? Voir D&E.
writes:
| Ivan Vecerina wrote:
| > "Alain Naigeon" wrote in message
| > news:4204038c$0$602$
| > > "Ivan Vecerina"
| > > a écrit dans
| > > le message news: cu0s5d$jn2$
| > >> On ne perd certainement pas en puissance et en
| > >> flexibilité en faisant du tout-object et
| > >> tout-dynamique. Cependant, même dans des applications
| > >> banales, ceci a un coût souvent rédhibitoire.
| > > C'est marrant, quand il s'est agi de passer de C à C++,
| > > on affirmait le contraire à ceux qui émettaient des
| > > doutes (ou qui ne voyaient pas ce qu'on gagnait en temps
| > > de mise au point et en sécurité)
| > L'orienté-objet introduit par le C++ n'a rien à voir avec
| > le dynamisme quasi-total offert par un language comme
| > SmallTalk.
| Oui et non. La notion de la résolution à l'execution y
| est. Mais comme Eiffel, il ne rénonce pas à la vérification
| statique des types, et je crois que Stroustrup a été
| influencé par Meyers pour certaines choses.
BS avait formulé dès 77-78 qu'il avait vraiment besoin de la
vérification statique des types et c'était à la base de ses
travaux avec « C with Classes. » Voir D&E.
Ce que je sais de source sûre, c'est qu'il avait décidé de ne
pas tomber dans la trappe, comme Eiffel, avec la
contravariance.
| (En revanche, je ne suis pas sûr qu'il n'a pas introduit
| l'héritage avant de connaître l'oeuvre de Meyers. Il
| faudrait lui démander.)
C'est simple : C++ est influencé directement par Simula et
Simula avait la notion d'héritage, qu'on retrouvera dans « C
with Classes ». Et c'était quand déjà ? Voir D&E.
Jean-Marc Bourguet wrote:Olivier Azeau writes:Tout à fait, même si j'essaie de ne pas en abuser de ce
pattern un peu décrié ("pourquoi rajouter une méthode
'accept' qui permet de rajouter dynamiquement des méthodes
sur la hiérarchie plutôt que de rajouter directement ces
méthodes dans les classes de la hiérarchie ?")
Encore une attitude que je n'ai pas rencontrée. Je vais
finir par penser que mon environnement est meilleur que je
ne le pensais :-)
Quelle attitude ?
"pourquoi rajouter une méthode..."
Donc se poser la question de rajouter des méthodes à une hiérarchie de
classes par rapport à accepter des visiteurs sans se demander si on
n'alourdit pas l'ensemble de la conception ne te semble pas une pratique
intéressante ?
Jean-Marc Bourguet wrote:
Olivier Azeau <read.my.name.and.email.to.firstname@lastname.com> writes:
Tout à fait, même si j'essaie de ne pas en abuser de ce
pattern un peu décrié ("pourquoi rajouter une méthode
'accept' qui permet de rajouter dynamiquement des méthodes
sur la hiérarchie plutôt que de rajouter directement ces
méthodes dans les classes de la hiérarchie ?")
Encore une attitude que je n'ai pas rencontrée. Je vais
finir par penser que mon environnement est meilleur que je
ne le pensais :-)
Quelle attitude ?
"pourquoi rajouter une méthode..."
Donc se poser la question de rajouter des méthodes à une hiérarchie de
classes par rapport à accepter des visiteurs sans se demander si on
n'alourdit pas l'ensemble de la conception ne te semble pas une pratique
intéressante ?
Jean-Marc Bourguet wrote:Olivier Azeau writes:Tout à fait, même si j'essaie de ne pas en abuser de ce
pattern un peu décrié ("pourquoi rajouter une méthode
'accept' qui permet de rajouter dynamiquement des méthodes
sur la hiérarchie plutôt que de rajouter directement ces
méthodes dans les classes de la hiérarchie ?")
Encore une attitude que je n'ai pas rencontrée. Je vais
finir par penser que mon environnement est meilleur que je
ne le pensais :-)
Quelle attitude ?
"pourquoi rajouter une méthode..."
Donc se poser la question de rajouter des méthodes à une hiérarchie de
classes par rapport à accepter des visiteurs sans se demander si on
n'alourdit pas l'ensemble de la conception ne te semble pas une pratique
intéressante ?
La robotique est AMA un domaine en train de demander de plus
en plus de puissance de calcul. L'idée à long terme est bien
qu'on dise à un robot : Voici la CAO de la pièce, débrouille
toi.
La robotique est AMA un domaine en train de demander de plus
en plus de puissance de calcul. L'idée à long terme est bien
qu'on dise à un robot : Voici la CAO de la pièce, débrouille
toi.
La robotique est AMA un domaine en train de demander de plus
en plus de puissance de calcul. L'idée à long terme est bien
qu'on dise à un robot : Voici la CAO de la pièce, débrouille
toi.
wrote:
Regarde autour de toi. Pas seulement au boulot, où tu
travailles peut-être dans un domaine où la performance CPU
est importante, mais plus généralement. Les ordinateurs dans
ta voiture, par exemple.
Ce n'est par l'impression que m'ont donné les fournisseurs
automobiles que j'ai pu cotoyer. Surtout que l'optique ici est
que si l'on arrive à faire tourner un calculateur ESP sur un
système coûtant 1 centime moins cher, le bénéfice se chiffre
en millions d'euros.
Les serveurs de page web (ou il y a certainement quelques un
où la performance est importante, mais combien par rapport à
ceux qui ne font que de resservir des pages tout faites ou
gérer un chariot d'achat).
C'est là un domaine que je ne connais pas.
Les ordinateurs de l'état (je suppose que tu paies des
impots, ou que tu as un permit de conduire),
Pareil, même si on se prend à rêver qu'avant même de
fonctionner vite, ils soient capables de fonctionner sans se
planter...
les ordinateurs du boulanger (qui s'appelle pas
toujours par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des problèmes
de performances qu'ils avaient, sur le temps de traitement
admis d'un code barre, entre la recherche d'informations de
prix centralisées, la possibilité d'offre promotionelles
tordues...
kanze@gabi-soft.fr wrote:
Regarde autour de toi. Pas seulement au boulot, où tu
travailles peut-être dans un domaine où la performance CPU
est importante, mais plus généralement. Les ordinateurs dans
ta voiture, par exemple.
Ce n'est par l'impression que m'ont donné les fournisseurs
automobiles que j'ai pu cotoyer. Surtout que l'optique ici est
que si l'on arrive à faire tourner un calculateur ESP sur un
système coûtant 1 centime moins cher, le bénéfice se chiffre
en millions d'euros.
Les serveurs de page web (ou il y a certainement quelques un
où la performance est importante, mais combien par rapport à
ceux qui ne font que de resservir des pages tout faites ou
gérer un chariot d'achat).
C'est là un domaine que je ne connais pas.
Les ordinateurs de l'état (je suppose que tu paies des
impots, ou que tu as un permit de conduire),
Pareil, même si on se prend à rêver qu'avant même de
fonctionner vite, ils soient capables de fonctionner sans se
planter...
les ordinateurs du boulanger (qui s'appelle pas
toujours par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des problèmes
de performances qu'ils avaient, sur le temps de traitement
admis d'un code barre, entre la recherche d'informations de
prix centralisées, la possibilité d'offre promotionelles
tordues...
wrote:
Regarde autour de toi. Pas seulement au boulot, où tu
travailles peut-être dans un domaine où la performance CPU
est importante, mais plus généralement. Les ordinateurs dans
ta voiture, par exemple.
Ce n'est par l'impression que m'ont donné les fournisseurs
automobiles que j'ai pu cotoyer. Surtout que l'optique ici est
que si l'on arrive à faire tourner un calculateur ESP sur un
système coûtant 1 centime moins cher, le bénéfice se chiffre
en millions d'euros.
Les serveurs de page web (ou il y a certainement quelques un
où la performance est importante, mais combien par rapport à
ceux qui ne font que de resservir des pages tout faites ou
gérer un chariot d'achat).
C'est là un domaine que je ne connais pas.
Les ordinateurs de l'état (je suppose que tu paies des
impots, ou que tu as un permit de conduire),
Pareil, même si on se prend à rêver qu'avant même de
fonctionner vite, ils soient capables de fonctionner sans se
planter...
les ordinateurs du boulanger (qui s'appelle pas
toujours par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des problèmes
de performances qu'ils avaient, sur le temps de traitement
admis d'un code barre, entre la recherche d'informations de
prix centralisées, la possibilité d'offre promotionelles
tordues...
Olivier Azeau wrote:
J'ai réordonné mes réponses dans un sens plus logique :Je crois que tu as mis le doigt sur le point important :
avant de se demander si le boulot est fait assez vite, on se
demande toujours si le boulot est fait correctement, et une
optimisation est un risque de bug supplémentaire.
Je dirais plutôt qu'une optimisation est un risque de coût de
développement supplémentaire, et que ce développement sera
fait à vitesse moindre, pour éviter les bugs dans une zone un
peu plus dangereuse.Je ne connais pas du tout ce domaine mais rien que l'idée
de savoir que quelqu'un pourrait envisager de me vendre une
voiture quelques euros de moins en prenant le risque de
rajouter un bug suite à une optimisation de code me fait un
peu froid dans le dos...
Dans un logiciel vendu en grand nombre, le coût de
développement supplémentaire (unique) est probablement amorti
par rapport au coût de hard (par système). Par contre, je ne
pense pas que la fiabilité s'en ressente.
les ordinateurs du boulanger (qui s'appelle pas toujours
par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des
problèmes de performances qu'ils avaient, sur le temps de
traitement admis d'un code barre, entre la recherche
d'informations de prix centralisées, la possibilité d'offre
promotionelles tordues...
Le problème était-il vraiment un problème de perf CPU sur
l'ordinateur du boulanger ? Je pense que personne n'osera
incriminer des appels virtuels C++ (du moins pas avant
d'avoir envisagé 50 autres pistes) sur un système qui a
probablement plus de couches qu'un mille feuille et des I/O
dans tous les sens.
Je ne sais pas les détails, mais même si je pense qu'un appel
virtuel C++ n'est probablement pas en cause (mon pote bosse en
VB de mémoire), je ne répondais pas à "Le coût d'une fonction
virtuelle est en général acceptable" mais à "Sauf dans des
domaines particuliers, les performances ne comptent pas de nos
jours".
Olivier Azeau wrote:
J'ai réordonné mes réponses dans un sens plus logique :
Je crois que tu as mis le doigt sur le point important :
avant de se demander si le boulot est fait assez vite, on se
demande toujours si le boulot est fait correctement, et une
optimisation est un risque de bug supplémentaire.
Je dirais plutôt qu'une optimisation est un risque de coût de
développement supplémentaire, et que ce développement sera
fait à vitesse moindre, pour éviter les bugs dans une zone un
peu plus dangereuse.
Je ne connais pas du tout ce domaine mais rien que l'idée
de savoir que quelqu'un pourrait envisager de me vendre une
voiture quelques euros de moins en prenant le risque de
rajouter un bug suite à une optimisation de code me fait un
peu froid dans le dos...
Dans un logiciel vendu en grand nombre, le coût de
développement supplémentaire (unique) est probablement amorti
par rapport au coût de hard (par système). Par contre, je ne
pense pas que la fiabilité s'en ressente.
les ordinateurs du boulanger (qui s'appelle pas toujours
par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des
problèmes de performances qu'ils avaient, sur le temps de
traitement admis d'un code barre, entre la recherche
d'informations de prix centralisées, la possibilité d'offre
promotionelles tordues...
Le problème était-il vraiment un problème de perf CPU sur
l'ordinateur du boulanger ? Je pense que personne n'osera
incriminer des appels virtuels C++ (du moins pas avant
d'avoir envisagé 50 autres pistes) sur un système qui a
probablement plus de couches qu'un mille feuille et des I/O
dans tous les sens.
Je ne sais pas les détails, mais même si je pense qu'un appel
virtuel C++ n'est probablement pas en cause (mon pote bosse en
VB de mémoire), je ne répondais pas à "Le coût d'une fonction
virtuelle est en général acceptable" mais à "Sauf dans des
domaines particuliers, les performances ne comptent pas de nos
jours".
Olivier Azeau wrote:
J'ai réordonné mes réponses dans un sens plus logique :Je crois que tu as mis le doigt sur le point important :
avant de se demander si le boulot est fait assez vite, on se
demande toujours si le boulot est fait correctement, et une
optimisation est un risque de bug supplémentaire.
Je dirais plutôt qu'une optimisation est un risque de coût de
développement supplémentaire, et que ce développement sera
fait à vitesse moindre, pour éviter les bugs dans une zone un
peu plus dangereuse.Je ne connais pas du tout ce domaine mais rien que l'idée
de savoir que quelqu'un pourrait envisager de me vendre une
voiture quelques euros de moins en prenant le risque de
rajouter un bug suite à une optimisation de code me fait un
peu froid dans le dos...
Dans un logiciel vendu en grand nombre, le coût de
développement supplémentaire (unique) est probablement amorti
par rapport au coût de hard (par système). Par contre, je ne
pense pas que la fiabilité s'en ressente.
les ordinateurs du boulanger (qui s'appelle pas toujours
par le nom d'ordinateur), ou du grande surface.
Un ami travaillant dans le domaine m'a rapporté des
problèmes de performances qu'ils avaient, sur le temps de
traitement admis d'un code barre, entre la recherche
d'informations de prix centralisées, la possibilité d'offre
promotionelles tordues...
Le problème était-il vraiment un problème de perf CPU sur
l'ordinateur du boulanger ? Je pense que personne n'osera
incriminer des appels virtuels C++ (du moins pas avant
d'avoir envisagé 50 autres pistes) sur un système qui a
probablement plus de couches qu'un mille feuille et des I/O
dans tous les sens.
Je ne sais pas les détails, mais même si je pense qu'un appel
virtuel C++ n'est probablement pas en cause (mon pote bosse en
VB de mémoire), je ne répondais pas à "Le coût d'une fonction
virtuelle est en général acceptable" mais à "Sauf dans des
domaines particuliers, les performances ne comptent pas de nos
jours".
wrote in message
news:Mais ce n'était pas mon propos. Tout ce que j'ai dit, c'est
que la plupart des programmeurs n'en sont pas directement
concernés par la différence en vitesse entre un appel virtuel
et un appel non-virtuel.
Vraiment? Je trouve que c'est là une interprétation bien
restrictive et partiale de ce que tu as écrit:
wrote in message
news:Si tu régardes autour de toi, tu verras que la plupart des
programmes font bien peu de choses, en somme. En revanche,
ils communiquent ce qu'ils ont fait (accès réseau) et ils le
sauvent (écriture disque). Et que dans la pratique, ce sont
les deux choses qui rallentire le plus.
A mon humble avis, il y a un monde entre "n'être affecté que
par les entrées-sorties" et "ne pas être directement concerné
par la différence entre un appel virtuel et un appel
non-virtuel".
Je ne pense pas que ce soit par malhonnêteté. Mais je suis
d'avis que tu devrais faire preuve de plus de cohérence, de
nuance, et sans doute de modération dans tes propos.
<kanze@gabi-soft.fr> wrote in message
news:1107780593.302527.4960@g14g2000cwa.googlegroups.com...
Mais ce n'était pas mon propos. Tout ce que j'ai dit, c'est
que la plupart des programmeurs n'en sont pas directement
concernés par la différence en vitesse entre un appel virtuel
et un appel non-virtuel.
Vraiment? Je trouve que c'est là une interprétation bien
restrictive et partiale de ce que tu as écrit:
<kanze@gabi-soft.fr> wrote in message
news:1107507856.068380.121410@l41g2000cwc.googlegroups.com...
Si tu régardes autour de toi, tu verras que la plupart des
programmes font bien peu de choses, en somme. En revanche,
ils communiquent ce qu'ils ont fait (accès réseau) et ils le
sauvent (écriture disque). Et que dans la pratique, ce sont
les deux choses qui rallentire le plus.
A mon humble avis, il y a un monde entre "n'être affecté que
par les entrées-sorties" et "ne pas être directement concerné
par la différence entre un appel virtuel et un appel
non-virtuel".
Je ne pense pas que ce soit par malhonnêteté. Mais je suis
d'avis que tu devrais faire preuve de plus de cohérence, de
nuance, et sans doute de modération dans tes propos.
wrote in message
news:Mais ce n'était pas mon propos. Tout ce que j'ai dit, c'est
que la plupart des programmeurs n'en sont pas directement
concernés par la différence en vitesse entre un appel virtuel
et un appel non-virtuel.
Vraiment? Je trouve que c'est là une interprétation bien
restrictive et partiale de ce que tu as écrit:
wrote in message
news:Si tu régardes autour de toi, tu verras que la plupart des
programmes font bien peu de choses, en somme. En revanche,
ils communiquent ce qu'ils ont fait (accès réseau) et ils le
sauvent (écriture disque). Et que dans la pratique, ce sont
les deux choses qui rallentire le plus.
A mon humble avis, il y a un monde entre "n'être affecté que
par les entrées-sorties" et "ne pas être directement concerné
par la différence entre un appel virtuel et un appel
non-virtuel".
Je ne pense pas que ce soit par malhonnêteté. Mais je suis
d'avis que tu devrais faire preuve de plus de cohérence, de
nuance, et sans doute de modération dans tes propos.
writes:
[...]
| > Je ne pense pas que ce soit par malhonnêteté. Mais je suis
| > d'avis que tu devrais faire preuve de plus de cohérence,
| > de nuance, et sans doute de modération dans tes propos.
| Le problème, c'est qu'à chaque coup, je réagis à un posting
| donné.
émotif ?
[...]
| Maintenant, je ne veux pas que ce soit déformer pour dire
| que je pense que la performance n'est jamais importante. La
attention au fanstisme modérateur quand même.
kanze@gabi-soft.fr writes:
[...]
| > Je ne pense pas que ce soit par malhonnêteté. Mais je suis
| > d'avis que tu devrais faire preuve de plus de cohérence,
| > de nuance, et sans doute de modération dans tes propos.
| Le problème, c'est qu'à chaque coup, je réagis à un posting
| donné.
émotif ?
[...]
| Maintenant, je ne veux pas que ce soit déformer pour dire
| que je pense que la performance n'est jamais importante. La
attention au fanstisme modérateur quand même.
writes:
[...]
| > Je ne pense pas que ce soit par malhonnêteté. Mais je suis
| > d'avis que tu devrais faire preuve de plus de cohérence,
| > de nuance, et sans doute de modération dans tes propos.
| Le problème, c'est qu'à chaque coup, je réagis à un posting
| donné.
émotif ?
[...]
| Maintenant, je ne veux pas que ce soit déformer pour dire
| que je pense que la performance n'est jamais importante. La
attention au fanstisme modérateur quand même.
J'ai lu avec grand intérêt l'article "Concepts for C++0x" mentionné dans
un thread récent.
Habituellement, je ne m'intéresse pas aux évolutions du langage car
elles ne me concernent qu'à un relativement long terme, mais là, j'ai
l'impression qu'un mouvement de fond relatif aux paradygmes du C++ prend
une certaine ampleur.
Et ce mouvement m'amène à quelques interrogations.
[SNIP l'exemple]
Une telle approche est actuellement plutôt prisée par des personnes qui
connaissent bien le langage et est donc globalement plutôt minoritaire.
Parmi les raisons de cette situation je vois :
- la forte présence de langages comme Java ou C# qui ne proposent pas
cette approche (les versions "Generic" restent anecdotiques) et donc le
grand nombre de personnes qui font du C++ comme ils font du Java
- le faible support des templates par certains compilateurs jusqu'à une
période récente (cf les interrogations récurrentes relatives au support
des templates dans VC6)
- un support méthodologique peu adapté (UML se prête beaucoup plus à
décrire des héritages que de paramétrages)
- une complexité de mise au point d'une approche à base de templates
(typage structurel, définitions statiques, ...)
Sur ce, je découvre les "concepts" (dont je ne pense pas avoir saisi le
dixième des utilisations et implications) qui me laissent supposer que,
dans un avenir plus ou moins proche, on pourrait écrire les choses de
manière plus explicites.
[SNIP le long exemple]
Pour ceux qui auront eu le courage de lire jusqu'ici, j'aimerais savoir
s'ils pensent :
- que je n'ai rien compris aux "concepts" ?
- que ces notions vont avoir un impact technique majeur sur l'écriture
de code en C++ ?
- que ces notions vont avoir un impact sociologique majeur sur le
développement en C++ ?
Je suis plus particulièrement intéressé par l'aspect sociologique des
choses.
J'ai l'impression d'être face à une évolution du même ordre de grandeur
que le passage du C au C++.
Pour tout dire, j'ai même l'impression que le terme C++ n'est conservé
que pour des raisons marketing (la "marque" est déja connue, appréciée,
possède une base de consommateurs, ...)
Il est toujours possible d'écrire du C avec un compilateur C++ mais, sur
une période d'environ 10 ans (en gros les années 90) on est passé d'une
approche majoritaire en termes de structures/procédures a une approche
majoritaire classes/héritages/associations.
Cela a impliqué un changement de principes de modélisation, un
changement de techniques d'écriture de code mais surtout un changement
de mentalité.
Et quand je regarde les efforts qu'il a fallu déployer pour que
l'ensemble des intervenants en arrive à penser les développements plus
ou moins de la même manière, j'ai un peu l'impression, en voyant ces
nouvelles notions qui se profilent à l'horizon, que nous ne sommes pas
au bout de nos peines...
J'ai lu avec grand intérêt l'article "Concepts for C++0x" mentionné dans
un thread récent.
Habituellement, je ne m'intéresse pas aux évolutions du langage car
elles ne me concernent qu'à un relativement long terme, mais là, j'ai
l'impression qu'un mouvement de fond relatif aux paradygmes du C++ prend
une certaine ampleur.
Et ce mouvement m'amène à quelques interrogations.
[SNIP l'exemple]
Une telle approche est actuellement plutôt prisée par des personnes qui
connaissent bien le langage et est donc globalement plutôt minoritaire.
Parmi les raisons de cette situation je vois :
- la forte présence de langages comme Java ou C# qui ne proposent pas
cette approche (les versions "Generic" restent anecdotiques) et donc le
grand nombre de personnes qui font du C++ comme ils font du Java
- le faible support des templates par certains compilateurs jusqu'à une
période récente (cf les interrogations récurrentes relatives au support
des templates dans VC6)
- un support méthodologique peu adapté (UML se prête beaucoup plus à
décrire des héritages que de paramétrages)
- une complexité de mise au point d'une approche à base de templates
(typage structurel, définitions statiques, ...)
Sur ce, je découvre les "concepts" (dont je ne pense pas avoir saisi le
dixième des utilisations et implications) qui me laissent supposer que,
dans un avenir plus ou moins proche, on pourrait écrire les choses de
manière plus explicites.
[SNIP le long exemple]
Pour ceux qui auront eu le courage de lire jusqu'ici, j'aimerais savoir
s'ils pensent :
- que je n'ai rien compris aux "concepts" ?
- que ces notions vont avoir un impact technique majeur sur l'écriture
de code en C++ ?
- que ces notions vont avoir un impact sociologique majeur sur le
développement en C++ ?
Je suis plus particulièrement intéressé par l'aspect sociologique des
choses.
J'ai l'impression d'être face à une évolution du même ordre de grandeur
que le passage du C au C++.
Pour tout dire, j'ai même l'impression que le terme C++ n'est conservé
que pour des raisons marketing (la "marque" est déja connue, appréciée,
possède une base de consommateurs, ...)
Il est toujours possible d'écrire du C avec un compilateur C++ mais, sur
une période d'environ 10 ans (en gros les années 90) on est passé d'une
approche majoritaire en termes de structures/procédures a une approche
majoritaire classes/héritages/associations.
Cela a impliqué un changement de principes de modélisation, un
changement de techniques d'écriture de code mais surtout un changement
de mentalité.
Et quand je regarde les efforts qu'il a fallu déployer pour que
l'ensemble des intervenants en arrive à penser les développements plus
ou moins de la même manière, j'ai un peu l'impression, en voyant ces
nouvelles notions qui se profilent à l'horizon, que nous ne sommes pas
au bout de nos peines...
J'ai lu avec grand intérêt l'article "Concepts for C++0x" mentionné dans
un thread récent.
Habituellement, je ne m'intéresse pas aux évolutions du langage car
elles ne me concernent qu'à un relativement long terme, mais là, j'ai
l'impression qu'un mouvement de fond relatif aux paradygmes du C++ prend
une certaine ampleur.
Et ce mouvement m'amène à quelques interrogations.
[SNIP l'exemple]
Une telle approche est actuellement plutôt prisée par des personnes qui
connaissent bien le langage et est donc globalement plutôt minoritaire.
Parmi les raisons de cette situation je vois :
- la forte présence de langages comme Java ou C# qui ne proposent pas
cette approche (les versions "Generic" restent anecdotiques) et donc le
grand nombre de personnes qui font du C++ comme ils font du Java
- le faible support des templates par certains compilateurs jusqu'à une
période récente (cf les interrogations récurrentes relatives au support
des templates dans VC6)
- un support méthodologique peu adapté (UML se prête beaucoup plus à
décrire des héritages que de paramétrages)
- une complexité de mise au point d'une approche à base de templates
(typage structurel, définitions statiques, ...)
Sur ce, je découvre les "concepts" (dont je ne pense pas avoir saisi le
dixième des utilisations et implications) qui me laissent supposer que,
dans un avenir plus ou moins proche, on pourrait écrire les choses de
manière plus explicites.
[SNIP le long exemple]
Pour ceux qui auront eu le courage de lire jusqu'ici, j'aimerais savoir
s'ils pensent :
- que je n'ai rien compris aux "concepts" ?
- que ces notions vont avoir un impact technique majeur sur l'écriture
de code en C++ ?
- que ces notions vont avoir un impact sociologique majeur sur le
développement en C++ ?
Je suis plus particulièrement intéressé par l'aspect sociologique des
choses.
J'ai l'impression d'être face à une évolution du même ordre de grandeur
que le passage du C au C++.
Pour tout dire, j'ai même l'impression que le terme C++ n'est conservé
que pour des raisons marketing (la "marque" est déja connue, appréciée,
possède une base de consommateurs, ...)
Il est toujours possible d'écrire du C avec un compilateur C++ mais, sur
une période d'environ 10 ans (en gros les années 90) on est passé d'une
approche majoritaire en termes de structures/procédures a une approche
majoritaire classes/héritages/associations.
Cela a impliqué un changement de principes de modélisation, un
changement de techniques d'écriture de code mais surtout un changement
de mentalité.
Et quand je regarde les efforts qu'il a fallu déployer pour que
l'ensemble des intervenants en arrive à penser les développements plus
ou moins de la même manière, j'ai un peu l'impression, en voyant ces
nouvelles notions qui se profilent à l'horizon, que nous ne sommes pas
au bout de nos peines...