OVH Cloud OVH Cloud

recherche d'un element suivant la valeur d'un des champs

184 réponses
Avatar
Alain Cabiran
Bonjour,

j'ai cherché, testé, retesté, essayé, réessayé et n'ai pas trouvé
de solution à ce problème

assume using namespace std :-)

imaginons avoir :

class objet
{
public:
objet(int valeur) : monchamps(valeur) { } ;
int getChamps() const { return monchamp; } ;
private:
int monchamps();
};

un conteneur : list<objet> liste;
son iterateur : list<objet>::iterator it;

une valeur prédéfinie : int valeur = 5;

est-ce qu'il est possible, en utilisant les adaptateurs stl,
d'avoir l'équivalent de :

cherche dans liste le premier élément avec la condition
it->monchamp == valeur ?

j'ai commencé par :

it = find_if(liste.begin(), liste.end(), TOTO);

ensuite j'ai cherché TOTO : bind2nd(equal_to<int>(), valeur)

et là ... je sais pas, j'ai essayé de placer :

mem_fun_ref(&objet::getChamps) mais je n'ai pas trouvé où le mettre
et même si je peux seulement l'y mettre.

quelqu'un a une idée ?

Alain Cabiran

ps: il manque évidemment le constructeur de copie, les operateurs de
comparaisons, ... dans la classe, c'est juste pour faire plus court.

10 réponses

Avatar
kanze
"Michel Michaud" wrote in message
news:<hsI8d.11156$...
Dans le message 4162572b$0$8210$,
Michel Michaud wrote:

Tant mieux si tu peux t'exprimer en anglais aussi bien qu'en
français et que ça permet à plus de gens concernés de comprendre
ton code. Il faut simplement réaliser que ce n'est pas automatique.


Il n'est pas nécessaire non plus de s'exprimer aussi bien en anglais
qu'en français pour donner des noms anglais à ses identificateurs
(et heureusement).


Dans ce cas, tu risques d'avoir des noms moins bien choisis. Je ne
sais pas si le coût est justifiable... Un anglophone qui lira tes noms
ne pourra pas deviner ce que tu aurais dû écrire. Si tu écris en
français, il pourra au moins consulter un dictionnaire ou consulter un
francophone pour essayer de comprendre ce que tu voulais dire.


Le problème n'est pas quand il ne comprend pas. Le problème, c'est quand
il croit comprendre, mais ce n'est pas ce qu'on voulait dire.

Je me rappelle toujours mon premier projet « internationnal ». Une
collaboration entre une équipe française et une équipe allemande. Avec
langue officielle du projet l'anglais, évidemment. À la première
réunion, je n'ai rien compris de ce qu'ils disaient. Alors, je les ai
démandé ; toutes juraient d'avour bien compris, mais quand je démandais
les détails, les français avaient compris quelque chose de bien
différent que les allemands.

Pour moi, le choix des identificateurs et l'écriture judicieuse des
commentaires est de première importance dans du code. Peu de
programmeurs le font assez bien en général. Le faire dans une autre
langue que la sienne est encore plus difficile. Je n'ai pas dit
impossible...


N'empèche que pour beaucoup de gens, c'est quasiment nécessaire. Pour un
français en France, passons, mais tout le monde qui travaille en France
n'est pas français de souche. Et les gens y arrivent. Pas tous, mais
curieusement, j'ai remarqué que souvent, les gens incapable de bien
apprendre une langue étrangère n'étaient souvent pas très compétent en
informatique non plus. Il y a des exceptions, mais d'après mon
expérience, elles sont plutôt rares.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Avatar
kanze
"Alain Naigeon" wrote in message
news:<41633c21$0$5641$...
"Fabien LE LEZ" a écrit dans le message news:


On Tue, 5 Oct 2004 23:46:39 +0200, "Alain Naigeon" :

"doivent" sonne un peu creux. S'ils le lisent c'est qu'ils y
trouvent un intérêt.


Tu n'as donc jamais été forcé de continuer un projet initié par
quelqu'un d'autre ?


Si, hélas, car même en comprenant la langue, j'ai détesté ça.
Au delà du vocabulaire, il y a la tournure d'esprit personnelle,
et même culturelle : crois-tu qu'un Allemand, qui postfixe tous
les verbes du matin au soir, va organiser son code comme
toi et moi ? ;-)


La plus grande différence que j'ai constaté dans le code, c'était
l'utilisation de l'espace blanc -- les allemands tendent à écrire le
code avec beaucoup moins d'espaces blancs que les français.

Sinon, il y a souvent de grandes différences dans l'organisation du
travail. Mais curieusement, très peu dans l'organisation du code.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Avatar
Arnaud Meurgues
Michel Michaud wrote:

Il n'est pas nécessaire non plus de s'exprimer aussi bien en anglais
qu'en français pour donner des noms anglais à ses identificateurs
(et heureusement).


Dans ce cas, tu risques d'avoir des noms moins bien choisis. Je


Peut-être. Mais pour un non francophone, il vaut mieux un nom pas très
bien choisi qu'un nom incompréhensible, parce que dans une langue qu'il
ne connaît pas.

ne sais pas si le coût est justifiable... Un anglophone qui lira
tes noms ne pourra pas deviner ce que tu aurais dû écrire. Si tu


Faut pas pousser non plus. Le niveau d'anglais nécessaire pour choisir
des noms explicites n'est tout de même pas celui d'une langue
maternelle. La plupart du temps, on reste cantonné à un vocabulaire
technique qui ne nécessite pas de savoir lire Shakespeare dans le texte
("oldValue", "finalResult", "DiplayVisitor", etc.).

écris en français, il pourra au moins consulter un dictionnaire
ou consulter un francophone pour essayer de comprendre ce que tu
voulais dire.


Un dictionnaire a peu de chance de donner les nuances techniques du
terme employé et l'on n'est pas obligé d'avoir un francophone sous la main.

Pour moi, le choix des identificateurs et l'écriture judicieuse
des commentaires est de première importance dans du code. Peu de
programmeurs le font assez bien en général. Le faire dans une
autre langue que la sienne est encore plus difficile. Je n'ai pas
dit impossible...


Peut-être. Mais de toute façon, québecois et français n'ont pas la même
optique dans ce domaine. Pour les premiers, il est important de ne pas
se laisser phagocyter par l'anglais ; pour les seconds, il est important
de s'ouvrir au marché européen dont la seule langue commune est
l'anglais. Il y aura donc des choix "politiques" pour la langue employée
dans les deux cas qui se superposeront à de simples arguments techniques
et qui, dans la plupart des cas, domineront.

Actuellement, en France, il est de plus en plus fréquent d'avoir des
équipes internationales à cause de l'ouverture européenne du marché de
l'emploi et de l'européannisation de l'industrie.
Le Québec n'a pas ce soucis là et a au contraire le soucis de protéger
sa culture (en particulier sa langue) de la pression anglo-saxonne.

À mon avis, ces facteurs prévalent sur les aspects purement techniques
de "meilleurs lisibilité des identificateurs".

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


Avatar
Arnaud Meurgues
drkm wrote:

Il n'est pas question d'imposer la domination de telle ou telle
langue. Mais de faciliter les échanges, la communication, en pensant
qu'à terme il y aura peut-être plus de développeurs qui devront lire
le code que la seule équipe actuelle de 3 francophones.


C'est pourquoi ça dépend du projet.
Si l'on sait que le programme ne doit être lu que par des français, il
n'y a pas de raison d'utiliser l'anglais.

Dans le cas que je citais d'un programme pour la défense nationale, on
est certain que seuls des français devront lire le code. Et l'argument
d'une possible européanisation de la défense ne change pas le problème.
Cette denière n'arrivera pas dans les cinq années à venir et un besoin
éventuel dans dix ans est largement compensé par un besoin certain
pendant cinq ans.


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

Avatar
Arnaud Meurgues
Fabien LE LEZ wrote:

[*] Je précise que je préfère les 52 caractères de l'alphabet utilisé
en anglais, aux milliers de kanjis du chinois. Ben oui, si on laisse
tomber l'anglais, la langue "forte" risque fort d'être le chinois, vu
la population chinoise...


Rassures-toi, l'indi est une langue alphabétique, et non idéogramatique. ;-)

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

Avatar
kanze
"Michel Michaud" wrote in message
news:<jto8d.7114$...

[...]
On a déjà eu cette discussion souvent : il faut que le code et les
commentaires soient précis et exacts. Au maximum. S'il est permis de
croire qu'un programmeur doit connaître l'anglais de façon
fonctionnelle, on ne peut lui demander de maîtriser cette autre langue
au point de pouvoir s'exprimer aussi parfaitement avec elle.


Je suis d'accord, mais il y a un autre aspect à considérer. Si moi, Gaby
et Falke faisons un projet ensemble, on ne va pas écrire les
commentaires en trois langues différentes, avec l'excuse que chacun de
nous ait une langue maternelle différente. Et dans la pratique, on a
souvent des membres de l'équipe qui maîtrise la langue générale bien moi
que nous trois maîtrisons le français -- est-ce qu'un ingenieur marocain
doit écrire les commentaires en arabe, même s'il maîtrise le français
(et l'anglais) parfaitement, et s'en sert normalement dans ses
discussions avec la reste de l'équipe ?

Le problème est plus ardu quand l'étranger dans l'équipe maîtrise moins
bien la langue. D'une côté, je dirai qu'on ne doit pas l'embaucher -- la
communication est trop importante. Mais je l'ai bien expérimenté -- des
personnes (un turc, un hongrois et un tchéc, au moins) qui ne maîtrisait
ni l'anglais, ni la langue locale (l'allemand, dans les trois cas). Ils
commentaient comme ils pouvaient, en anglais ou en allemand, et on se
debrouillait. À mon avis, la solution la meilleur aurait été qu'ils
commentent dans leur langue d'origine, et qu'on paie un bon traducteur
technique pour le traduire par la suite -- ça aurait coûté moins cher
que le temps qu'on a perdu en essayant à comprendre ce q'ils avaient
fait. Mais essaie à convaincre les chefs de ça.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Avatar
Arnaud Meurgues
Michel Michaud wrote:

