Est ce que le Java est la continuité C++ ???
Version imprimable
Est ce que le Java est la continuité C++ ???
8O Aaaaah, alors pas du tout :lol:
Java serait plutôt dans la lignée de SmallTalk, donc purement objet (tout dérive d'une classe objet). SmallTalk a qnd-même la réputation d'être plus facile et plus puissant (point de vue expressivité -> pas performance...)
Alors que le C++... y a une phrase que j'aime en rapport avec le C++ (qui va déplaire à certains mais bon...):
"C++ : an octopus made by nailing extra legs onto a dog" :)
Et je rejoins Clement pour le reste :wink:
ps: y a que la syntaxe qu'est a peu pres la-même
8) je rejoints clement d'accord, mais bon sachez tout de meme que java utilise l'heritage simple, mais également l'heritage multiple .
et ca , avec la meme bibliotheque !
en effet, un programmeur java ne conseillera jamais de faire de l'heritage simple , que ce soit avec java ou un autre language ... :!:
ouais, j'avais meme lu ca sur une interview de bjarne stroustrup qui mettait en evidence le fait que java utilisait d'une autre manière l'heritage multiple ...
va savoir !
J crois qu'il parle des interface mais ca n'a rien a voir...
Puis l'heritance multiple est qqchôse d'assez controversé... par exemple à cause du fait qu'il peut y avoir le "clashing" de méthodes (2 methodes de parents différents sont exactement les mêmes, lequel des deux est herité...?)
Non.Citation:
Envoyé par Vince ++
Java a repris beaucoup de la syntaxe du C(++), mais ces deux langages sont assez différents.
C++ est d'origine très ancienne (C plus encore), donc plus "primaire".
Il supporte beaucoup de concepts: procédures, types utilisateurs, objets et héritage (multiple), généricité (patrons), exceptions...
Tout ça en gardant un bon niveau d'abstraction.
Mais il reste d'abord focalisé sur la performance, donc bas niveau.
Java est plus récent, donc plus "propre".
Il limite les risques en ignorant: héritage multiple, désallocations explicites, patrons, distinction référence/donnée, type dépendant du système...
Il est orienté web, portabilité et comportement reproductible.
Mais les performances sont sacrifiées...
J'ai sous les yeux le resultat d'une recherche publiee sur Wired.
Ici un link qui donne une definition des languages (tous ou presque):
http://<br /> http://www.informatik...ist.html<br />
Malheureusement, il manque cet excellent Graphe.
En gros voila ce que le graphe contient:
Java a 3 parents
- Scheme 84
- SmallTalk 80
- C++
C++ vient du
C with classes qui vient du
C qui vient du
B qui vient du ...
SmallTalk va chercher ses sources dans Lisp qui vient de Fortran
Scheme remonte a Algol qui vient de Fortran
Bien sur, tout ca se recoupe, c'est a dire que C++ a aussi des ancetres Fortran.
Bref, si je trouve un soft link vers ce schema, je le mets. En attendant, lisez donc le papier plus haut, ca date un peu, mais ca reste interessant.
;)
je vais mettre tout le monde d'accord en disant que java et C++ descendent du codage binaire avec les swicths.
alors mon avis avec un parti pris pour C++ ( en connaissant JAVA ) : non c'est 2 langages différentes meme si elles sont une syntaxe presque semblable et ce sont 2 langages objets. Les points commun s'arretent la.
pointeur, pour ou contre ??? le debat restera ouvert et sans issu. Moi je suis pour.
garbage collector, pour ou contre ??? ca va avec les pointeurs, je suis completement contre. Je prefere defaire ce que je fais comme ca je sais quand et comment ce sera fait. Pour info il existe des garbages collector en C++.
pour ou contre l'heritage multiple ??? c'est un faux debat, c'est une propriété proposée, apres si elle est mal utilisée c'est autre chose. C'est comme si on accusait le marteau quand un type se tappait sur ses doits.
La portabilité ??? c'est peut etre qu'une impression mais plus le temps passe, plus j'ai l'impression que ca devient de moins en moins portable ...
Les trucs que j'aime pas en JAVA ( ca concerne que moi evidement ) :
l'utilisation abusive du design pattern MVC.
les classes internes.
les interfaces.
la lenteur.
Merci de vos réponses, après avoir lu tous vos posts cela m'amène à une autre question.
Aurai-je beaucoup de mal à migrer du C/C++ au Java ??? (car la syntaxe ressemble mais le concèpte à été repenser)
Personnelement j'ai commencé par le C++ puis le Java. Et je dois dire que le java est plus agréable à utiliser (plus logique à mon gout). mis à part qq différence (comme le keyword "abstract" en java par exemple; y a pas de keyword "virtual" en java -> les messages sont lié au type dynamique), je crois pas que ca devrait poser trop de problème, on s'y habitue vite ;)Citation:
Envoyé par Vince ++
Merci beaucoup MelloW. Je suis fixé.
Merci a tout le monde pour m'avoir éclairci, sur ce sujet.
J'ai trouvé plusieurs graphes grace à google:Citation:
Envoyé par knotty
http://www.levenez.com/lang/history.html#05
http://www.epemag.com/zuse/Images/43ab.gif
http://merd.net/pixel/language-study/diagram.html
Chaque graphe a sa propre interpretation evidemment... :roll:
Le dernier lien cite le C++ comme seul réfèrence du Java (première version) par exemple... Je crois que le premier lien est le plus complet.
tres sympa, merci :)
Le premier est grosso modo celui dont je parlais.
C'est plus facile dans ce sens là que dans l'autre !Citation:
Envoyé par Vince ++
Mieux vaut tard que jamais...
et c'est pour faire quoi?
Si tu veux t'orienter dans l'industrie, C++ à de beau jours devant lui.
A part ça passe direct à Java. En tout cas sous Windows C# va remplacer c++.
Thomas
En faite si je demande ça c'est parce que je pense qu'un jour le Java écrasera C\C++ d'ou ma question.
D'ailleur, il me semble que beaucoup d'université americaine arrête d'enseigner le C\C++ pour le Java.
Oui je suis d'accord avec toi.Citation:
Si tu veux t'orienter dans l'industrie, C++ à de beau jours devant lui.
Je suis en BTS électronique et je programme essentiellement des µControleurs en C et assembleur et je maitrise assez bien C++ Builder (simple loisir). Et je remarque que beaucoup de BTS info industriel se servent du C++. D'ou mon choix pour se language plutôt qu'un autre.
Mais si un jour il venait a passer au Java, et bien je voulais savoir si j'aurai du mal à m'adapter.
Je vous remerci donc pour vos réponses et de m'avoir éclairé.
PS: D'autres remarques sont là bienvenu, pour moi.
c'est sutout parceque c'est plus propre tet donc plus pédagogique comme langage quand on apprend la poo.Citation:
D'ailleur, il me semble que beaucoup d'université americaine arrête d'enseigner le C\C++ pour le Java.
meme si la syntaxe de java ressemble a celle de C++, il vaut mieux ne pas connaitre le C++ si on veux apprendre facilement le java (par exple : pas de pointeurs dans java).
c'est en fait un langage orienté objet reprenant les caractéristiques principales du C++, mais supprimant les principales origines d'erreurs: pointeurs, surcharge d'operateurs, heritage multiple...
Merci sifao, donc je conclus que passer du C au Java n'est trop dur, du moins pour quelqu'un qui ne connais que le C.
Non. Si tu veux un ordre d'idée, pour apprendre à programmer correctement en Java, il faut au moins 2 mois à temps plein pour quelqu'un qui se débrouille bien. Et la connaissance de C++ n'est juste qu'un tout petit plus. (c'est juste mon avis bien entendu)
Ne sous-estime pas le travail, donc.
Thomas
Merci les gars, addmettons que j'ai de très bonne base en C, il me faudrait au maximum 6 mois avant de maitriser le Java ?
Et j'ai vu aussi des livres de programmation qui traite du Java et du C en paralèlle, c'est donc bien qu'il y a une certaine similitude ?
quelque mois c'est certain. Et si en plus tu n'as pas l'habitude de la programmation objet, ça peut durer plus oui.
C'est stupide d'apprendre le C et le java en même temps. Note le nom de l'auteur de ce livre pour ne jamais acheter de bouquins de lui. A part la syntaxe, c'est pas du tout les mêmes qualités qu'il faut. Un bon prog en C est un programme qui va vite. En java on se fiche de la vitesse d'exécution (on s'en occupe à postériori quand c'est vraiment la cata, mais c'est pas souvent la cata).
Ceci dit, si tu fais de la programmation dans l'industrie en Java, peut-être que tu n'utiliseras pas Java en tant que langage objet. Il est possible de programmer en Java comme en C. Dans ce cas le temps d'apprentissage doit être de qq jours. (c'est une horreur que je dis là)
Thomas
Merci à tous, de m'avoir éclairé.
Pourquoi ? En fait là je commence le Java, c'est vrai que les débuts sont assez rapides mais pour commencer à aller un peu plus loin c'est une autre paire de manche :wink: Mais apres le Java je pensais m'attaquer au C++, plus par plaisir qu'autre chose je pense et ta phrase m'interesse tu pourrais developper ? :lol:Citation:
Envoyé par Musaran
Sans porter de jugement de valeur sur les merites respectifs du C/C++ et du java, il me semble que maitriser les bases de ces langages est toujours utile. Dans le cadre professionnel, on ne choisit pas souvent son environnement. Java est de plus en plus présent, mais il reste encore des millions de lignes de code en C ou C++ à maintenir et les moyens nécessaires à une migration de l'un à l'autre ne se débloque pas si facilemment.
Je pense que l'inverse est plus facile. Java est un langage qui force à une certaine rigueur au niveau objet, ce qui n'est pas le cas de C++. La plupart des gens que je connais font en C++ ce qu'ils faisaient en C auparavant.Citation:
Vince ++ a écrit:
Aurai-je beaucoup de mal à migrer du C/C++ au Java ???
C'est plus facile dans ce sens là que dans l'autre !
Une application java peut avoir des "fuites de mémoire" il suffit d'accumuler une paquet de références sur des objets différents et de ne pas s'en débarrasser lorsqu'on en a plus besoin, le ramasse miette ne nettoie que les objets qui ne sont plus référencés. Le ramasse miette ne fait que déplacer le problème si on ne programme pas proprement. la JVM fournit toutefois un garde-fou très rigoureux et appréciable en matière de mémoire.Citation:
Si java n'a pas de fuites de mémoire, ce n'est pas grâce à l'abscence de pointeurs, mais à cause du ramasse-miettes imposé.
Enfin je dirai que c'est un régal de programmer avec les pointeurs, on peut vraiment maitriser de bout en bout la gestion de sa mémoire.
La programmation Java est un régal pour les applis de plus haut niveau ne necessitant pas de performances fulgurantes.
la je ne suis pas d'accord, une fuite memoire, c'et aussi de la memoire qui a été alouée par un programme et qui n'est pas libérée même apres que le programmes se soit terminé... en java tu ne vera jamais ca car dès que ton programme se ferme, la JVM s'arrete et libere toute la memoire que le programme a utilisée...Citation:
Envoyé par iolco51
Pourquoi d'apres toi ?Citation:
Envoyé par iolco51
parce il apprennent le C++ direct ce qui est une tres tres mauvaise idée ...
pour moi on apprends le C pour comprendre les pointeurs puis apres le C++
sinon en ce qui concerne le java, il est vrai que c'est assez dur car c'est 100% objet. Cela depand si tu es passé par C et apres que tu apris le C++ pour apprendre le poo et non pas pour eviter les char * avec des std::string ...
Suivent des commentaires désordonnés inspirés par les messages de ces derniers jours.
Et pourquoi pas l'assembleur, voire les micro-assembleurs aussi, pour savoir comment fonctionne la pile d'appel ou comment la machine manipule les registres, la mémoire, et cie ?
L'erreur est de balancer des débutants au pays des pointeurs avant même qu'ils ne comprennent et maitrisent les rudiments d'algorithmie. Suivant le langage utilisé, les pointeurs (ou l'équivalent dans ce langage) devront être maitrisés, mais nullement dès la seconde leçon.
Quand au 100% objet (que n'est pas Java vu qu'il dispose de types primitifs p.ex.), cela ne doit pas être une fin en soit. Il faut savoir profiter des techniques et des paradigmes qui nous sont offerts pour résoudre un problème sans s'enfermer dans un purisme qui n'est pas toujours justifié.
Pour ce qui est de std::string, ce type n'est pas là pour juste éviter les char *. Il nous apporte un subtil mélange entre abstraction (le point clé des approches OO) (et donc simplicité d'utilisation) et gestion efficace des ressources (ici la mémoire) via l'idiome RAAI (et donc meilleure robustesse). D'ailleurs, il n'y a pas que la mémoire qui peut fuir dans une application, et là un ramasse miette ne peut rien faire seul.
Pour les premières leçons d'un cours, ce type est parfait. Il permet de donner aux débutants un code simple et juste (=> plus facile à maintenir) qui résoud les problèmes pour lesquels il est conçu.
A termes, on pourra leur montrer la syntaxe des opérations de manipulation de la mémoire et surtout les risques et enjeux de ces manipulations ; et là il y a matière à présenter et détailler plein de choses. Le tout est de faire les choses dans l'ordre.
Bref, ce sont au contraire AMHA plutôt ceux qui sont passés par le C qui continuent à reproduire du code inadapté au C++ que le contraire. Il est plus rare que l'on se serve des contre-diomes d'un langage quand on ne les a pas appris par ailleurs.
Ce qui me fait penser que c'est d'ailleurs le plus gros repproche que l'on pourrait faire à la vaste majorité de la littérature et autres sources d'apprentissage : on présente un langage (en particulier le C++) via sa syntaxe et non via ses idiomes. Résultat on est tenté de faire comme avec tel autre langage vu que la syntaxe le permet. (Et final on critique un langage parce que sa syntaxe qui permet des choses hyper utiles (comme la programmation par contraintes ; il faut passer par un outil externe non standard en Java p.ex. ; Eiffel ou D supportent cela directement via la sytaxe du langage) permet aussi des choses qui peuvent conduire au désastre des programmeurs qui ne connaissent pas les idiomes du langages, en d'autres termes qui ne savent pas s'en servir)
Dire que la POO est plus complexe à appréhender n'est pas évident. J'ai l'impression que cela va pas mal dépendre des personnes. J'avais eu des étudiants qui ramaient bien en C (en grosse partie à cause des pointeurs), mais qui s'étaient bien faits à la philosophie objet -- ceci dit ils avaient déjà les bases de l'agorithmie et des rudiments d'Ada et de C au moment d'aborder le Java si mes souvenirs sont bons.
Je voudrais livrer mes impressions à propos de ces trois langages et notamment de leur liens entre eux.
J'ai un parcours assez atypique dans l'apprentissage des langages. J'ai découvert l'informatique à la fac où j'était d'abord venu pour faire des maths. Le langage quy était enseigné aux premières années, c'était le Java. C'est discutable, mais ce n'est pas le sujet (envoyez un MP si vous voulez en débattre :wink: ). Je ne vous le cacherai pas, ca n'a pas était facile pour tout le monde: d'une part des étudiants qui découvrent l'informatique, de l'autre part des ensignants qui ne savent pas trop quel niveau technique inculquer à leurs eleves. J'ai eu la chance de tomber sur une prof motivée sympa et rigoureuse et j'ai appris le Java assez rapidement, et avec le recul, plutot bien je trouve.
Ce qui est utile avec le Java au début, c'est qu'on a pas à gérer la mémoire. Quand on débute en algorithmique c'est trés intrerressant, on se concentre sur les automatismes, on comprend bien comment les algos s'executent. On n'a aucun aperçu de la gestion de la mémoire, et c'est tant mieux car ce n'est pas encore l'enjeu.
Dés qu'on commence à aborder les structures de données, il faut pouvoir définir de nouveux types, donc des classes en Java, donc commencer à s'impregner de POO. Autant vous dire qu'en première année, ca fait mal, et que plus de la moitié des étudiants de seconde année ne savent toujours pas faire un programme de longueur moyenne (~500 lignes). Je me suis accroché, j'ai lu, j'ai demandé de l'aide, et j'ai petit à petit compris le mécanisme des classes, des champs et des méthodes d'instances et de classes, puis plus tard l'héritage, les interfaces le tout-objet ..... A partir de ce moment l j'ai commencé à faire de l'info en dehors des cours et j'ai réalisé quelques projets: la pratique et la lecture (encore et toujours) m'ont permis de mieux comprendre les subtilités, de mieux comprendre la philosophie Java et de rédiger du code plus adéquat.
Je me suis donc mis un peu plus tard au C++ que j'ai envisagé d'apprendre tout seul avec un gros bouquin: celui de Bjarne Stoustrup. Comme je n'étais plus un novice en programmation, c'est venu assez rapidement. La syntaxe changeait un peu (pour les déclarations de classes et la définition des méthodes), on pouvait faire plus de trucs (redifinitions des opérateurs) mais ca allait. Par contre grosse nouveauté: les références, les pointeurs et les valeurs ! J'ai du beaucoup bosser et demander beaucoup d'aide pour comprendre.. mais c'est venu. Mon véritable problème a été l'allocation dynamique, jimpossible de faire la différence entre variable automatique et variable dynamique: je connaissais pas ! Exemple: comme je connaissais le mot clé new en Java, je pensais que ca fonctionnait pareil en C++. Je ne voyais pas l'interet de renvoyer un pointeur, puisque je trouvais ca plus compliquer que les valeurs et les références. Et pendant longemps j'ai fait cette manip horrible:
Et sans appel a delete ensuite ..ca se passe de commentaire.Code:mon_objet o = *(new mon_objet);
Puis pour les besoins d'un concours, je me suis mis au C. A part quelques problèmes pour les déclarations (au début d'un bloc et jamais dans l'initialisateur d'un for), la syntaxe étant identique, ca n'a pas posé de problemes. Puis j'ai voulu utiliser des tableaux: "Ah oui merde, c'est comme en C++, pas de tableaux de tailles variables.. merde pas de STL , donc pas de Vector non plus !" Alors comment on fait ? Et bien on va sur developpez.com, on choppe un tutoriel ANSI C et la, bah c'est venu très vite. Aprés avoir compris malloc et free, j'ai donc compris new et delete.
Aujourd'hui j'estime avoir une bonne connaissance et une bonne pratique du C et du Java: je manque un peu de pratique en C++ (seulement un projet réalisé) mais les méthodes de travail que j'utilise en java me permette de garder une bonne conception.
Donc à partir de là, j'ai quelques avis sur les liens entre ces langages. À la lecture du livre de Stroustrup sur le C++, notamment les chapitres consacrées à la conception, on comprend bien le but de ce langage et plus généralement de la POO. Il ya derrière tout ca un souhait de gain de temps dans la programmation, de facilité et de réutilisabilité. En celà je dirais que oui, Java en est bien la continuité.
Java remplace-t'il pour autant le C++ ? Je ne pense pas. Sur toutes les directions prises par Stroustrup et les autres concepteurs du langage C++, Java en a privilégié certaines: notamment la facilité et l'utilisation d'outils standards. Le garbage collector ajoute plus de facilité, les composants awt et swing permettent de créer des GUI standards, les Threads et les Sockets sont aussi proposés en standard. Java a fait le pari d'introduire d'autres notions: la portabilité de l'application même, au dela du code-source, ce qui a amené à la création du byte-code, et une facilité d'utilisation des réseaux.
Les directions prises par Java le distingue donc bien du C++. Ce dernier a lui d'autres buts qu'il conserves et qui lui sont propres: compatibilité avec des modules C, gestion de la mémoire dynamique par l'utilisateur, langage compilé. Ces deux langages ont donc un socle commun: facilité et rapidité d'écriture du code, composants standards riches, POO, mais différent énormément sur d'autres domaines. Le problème pour un développeur et de savoir quel langage utilisé pour quel projet, leurs avantages étant souvent complémentaires.
Quant au C et au C++, c'est encore plus complexe. Le C++ étant construit à partir du C, il en conserve les principales propriétés. De plus il reste compatible, dans une certaine mesure, avec du code C. Donc il semble utile, au premier abord, de connaître le C, et notamment la gestion de la mémoire avant de faire du C++. C'est evidemment sans compter les principes de conception nécessaires au développement C++. Le C étant un langage sobre, dépourvue de toute fonctionnalité superflue et de la notion d'objet, il appartient au programmeur d'inventer des méthodes permettant de simuler ces fonctionnalités. Cette pratique, appelée un peu à tort du bidouillage, est justement ce qui a conduit à l'élaboration du C++, qui permet d'éviter celà. Donc pour passer du C au C++ il faut surtout s'impregner d'une nouvelle philosophie, les détails techniques viennent ensuite facilement une fois qu'on a compris le pourquoi du comment. Comme le dit Bjarne Stroustrup, il faut éviter de faire du C++ avec un style C. J'ai entendu une fois un porgrammeur dire à propos d'un autre:
Dans l'idéal, je dirais que pour apprendre le C++, il faudrait connaître le C ET le Java. Comme ca, on a les notions d'objet et d'allocation mémoire. Mon parcours original (Java-> C++->C) m'a créé quelques difficultés: j'aurais appris le C++ en dernier si j'avais su. En tout cas, aprés avoir bien maitrisé le Java, un peu de rigueur et de travail ont suffit pour comprendre rapidement le C, même le particularités les plus complexes. On ne voit plus les choses de la même facon aprés, et on félicite les concepteurs de Java pour leur travail: y'a pas à dire, les String de Sun et les std::string de C++, c'est beaucoup plus élégant que les char * :wink:Citation:
Il dit qu'il fait du C++ ... mon oeil ! Il met #include<algorithm> au début de ses sources, et le reste c'est du C: pas une class et que des méthodes globales
Aujourd'hui, j'utilise en majorité le C pour mes projets personnels (j'ai vite apprécié de gérer ma mémoire seul comme un grand), mais ce mois-ci, j'ai du développer une application dans le cadre d'un stage, et je n'ai pas hésité une seconde: Java ! Du coup j'ai une belle interface, l'application est portable, je n'ai pas eu à (re)programmer pleins de modules, et grâce aux exceptions, les séances de test et de débogages sont vraiment facilitées.
A bon entendeur, et en m'excusant pour la taille de ce post ...
Même pas vrai! :roll:Citation:
Envoyé par weed
Mais il faut quand même un minimum* de notion objet pour développer correctement ... :lol:
(* et je dirais même: un gros minimum)
Excuse-moi, mais certains bons IDE (bon, je parle de C++ Builder en fait) contiennent un utilitaire capable de détecter TOUTES les fuites mémoires, ainsi que toutes les violations d'accès n'apparaissant qu'une fois sur 1000 en temps normal (par exemple l'écriture du 81ème élément d'un tableau du type C quand on a a alloué 80).Citation:
Envoyé par Clement Cunin
Avec CodeGuard de C++ Builder donc, par exemple, *impossible* de faire un programme qui fuit. (je m'engage souvent un peu vite, mais là j'ai fais beaucoup de tests et CodeGuard est vraiment extrèmement puissant (on dirait presque du C++ managé ^^)).
A+ ;-)
PS: sans parler des pointeurs automatiques du C++
Avec des trucs comme boost::shared_ptr, on évite ce genre de problème.
Ça produit un comportement un peu comme les instances Javaïennes...
Ok, java est arrivé après C++, il reprend les meilleurs points du C++ et l'abandonne avec ces pointeurs et gestion de la mémoire...
Ok, java est 100% objets car C++ hérite du C pour raison de compatibilité avec ce langage.
Mais ce que vous oubliez, le C++ ne s'est pas arrêter d'évoluer.
Nous sommes en 2005, et nous avons le C++ managé qui permet une gestion efficace de la mémoire. Et d'ailleurs il est même possible de faire du C++ managée et non managé dans un même projet où l'on gère à la fois la mémoire en tant que pile, en tant que tas managé par le clr et en tant que tas non managé. On peux faire un programme avec des news sans utiliser des deletes et le nouveau gabarge collector de la clr s'en charge pour faire la toilette.
Pour moi qui a utilisé les pointeurs de tout genres et de toutes formes c'est une habitude d'allouer des ressources dynamiquement et de faire également la libération de ces ressources. Un bon développeur C++ a ses réflexes et je vous garantis que je n'ai pas de fuite de mémoire.
VC++ dispose d'un bon déboguer pour détecter les fuites.
Et si je parlais des pointeurs intelligents...
Concernant la POO, vous dites que le java est 100% objet. Mais tous les concepts orientés objets appliqués en Java sont également faisable en C++ et d'ailleurs le C++ va plus loin avec l'héritage multiples aussi bien des classes ordinaires que des interfaces et également l'héritage virtuelle, la surcharge d'opérateurs, les générics et les templates et bien d'autres encore.
Le C++ est non seulement orienté objet au même titre que le java mais il est aussi MULTI PARADIGME. (confère livre de Bjarne Strouptrup).
Pour vous mettre au parfum voici un ppt de C++ Tour de France 2005
http://download.microsoft.com/download/2/2/1/22108e0b-c59c-41a9-9624-d94fae6ab254/Rencontres_visualC.ppt