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

Go Discussion :

Le langage Go se mesure à C++, Java et Scala : une nouvelle étude comparative des performances


Sujet :

Go

  1. #21
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 149
    Points : 28 116
    Points
    28 116
    Par défaut
    Que pensez-vous des résultats de cette étude ?
    Ca ne semble pas tres revelateur... Un seul algorithme teste, meme s'il est large, ce n'est que peu representatif. Et puis au survol du rapport, on trouve un truc bizarre avec la question du python, qui est nomme mais non compare.


    Et du langage Go et ses perspectives d'avenir ?
    Des langages, il y en a beaucoup aujourd'hui. Et les seuls qui sont vraiment utilises (meme sur des marches de niche) sont ceux qui repondent a un besoin. Go repond-il a un besoin ? A priori non - je ne me base pas sur les explications fumeuses disant que c'est plus simple et mieux que les autres langages.
    Sans un besoin ou un but, je ne vois pas comment Go pourrait servir a quelque chose.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  2. #22
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par kimelto Voir le message
    Ils parlent surtout du fait que Java encourage heritage, et que donc le programmeur raisonne en pensant aux types.
    Citation Envoyé par xelab Voir le message
    L'héritage c'est quand même un principe de la POO! Et puis la généricité permet aussi une certaine souplesse...
    +1 avec xelab... en quoi est-réellement du raisonnement, côté langage ? la plupart du temps ce travail est déjà fait en amont sur des outils UML-like... ça n'a rien de spécifique à Java. seul le côté verbeux pour compléter ce qui n'a pas été généré est ensuite lourd à écrire (et encore )


    si tu veux raisonner en terme de types... regardes du côté des langages plus formels ayant des modélisations orientée-type et non orientée-objet
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Parce que Go ne gere pas l'heritage, tout simplement.
    Le duck typing est beaucoup plus puissant que ce qu'on peut penser Surtout si on decouple bien les "roles" (e.g. writer, reader, ...) avec les interfaces.

  4. #24
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 149
    Points : 28 116
    Points
    28 116
    Par défaut
    Bonjour,

    Citation Envoyé par Idelways Voir le message
    Sans surprise, le langage C++ est le plus économe en mémoire vive et celui qui offre la Runtime la plus rapide.
    Le résultat de ce benchmark dévoile en revanche que c'est le langage qui nécessite le plus « d'effort d'optimisation », des manipulations parmi lesquelles certaines sont « à un niveau de sophistication hors de la portée du développeur moyen », affirme Robert Hundt.
    En meme temps, c'est pour ca que c'est de l'optimisation : ce n'est pas une chose que fait le developpeur moyen, mais une chose que fait un specialiste du domaine.

    Si le but de Go est de faire un langage moyen, permettant a n'importe quel developpeur moyen de faire un programme moyen, ils ont des chances de reussir.
    Par contre, faire optimiser a outrance un developpeur moyen, c'est en faire un expert, et donc on en revient a ce qu'ils reprochent a C++.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #25
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 309
    Points : 928
    Points
    928
    Par défaut
    Citation Envoyé par kimelto Voir le message
    Parce que Go ne gere pas l'heritage, tout simplement.
    Le duck typing est beaucoup plus puissant que ce qu'on peut penser Surtout si on decouple bien les "roles" (e.g. writer, reader, ...) avec les interfaces.
    Si vous voulez du duck typing, de l'héritage, le tout dans un système statiquement et strictement typé, il y a toujours OCaml

  6. #26
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par TropMDR Voir le message
    Si vous voulez du duck typing, de l'héritage, le tout dans un système statiquement et strictement typé, il y a toujours OCaml
    Comment "duck typing" et "statiquement et strictement typé" peuvent cohabiter ensemble ?

    Je suis pas un pro d'ocaml, loin de là, mais je pensais que l'inférence de type rendait justement le duck typing impossible.

    Tu as des exemples ? Ca m'intéresse.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 309
    Points : 928
    Points
    928
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Comment "duck typing" et "statiquement et strictement typé" peuvent cohabiter ensemble ?

    Je suis pas un pro d'ocaml, loin de là, mais je pensais que l'inférence de type rendait justement le duck typing impossible.

    Tu as des exemples ? Ca m'intéresse.
    Alors, disons qu'un canard, c'est un objet qui sait faire coincoin. Donc je peux utiliser un canard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let utilise_canard c =
      print_string "J'utilise un canard. ";
      c#fait_coin_coin
    Ensuite tu peux définir un vrai canard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class canard =
      object
        method fait_coin_coin = print_endline "Je suis un canard qui fait coin coin"
        method envoler = print_endline "Je suis un canard et je m'envole"
      end
    Mais tu peux aussi par exemple avoir un vélo qui fait coincoin quand il klaxonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class velo =
      object
        method fait_coin_coin = print_endline "Je suis un vélo qui fait coincoin quand il klaxonne"
        method pedaler = print_endline "Je suis un vélo et je pédale"
      end
    Et là tu peux utiliser les deux avec utiliser_canard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let () =
      let c = new canard in
      let v = new velo in
      utilise_canard c;
      utilise_canard v;
      v#pedaler;
      c#envoler
    Avec comme output
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    J'utilise un canard. Je suis un canard qui fait coin coin
    J'utilise un canard. Je suis un vélo qui fait coincoin quand il klaxonne
    Je suis un vélo et je pédale
    Je suis un canard et je m'envole
    Donc voilà, duck typing !

    Pourtant, tout ça est bien statiquement typé. La première fonction a comme type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    val utilise_canard : < fait_coin_coin : 'a; .. > -> 'a = <fun>
    ce qui signifie "je suis une fonction qui attend un objet qui a au minimum une méthode 'fait_coin_coin' qui retourne un certain type, et je retourne ce même type"

    D'ailleurs, on peut ajouter une classe avec un type de retour différent
    Code : 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
    class canard_compteur =
      object
        val mutable count = 0
        method fait_coin_coin =
          count <- count + 1;
          Printf.printf "Je suis un canard qui a fait coin coin %i fois\n" count;
          count
        method envoler = print_endline "Je suis un canard et je m'envole"
      end
     
    let () =
      let cc = new canard_compteur in
      ignore (cc#fait_coin_coin);
      ignore (utilise_canard cc);
      let i = utilise_canard cc in
      Printf.printf "Le canard a fait coin coin %i fois\n" i
    avec comme sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Je suis un canard qui a fait coin coin 1 fois
    J'utilise un canard. Je suis un canard qui a fait coin coin 2 fois
    J'utilise un canard. Je suis un canard qui a fait coin coin 3 fois
    Le canard a fait coin coin 3 fois
    Voilà voilà

  8. #28
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 2
    Points : 5
    Points
    5
    Par défaut l'avenir est dans la concurrence
    Je suis assez d'accord avec thierrybenji

    Google n'aurait jamais dû faire un moteur de recherche, après tout il y a altavista
    Pourquoi citroen a inventé le chevron? les voitures existaient avant lui
    et puis Pasteur nous emm** avec ses vaccins, les plantent ça fonctionne tout seul

    Plus sérieusement, je ne dis pas qu'essayer c'est réussir, je dis que réussir c'est commencer par essayer.Nous verrons bien où ils nous embarquent avec ce langage.

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 100
    Points : 150
    Points
    150
    Par défaut
    J'aime beaucoup déterrer des topics de prévision après que de l'eau a coulé sous les ponts !
    C'est assez amusant de voir ce qui s'est passé depuis ! Et j'avoue que je partageais votre avis à l'époque aussi. Et pourtant maintenant je suis bien accroc de ce langage.

    Quel est votre avis maintenant sur le sujet ?

  10. #30
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 58
    Points : 76
    Points
    76
    Par défaut Go a gagné en maturité
    Il serait intéressant de refaire cet test comparatif aujourd'hui avec les améliorations qui ont été apportées au langage et compilateur Go qui a bien gagné en maturité.

    En fait ce test aux conclusions très en défaveur de Go a déjà été critiqué en son temps à la page : https://blog.golang.org/profiling-go-programs qui montre comment Go peut pratiquement rattraper tout son retard sur C++ par une choix plus judicieux des structures de données manipulées par le programme.

    Le compilateur Go a encore de très grandes marges de progression sous le pied de ses développeurs !! Petit langage deviendra Grand...

Discussions similaires

  1. Java Geotools : Ajouter une nouvelle couche se basant sur une requête SQL
    Par cgi.vnf dans le forum SIG : Système d'information Géographique
    Réponses: 0
    Dernier message: 07/07/2014, 14h37
  2. Java : Oracle adopte une nouvelle nomenclature pour les mises à jour du JDK
    Par Cedric Chevalier dans le forum Général Java
    Réponses: 8
    Dernier message: 20/05/2013, 18h58
  3. Réponses: 2
    Dernier message: 20/06/2011, 12h14
  4. Réponses: 0
    Dernier message: 06/06/2011, 12h47
  5. [langage] Recuperer la version de Java depuis perl
    Par simonT dans le forum Langage
    Réponses: 2
    Dernier message: 09/11/2006, 17h07

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