Je ne sais pas pourquoi Usenet-fr rend les choses compliquées,
mais je sais que le code de caractères utilisé dans Windows (par
exemple) est bien défini. Celui de Linux aussi. (etc.)


Bon, juste une question. Le compilateur reçoit un fichier source.
Comment sait-il dans quel jeu de caractères il est été écrit ? Et
l'encoding ?

Je t'assure que tu te trompes. En tout cas, ici. Certains emplois
demandent d'être bilingue (ou mieux), mais pas tous. Ce qui ne
veut pas dire qu'on ne cherche pas à ce que tout le monde soit
capable de comprendre l'anglais...


Il y a, au Québec, des gens qui ne parlent pas anglais ?

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

Avatar
kanze
Fabien LE LEZ wrote in message
news:...
On Mon, 4 Oct 2004 23:23:53 -0400, "Michel Michaud" :

on ne peut lui demander de maîtriser cette autre langue au point de
pouvoir s'exprimer aussi parfaitement avec elle.



Et cependant, s'il veut travailler dans le domaine, c'est ce qu'il faut.

En fait, on peut lui demander ce qu'on veut, du moment qu'on lui paie
assez:-). Si on dit, je n'embauche que s'il maîtrise l'anglais au niveau
nécessaire, on trouverait quand même des candidats.

Si c'est un bon choix, en revanche, dépend du contexte.

Pour le code, je pense que si -- j'espère qu'un programmeur a assez de
vocabulaire anglais pour bien choisir des identifiants (au pire, on
lui fournit un dictionnaire français-anglais, c'est comme ça qu'on
apprend).

Pour les commentaires, c'est plus discutable. En passant, je rappelle
que tous les compilos que j'ai rencontrés acceptaient les accents dans
les commentaires.


Il y a une autre différence importante. Je peux, par la suite, faire
traduire les commentaires. Tant que le traducteur ne change rien en
dehors des commentaires, mon programme marche comme avant. Tandis que si
je m'amuse à changer les noms des variables ou des fonctions...

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Arnaud Meurgues
Michel Michaud wrote:

etc. De même qu'un code C++ écrit sous Windows doit être lisible
sous Linux (sinon, autant programmer en VB).
Ça semble facile et maîtrisé par les outils actuels. Ce n'est

pas là qu'il y a complexité...


Ben si. Actuellement, à ce que je sache, la norme C++ ne fournit aucun
moyen de connaître le jeu de caractères utilisé par un fichier.

Le seul moyen serait alors de passer en argument au compilateur le jeu
de caractères à pendre en compte. Mais cela signifie que tous les
fichiers doivent utiliser le même jeu de caractère. Que fera le
compilateur si un fichier include utiliser un autre jeu de caractère ?

Par ailleurs, tu dis que la norme impose de pouvoir écrire du code avec
les caractères que l'on veut. Je n'ai pas trouvé où elle spécifiait ça.
C'est où ?

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


Avatar
kanze
"Michel Michaud" wrote in message
news:<uHI8d.11175$...
Dans le message ,
On Mon, 4 Oct 2004 23:23:53 -0400, "Michel Michaud" :
Vu le bordel que c'est sur Usenet-fr, alors que ça existe depuis
des années, je doute que ça donne grand-chose avant pas mal
d'années.


Mais c'est plus local (donc plus simple) quand on parle de code
destiné à un compilateur.


Mais un code n'est pas forcément destiné qu'au compilateur. Il
arrive que des programmeurs s'échangent du code.


Je ne sais pas pourquoi Usenet-fr rend les choses compliquées, mais je
sais que le code de caractères utilisé dans Windows (par exemple) est
bien défini. Celui de Linux aussi. (etc.)


Tu te trompes en ce qui concerne Linux.

Et évidemment, le code que j'écris ne serais pas forcément lu sur la
même machine. J'ai déjà eu le problème des commentaires (en français,
avec des accents) qui sont devenus illisibles en passant de Solaris à
HP/UX.

Quand on copie d'une machine à l'autre, ce n'est pas un problème. C'est
assez trivial à écrire un programme de transcodage. Quand on monte le
même disque sur plusieurs machines (ce qui est quand même la situation
la plus fréquente dans les milieux où je travaille), c'est moins
évident. Les différentes machines voient le même fichier, et non une
copie.

[...]
Traduire les commentaires a posteriori est toujours faisable.
Traduire les identificateurs aussi, s'ils sont bien clairs et/ou bien

commentés :-)


Traduire les identificateurs change le programme. C'est jouer avec le
feux.

--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34