OVH Cloud OVH Cloud

Editer du C++ template avec un editeur de texte

138 réponses
Avatar
Marc Boyer
Bonjour,

une petite question sur vos pratiques d'édition.

Pour écrire la définition de code de classe template, j'aimerais
bien séparer l'interface de l'implémentation.

Mais ça devient très lourd, du genre

template <class T>
typename X<T>::iterator X<T>::first_with(typename X<T>::cond& c){
....
}

alors que si je laisse dans la déclaration de la classe, ça donne
iterator first_with(cond& c);

Je m'en sort à grands coups de
#define X_TEMPLATE template<class T>
#define X X<T>
#define iterator typename X<T>::iterator
#define cond typename X<T>::cond

mais c'est lourd.

Vous faites comment vous ? Un super éditeur/IDE qui cache tout le sucre ?


Et sinon, pourquoi les classes (enfin, mon compilo) ne permettent elle pas
de faire

class X {
void foo(); // Déclaration
...
void foo(){...}; // Implementation
}

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.

10 réponses

Avatar
Marc Boyer
Christophe Lephay wrote:
drkm wrote:
Arnaud Meurgues writes:
J'ai l'impression que dans les
écoles d'info, seul compte le développement au sens pissage de code,
et rien n'est dit sur le test (encore moins sur l'observabilité de
l'état interne).


Je confirme, au niveau de mon expérience personnelle.


En même temps, faut pas s'attendre à ce qu'un étudiant qui sort de l'école
soit expert en quoique ce soit (bien qu'eux mêmes pensent assez souvent le
contraire), et pas qu'en informatique.

C'est vrai aussi que dans ma propre expérience, les profs eux mêmes
n'etaient juste que des ex-étudiants, c'est à dire que ce qu'ils savaient du
domaine se résumait à ce qu'eux-mêmes avaient appris à l'école. En France,
le système fait qu'il est complexe pour un enseignant de pouvoir s'exercer
aussi dans le monde de l'entreprise.


Le problème pour l'enseignement supérieur est que la compétition
pour l'entrée est acharnée, et qu'une expérience industrielle conséquente
(2-3 ans) fait perdre pieds avec l'actualité de la recherche et limite
donc les chances d'accès à un poste.

Une fois en place, les problèmes pour partir dans le privé sont:
- pb d'annuité de retraite
- pb qu'il faut des années pour monter un cours, et que si on
part, quelqu'un d'autre le prendra, et que rien ne garanti
qu'on vous le rendra
- pb d'age: quelle industriel va prendre un débutant de 35 ans ?
- pb de carrière: ces années dans le privé seront difficilement
valorisable en terme de carrière

Ce point reste à vérifier. Dans tous les cas, la
majorité des enseignants que j'ai pu rencontrer n'avaient jamais pratiqué en
milieu "professionnel" (j'ai passé une quinzaine d'années dans
l'enseignement - dans le privé - ce qui a fait que je n'étais pas soumis aux
mêmes contraintes).


Tout à fait.
Heureusement, on a les stages des élèves, les contrats de recherche,
et les forums.

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.



Avatar
Christophe Lephay
Marc Boyer wrote:
IDE Integrated Dev. Env. non ?


Oui. Mais il y a, j'ai l'impression, autant d'interprétations que
d'utilisateurs. Je n'en ai moi-même pas une idée très précise, si ce
n'est que ça me fait vaguement penser à VC++ ou Eclispe.


Oui, ce sont les plus connus.


Mon intérprétation de l'IDE, c'est que c'était bel et bien comme un shell
sauf que le shell en question était un éditeur de code. L'intéret est
significatif sur un OS monotâche comme ms-dos.

Chris



Avatar
Christophe Lephay
wrote:
Dans les shells d'Unix, il y a aussi pas mal qui ne sert pas
directement au développement. Tout ce que j'ai essayé à dire, c'est
que selon la définition qui se base strictement sur les mots anglais,
un shell sous Unix est un IDE.

En fait, le but de mes propos, c'était bien de dire qu'en général,
quand on parle d'un IDE, on veut dire plus que simplement ce que
signifie les mots anglais, pris au pied de la lettre.


Oui, un peu comme intelligence artificielle qui ne veut plus dire que le
système est réellement intelligent mais que certains paradigmes ont été mis
en oeuvre.

Chris

Avatar
K. Ahausse
"K. Ahausse" a écrit dans le message
de news:419dd369$0$17555$



Mais une metaphoriser s'appliquant, aux petits projets, aux grands, aux
nouveaux 'from scratch' et aux projets déjà établis, je ne sais pas si
cela

existe.



Gloups ? metaphoriser ??

Il faut corriger par : "Mais une *méthode* s'appliquant ...."

Avatar
Arnaud Meurgues
Marc Boyer wrote:

Le problème pour l'enseignement supérieur est que la compétition
pour l'entrée est acharnée, et qu'une expérience industrielle conséquente
(2-3 ans) fait perdre pieds avec l'actualité de la recherche et limite
donc les chances d'accès à un poste.


Là, tu ne parles que de l'université. L'enseignement supérieur ne s'y
limite pas.

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
Arnaud Meurgues
Marc Boyer wrote:

Ceci dit, mon expérience des formations d'info est qu'on
ne s'y limite pas au pissage de code, et qu'on insiste beaucoup
aussi sur la conception.


Oui, à la rigueur (et peut-être plus ces dernières années).

L'instrumentation du test est en effet peu abordée, mais il
faut dire que les outils ne sont pas légion à ma connaissance.


Ben, faire des tests unitaires ne nécessite guère d'outils.

--
Arnaud
(Supprimez les geneurs pour me répondre)

Avatar
Arnaud Meurgues
Jean-Marc Bourguet wrote:

Ce qui est intéressant, c'est que le prix du développement
jusqu'au déployement n'était pas plus cher. Faire correctement ne
coûte pas plus cher au début, et nettement moins cher à la
longue. Mais il y a encore beaucoup de boîtes qui ne l'ont pas
compris.
Ce n'est pas plus cher, mais est-ce que c'est plus long ?

Pour arriver a quoi?



À ce dont parlait James.

--
Arnaud
(Supprimez les geneurs pour me répondre)



Avatar
Jean-Marc Bourguet
Arnaud Meurgues writes:

Jean-Marc Bourguet wrote:

Ce qui est intéressant, c'est que le prix du développement
jusqu'au déployement n'était pas plus cher. Faire correctement ne
coûte pas plus cher au début, et nettement moins cher à la
longue. Mais il y a encore beaucoup de boîtes qui ne l'ont pas
compris.
Ce n'est pas plus cher, mais est-ce que c'est plus long ?

Pour arriver a quoi?



À ce dont parlait James.


Au deployement dans quel etat?

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Avatar
Marc Boyer
Arnaud Meurgues wrote:
Marc Boyer wrote:

Le problème pour l'enseignement supérieur est que la compétition
pour l'entrée est acharnée, et qu'une expérience industrielle conséquente
(2-3 ans) fait perdre pieds avec l'actualité de la recherche et limite
donc les chances d'accès à un poste.


Là, tu ne parles que de l'université. L'enseignement supérieur ne s'y
limite pas.


Université + grandes écoles dépendant du ministère de l'éducation
nationale. Ca fait quand même le gros morceau.
En fait, celles qui ne s'intéressent pas au dossier recherche de
leurs candidats sont assez rares.

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.


Avatar
Marc Boyer
Arnaud Meurgues wrote:
Marc Boyer wrote:
Ceci dit, mon expérience des formations d'info est qu'on
ne s'y limite pas au pissage de code, et qu'on insiste beaucoup
aussi sur la conception.


Oui, à la rigueur (et peut-être plus ces dernières années).


Je souligne que j'ai parlé de "mon expérience". J'ai
peut-être eut de la chance.

L'instrumentation du test est en effet peu abordée, mais il
faut dire que les outils ne sont pas légion à ma connaissance.


Ben, faire des tests unitaires ne nécessite guère d'outils.


Heuh, ben, pour avoir les taux de couverture quand même, non ?

Bon, on peut laisser tomber ça, mais instrumenter les tests
unitaires, ça demande quand même un template qui va bien,
un peu de préprocesseur pour pouvoir tester que le résultat
d'une fonction est égal au résultat attendu, ou que la bonne
exception est bien lancée.

Genre:
#define COMPARE_VALUE(X,Y) compareValues(X,Y,__FILE__,__LINE__,#X,#Y)
template <class T, class U>
void compareValues(const T Expr, const U Res, const char * file, int line,
char* sExpr, char* sRes){
if ( Expr == Res ) {
cout<<"Test: "<<sExpr<<" == "<<sRes<<" ttt- OK -n";
} else {
cerr<<"WARNING: "<<file<<'('<<line<<"): Test "
<<sExpr<<" == "<<sRes<<" failed tt + KO +n";
cerr<<" "<<sExpr<<"= "<<Expr<<endl;
cerr<<" "<<sRes<<"= "<<Res<<endl;
}
}

Et en C, sans templates, c'est encore plus lourd.

Oui au fait, vous utilisez quoi pour vos tests unitaires ?

Marc Boyer
--
Je ne respecte plus le code de la route à vélo depuis une double fracture
due au fait que j'étais le seul à le respecter.