IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Quel langage pour remplacer le C ?

Votants
51. Vous ne pouvez pas participer à ce sondage.
  • Rust

    21 41,18%
  • D

    0 0%
  • Go

    0 0%
  • C3

    0 0%
  • Autre langage (à préciser)

    2 3,92%
  • Aucun langage ne peut remplacer le C

    24 47,06%
  • Je n'ai pas d'avis

    4 7,84%

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 980
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 980
    Par défaut
    Bonjour,

    Bien entendu, on ne peut pas affirmer que le C ne sera jamais remplacé, mais il est tellement implanté que ça va demander du temps.

    Pensez au "bon vieux" Cobol encore utilisé ...

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 875
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par droggo Voir le message
    Pensez au "bon vieux" Cobol encore utilisé ...
    Il n'y a pas de quoi être dépité. Le COBOL possède deux avantages
    • c'est une locomotive. Il est lent à se mettre en marche, mais une fois lancé, il avale tout fichier quel que soit sa taille
    • c'est un des seuls langages à savoir calculer les décimaux sans la perte due à la conversion décimal => binaire. Sa façon de définir les nombres (exemple pic 99v99 signifiant 4 chiffres dont 2 après la virgule) en fait un langage privilégié pour tout ce qui a trait aux calculs où la vitesse compte moins que la précision (banques, impôts, etc)

    Comme quoi, le coup des vieilles marmites qui font les meilleures soupes, ça marche aussi avec les langages. Peut-être que le C sera remplacé, je n'en sais rien, mais ce dont je suis sûr c'est que si ça doit se faire, cela se fera naturellement sans "forcer" les choses, comme le Trésor Public qui est en train de remplacer le COBOL par Python, autre langage qui peut aussi calculer les décimux avec précision via son module "decimal". Et Python est né en 1989 (33 ans à mûrir avant qu'il soit pris en considération pour commencer à remplacer le COBOL...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 516
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    c'est un des seuls langages à savoir calculer les décimaux sans la perte due à la conversion décimal => binaire. Sa façon de définir les nombres (exemple pic 99v99 signifiant 4 chiffres dont 2 après la virgule) en fait un langage privilégié pour tout ce qui a trait aux calculs où la vitesse compte moins que la précision (banques, impôts, etc)
    N'importe quel langage un tout petit peu évolué permet de coder une bibliothèque avec un type décimal. Parmi ces langages, n'importe quel langage qui supporte la surcharge d'opérateurs permet de manipuler ces nombres décimaux avec une syntaxe pas trop casse-pieds.

    Par exemple, voici un script Rust qui utilise les crates rust_decimal et rust_decimal_macros :

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/usr/bin/env rust-script
     
    // cargo-deps: rust_decimal="1.26.1", rust_decimal_macros="1.26.1"
    extern crate rust_decimal;
    extern crate rust_decimal_macros;
     
    use rust_decimal::Decimal;
    use rust_decimal_macros::dec;
     
    fn main() {
        let amount = dec!(25.12);
        let tax = dec!(0.085);
        let total = amount + (amount * tax);
        let price = total.round_dp(2);
        println!("total == {total}");
        println!("price == {price}");
        println!("Size of each Decimal object: {} bytes", std::mem::size_of::<Decimal>());
        println!("Smallest possible value: {}", Decimal::MIN);
        println!("Largest possible value:   {}", Decimal::MAX);
    }
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    total == 27.25520
    price == 27.26
    Size of each Decimal object: 16 bytes
    Smallest possible value: -79228162514264337593543950335
    Largest possible value:   79228162514264337593543950335

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 756
    Par défaut
    Pour rajouter à ce que dit Pyramidev, même si le résultat affiché correspond mieux à ce que s'attend à voir un utilisateur final, l'utilisation d'un type décimal ne garantit absolument pas qu'il n'y aura pas de problème d'arrondis, sur les divisions par exemple, c'est juste qu'il n'arrivent pas dans les mêmes cas.

  5. #5
    Membre éprouvé
    Profil pro
    programmeur du dimanche
    Inscrit en
    Novembre 2003
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : programmeur du dimanche
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 109
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    ... le Trésor Public qui est en train de remplacer le COBOL par Python, autre langage qui peut aussi calculer les décimux avec précision via son module "decimal". Et Python est né en 1989 (33 ans à mûrir avant qu'il soit pris en considération pour commencer à remplacer le COBOL...)
    Juste pour illustrer les limites d'un type decimal qui ont été évoquées plus haut, je ne peux rien dire en rust ou cobol, par contre je confirme qu'en python les modules standards sont vraiment pratiques pour le calcul. Le problème d'arrondi peut être géré voire totalement évité.
    Le module decimal a une précision par défaut de 28 chiffres (précision pouvant être changée de manière arbitraire). Le module fractions permet le calcul exact des fractions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    In [2]: from decimal import *
     
    In [3]: from fractions import *
     
    In [4]: Decimal(1) / Decimal (3)
    Out[4]: Decimal('0.3333333333333333333333333333')
     
    In [5]: Fraction(1,3)+ Fraction(2,3)
    Out[5]: Fraction(1, 1)

  6. #6
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 778
    Par défaut DATA DIVISION, langages divisions ?
    Bonjour SVE,

    Citation Envoyé par Sve@r Voir le message
    ...comme le Trésor Public qui est en train de remplacer le COBOL par Python...
    Je ne savais pas mais je suis assez surpris qu'on remplace un langage compilé par un langage interprété qui même avec toutes les techniques de caches, JIT et autres, restera moins efficace ce qui veut dire plus lent et consommateur de ressources qu'un langage compilé (la portabilité n'est plus vraiment un critère vue l'homogénéité des parcs informatiques de la fonction publique).

    Et les bibliothèques de Python, apparemment argument du choix, sont écrites en natif, vraisemblablement en C ou C++.

    Qu'un langage interprété soit utilisé en front office peut se comprendre (contraintes d'efficacité plus faibles et facilité d'adaptation notamment) mais en back office, là où œuvre COBOL, me laisse perplexe.

    Salut

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 502
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Madmac Voir le message
    Je vois plus Rust comme alternative pour des application plus lourdes qui demanderait l'utilisation de l'héritage en C++.
    Sauf qu'il n'y a pas vraiment de classes et d'héritage en Rust.

    En tout cas, on est très loin des possibilités de C++.


    Citation Envoyé par Madmac Voir le message
    Je ne connaissait pas Zig. [...] Et c'est le seul que j'ai vu qui offre une façon de se débarrasser de null
    Rust non plus ne connait pas null.

  8. #8
    Membre très actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Août 2014
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 476
    Par défaut
    J'ai essayé Rust pour voir ce qu'il en etait et si ca valait le coup d'investir du temps. J'ai rapidement laissé tomber. Pourquoi se reformer de 0 pour un langage qui fera la meme chose au final.
    Je prefere peaufiner mes connaissances sur C++ et les dernieres normes pour me mettre a jour et tirer partie des ameliorations du langage (sans tout jeter les outils et autres que j'ai l'habitude d'utiliser).

    Pour moi c'est autant une mauvaise raison que ceux qui se plaignaient de la gestion memoire ou des pointeurs en C. Trop compliqué de liberer la memoire allouée ? Il faut juste etre rigoureux. D'ailleurs ca se retrouve maintenant avec les nouveaux devs qui n'ont connu que C# dans mes equipes. Ils n'ont aucune notion de gestion des ressources; croient que les ressources sont infinies, l'optimisation de code pour eux c'est remplacer des foreach par des for etc. montent en memoire des listes de plusieurs GOs sans que ca ne les interpelle. Et quand ca ne va pas assez vite, ils mettent en cause le reseau, le manque de memoire etc. Bref jamais aucune remise en cause de leur code.
    Bref, mauvais diagnostic et mauvaises optimisations a chaque fois car ils ne comprennent pas comment ca fonctionne et ce que fait concretement leur langage préféré.

    J'ai repris recemment un bout de code que j'avais ecrit en C++ il y a 20 ans. Voulu le refaire en C# en equivalent (sans pointeur).
    Beaucoup de manipulation de listes en memoire. Au final une perf catastrophique (x5) en C#.
    Du coup j'ai prefere remettre a niveau le code vers C++20 pour beneficier des simplifications du langage mais en conservant le code ecrit il y a 20 ans qui fonctionnait toujours de maniere aussi performante (meme plus avec les nouveaux processeurs et compilos).
    Bref j'ai arrete de vouloir reecrire des choses perennes qui font le boulot juste pour passer vers un langage a la mode dont la duree de vie n'est pas garantie.

  9. #9
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 756
    Par défaut
    Citation Envoyé par kilroyFR Voir le message
    J'ai essayé Rust pour voir ce qu'il en etait et si ca valait le coup d'investir du temps. J'ai rapidement laissé tomber. Pourquoi se reformer de 0 pour un langage qui fera la meme chose au final.
    Avec ce type de raisonnement on en serait encore a l'assembleur.
    Rust ne permet évidemment pas à l'application finale de faire plus qu'une application écrite en C, cependant, il apporte des abstractions évoluées, de bien plus fortes garanties sur la sécurité, un ensemble d'outils intégrés cohérents, ...

    Citation Envoyé par kilroyFR Voir le message
    Pour moi c'est autant une mauvaise raison que ceux qui se plaignaient de la gestion memoire ou des pointeurs en C. Trop compliqué de liberer la memoire allouée ? Il faut juste etre rigoureux.
    Ce qui ne marche pas dans la pratique. Si on a un programme un minimum complexe, même les développeur chevronnés finissent par laisser passer des erreurs mémoire qui passeront inaperçues.

    Citation Envoyé par kilroyFR Voir le message
    D'ailleurs ça se retrouve maintenant avec les nouveaux devs qui n'ont connu que C# dans mes equipes. Ils n'ont aucune notion de gestion des ressources; croient que les ressources sont infinies, l'optimisation de code pour eux c'est remplacer des foreach par des for etc. montent en memoire des listes de plusieurs GOs sans que ca ne les interpelle. Et quand ca ne va pas assez vite, ils mettent en cause le reseau, le manque de memoire etc. Bref jamais aucune remise en cause de leur code.

    Bref, mauvais diagnostic et mauvaises optimisations a chaque fois car ils ne comprennent pas comment ca fonctionne et ce que fait concretement leur langage préféré.
    Des mauvais développeurs, il y en a toujours quelque soient les langages, mais pour le coup, c'est plutôt une excellente raison d'utiliser Rust qui est un langage très peu permissif et qui les oblige à apprendre a gérer correctement soi même pas mal de choses qui sont gérées automatiquement par C#/Java avec un impact sur les performances, ou qui seraient ignorées en C/C++ avec au final des problèmes de qualité.

    Citation Envoyé par kilroyFR Voir le message
    J'ai repris recemment un bout de code que j'avais ecrit en C++ il y a 20 ans. Voulu le refaire en C# en equivalent (sans pointeur).
    Beaucoup de manipulation de listes en memoire. Au final une perf catastrophique (x5) en C#.
    Oui mais la on parle pas du même type de langage. Si tu passe d'un langage système à un langage managé, bien sur qu'il faut t'attendre a des performances inférieures. Là on parle des remplaçants à C, donc des langages systèmes comme Zig ou Rust qui sont censés avoir des capacités et des performances similaires.

  10. #10
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Citation Envoyé par kilroyFR Voir le message
    Il faut juste etre rigoureux.
    Fallait dire ça aux programmeur de Ariane 5: https://fr.wikipedia.org/wiki/Vol_501_d%27Ariane_5

    Le gros désavantage du C , c'est son nombre d'UB et de manque de sécurité.
    Et plus le programme est complexe, plus il est difficile de penser à toutes les "possibilité" pour éviter un bug.

  11. #11
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 712
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 712
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par Bktero Voir le message
    Sauf qu'il n'y a pas vraiment de classes et d'héritage en Rust.

    En tout cas, on est très loin des possibilités de C++.
    On peut faire l'équivalent de l'héritage avec la composition. Avec les risques du multi-héritage. l'Idéal serait que le langage introduisent un langage macro qui support l'héritage pour gérer les risques.

    Citation Envoyé par WhiteCrow Voir le message
    Ou ptêt qu'on revient du paradigme «tout est objet partout tout le temps, seul le mécanisme d'héritage compte, et de toute façon si on crée un langage c'est pour des experts, etc.»
    L'héritage n'est pas existant dans tout les langages de programmation. Oberon ne supporte pas l'héritage.

    Citation Envoyé par Jamatronic Voir le message
    La POO a été inventée dans un Bureau de Complication des Affaires Simples. On en reviendra, oui.
    Ou par quelqu'un qui voulait réduire au maximum les variables et les constantes globales.

  12. #12
    Membre très actif
    Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 122
    Par défaut
    Citation Envoyé par Madmac Voir le message
    Je ne connaissait pas Zig. Et effectivement il me semble être une alternative vraiment intéressante. Le fuites de mémoire en C m'ont tenu loin de ce langage. Ce langage semble offrir des solutions sérieuses pour s'en protéger. Et c'est le seul que j'ai vu qui offre une façon de se débarrasser de null. https://ziglang.org/fr/learn/overview/

    Je vois plus Rust comme alternative pour des application plus lourdes qui demanderait l'utilisation de l'héritage en C++.
    Y'a pas de null en rust que je sache ou je me trompe?

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 86
    Par défaut Mais Rust n'est pas parfait non plus...
    Je comprends l'engouement pour Rust et il a sa place dans ce type de projet (pour une fois qu'il sera choisi pour de bonnes raisons...)
    Sauf qu'il a aussi des travers et il ça apporter son lot de crasses. Du coup on va avoir 3 langages dans le noyau, des soucis de compilation et des comportements de gestion de mémoire parfois compliqués à gérer. Rust c'est une bonne idée mais il ne faut pas le voir comme le messie.

  14. #14
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2015
    Messages
    500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2015
    Messages : 500
    Par défaut
    Je ne comprends pas bien ce que fait C3 d'après cet article, puisqu'on nous dit que le successeur naturel de C devrait être Rust. Pas un mot sur C3. Bizarre, non ?
    A part ça, sur l'argument d'un commentateur de la base de code existante, si on va par là on se retrouve en COBOL pour les applications. On survivrait, mais bon...

  15. #15
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 756
    Par défaut
    Citation Envoyé par thamn Voir le message
    Y'a pas de null en rust que je sache ou je me trompe?
    Non tu ne te trompe pas Zig a repris les type de retours de Rust qui lui même les a repris des langages fonctionnel comme OCaml.

    Citation Envoyé par TJ1985 Voir le message
    Je ne comprends pas bien ce que fait C3 d'après cet article, puisqu'on nous dit que le successeur naturel de C devrait être Rust. Pas un mot sur C3. Bizarre, non ?
    C'est juste que l'article cite les propos du créateur du langage C3.
    Aucun langage n'a le statut de successeur naturel du C, même si il y a plusieurs prétendants comme Rust, Zig ou C3.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2003
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2003
    Messages : 1 549
    Par défaut
    Aucun langage ne remplacera le C mais le RUST a déjà commencé à s'intégrer dans des systèmes (Google avait réécrit le module bluetooth pour Android qui est devenu plus rapide et stable, il y a une implémentation de SSL aussi, ...)

  17. #17
    Membre averti
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Février 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Février 2014
    Messages : 24
    Par défaut
    J'ai testé Rust pour un projet perso au départ. Pour moi le C et le C++ (à l'ancienne façon C objet) restaient les langages les plus puissants.

    J'ai un peu galéré parce que ça change, mais ensuite je ne me suis pas senti enfermé par rapport au C. J'ai bien eu l'impression de toujours gérer ma mémoire, juste un peu différemment.
    Puis j'ai eu besoin de mon projet perso pour sauver un projet pro et là je dois dire que j'ai quand même été épaté, ça tourne aussi vite qu'en C (du même ordre en tout cas), et c'est d'une stabilité qui fait plaisir (le moteur tourne pendant longtemps avec forte charge sur des serveurs sans aucun souci).
    J'ai quand même un peu galéré faute de connaissance du langage pour trouver la structure sans jamais utilisé de unsafe.
    Et je suis toujours un débutant en Rust, il y a encore beaucoup de choses à voir.
    C'est multi-threads, multi-user avec les sockets réseau, super rapide et puissant là où les autres solutions pétaient sous la charge (pourtant gros serveurs 32 à 40 coeurs et RAM énorme).

    J'ai été conquis par le langage et je m'y retrouve vraiment par rapport à du C.
    Est-ce que ça le remplace ? Pour de nouvelles choses oui peut-être (en tout cas pour moi),
    mais j'aimais bien le C quand même parce que je trouve qu'il reste très proche du langage machine et je suis peut-être maso mais j'ai toujours aimé les pointeurs (de pointeurs de ...).
    Et je trouve qu'on programme mieux si on comprend ce qui se passe. Alors le C reste sans doute important comme part de l'apprentissage ?

Discussions similaires

  1. Réponses: 12
    Dernier message: 18/03/2019, 15h51
  2. Réponses: 1
    Dernier message: 09/10/2013, 22h41
  3. Réponses: 3
    Dernier message: 13/09/2010, 21h39
  4. Réponses: 4
    Dernier message: 24/09/2009, 12h50
  5. Réponses: 8
    Dernier message: 20/09/2007, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo