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

C++ Discussion :

Le meilleur langage pour le développement cross-platform est-il le C++ ?


Sujet :

C++

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Points : 49
    Points
    49
    Par défaut
    Totalement d'accord avec ceci. Il faut arrêter avec Java.
    Qt est l'avenir.

  2. #22
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par djarBoy Voir le message
    Totalement d'accord avec ceci. Il faut arrêter avec Java.
    Qt est l'avenir.
    Tu peux argumenter ? Pourquoi ce framework plutôt qu'un autre ?

    Sur ce site il y a un déjà un grand débat C++ vs Java.

    Pour le peu de Java que j'ai fait, ces 2 langages peuvent être complémentaire et non concurrentiel.
    Je vois mal une unité de calcul au Cern ou CEA autre qu'en C/C++. Et j'ai tout autant de mal à voir un WebService en C++. Même si c'est possible de faire les 2 dans les 2 langages.

    Pour en revenir au titre, avec Java tu fais un dév cross-plateformes, en C++ y'a toujours une adaptation du dév. Si c'est pas toi qui la fait c'est le framework.

    Pour les mobiles, je n'y connais rien (j'ai fait un peu de PalmOS), chaque OS a son propre mode de fonctionnement, donc comment est-il possible de faire un code multi-plateforme ? Si Embarcadero crée un framework qui fait abstraction de toutes les spécificités des OS, je leur tire mon chapeau.

  3. #23
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    Même si chaque langage continue et continuera à avoir ses particularités, ses avantages et ses défauts, il faut avouer que la montée en puissance de Qt met un pavé dans la mare dans le monde du développement cross-platform. Avec Qt, on atteint une productivité parfois supérieure à celle qu'on peut avoir avec aux autres langages objets pourtant parfois bien plus récents, tout en continuant à bénéficier d'optimisations bas-niveau si nécessaire.

    Il comble le gros soucis du langage qu'on avait il y a encore quelques années, à savoir développer rapidement tout en assurant la compatibilité multi-platformes sans efforts supplémentaires ou presque, et sans devoir empiler trente milles librairies différentes (avec les incohérences que ça suppose, rien que de devoir assurer les fonctions de conversions entre des strings et autres conteneurs de lib différentes, j'en ai soupé...).

    Plus le temps passe et plus je me dis que j'ai peut-être finalement misé sur le bon cheval, les annonces sur Qt devenant de plus en plus intéressantes.

  4. #24
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Qu'est-t-il possible de faire avec un autre langage par rapport au C++ ?
    De la réflexion, de la sérialisation (quoi que avec Boost), et une meilleure gestion des chaines (je pense au split(), join() qui sont absent dans le standard même si présent dans Boost...)
    Avec C++11, et plus tard C++17 (Modules, API : FileSystem et Networking), je pense que le C++ n'aura rien à envier aux autres langages.

    Je pense qu'on pourrait très bien faire du mobile et du web en C++ (oui oui, du web), mais si on ne le fait pas trop maintenant, c'est qu'on ne le fera pas forcément plus tard non plus.

    Personnellement, ce n'est pas vraiment les pointeurs et la gestion de la mémoire qui m'inquiètent, car comme dit plus haut on a les références (&), aujourd'hui les pointeurs sont nécessaires pour les collections hétérogènes ou pour les classes qui s'appellent elles-mêmes (liste chainée par exemple).
    Avec "pour un new de créé, faire un delete" et le RAII il ne devrait pas y avoir de problème de mémoire.

    Ce qui m'inquiète c'est plutôt la richesse du C++, moi-même j'en apprend tout les jours sur ce langage, alors que pour Java j'en ai fais le tour en quelques semaines/mois (sans compter les API).
    C++ est plus "permissif" (les variables globales, l'héritage multiple par exemple), il demande plus de temps d'apprentissage et donc on est susceptible d'avoir une courbe d'apprentissage plus longue (ex: j'ai une variable au-dessus de la déclaration d'une classe, puis d'une fonction, est-ce que la variable est accessible dans la classe, et dans la fonction ? à quoi sert "::variable" dans un programme ? Différence entre un struct et une class ? Pourquoi peut-f-on faire de l'héritage privé ? etc... ).
    Autre exemple, avec différentes manières de déclarer et initialiser en C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" };
    std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" });
    std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" }; // see "Uniform initialization" below
    C'est justement cette richesse qui peut se retourner contre les développeurs qui travaillent en équipe.

    Après il faut voir le bon coté des langages de "haut niveau", les langages compilés en bytecode je veux dire, si on met de coté le garbage collector.
    Java avait des performances mitigés au début mais donne des performances assez proches du C++ dans certains cas aujourd'hui, même si la consommation de mémoire reste supérieur.
    Je pense qu'il y a du bon dans un langage plus cadré et restrictif comme Java.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #25
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    Points : 2 625
    Points
    2 625
    Par défaut
    Citation Envoyé par fregolo52 Voir le message
    Pour en revenir au titre, avec Java tu fais un dév cross-plateformes, en C++ y'a toujours une adaptation du dév. Si c'est pas toi qui la fait c'est le framework.
    Si on veut jouer sur les mots, avec Java, c'est du dev mono plateforme: le binaire généré ne fonctionne que sur une machine virtuelle java

    Si c'est le framework qui s'adapte, alors où est le problème? L'important, c'est que le programme ne soit pas modifié d'une plate-forme à l'autre, peu importe que ce soit le framework qui fasse l'abstraction!

    Citation Envoyé par fregolo52 Voir le message
    Pour les mobiles, je n'y connais rien (j'ai fait un peu de PalmOS), chaque OS a son propre mode de fonctionnement, donc comment est-il possible de faire un code multi-plateforme ? Si Embarcadero crée un framework qui fait abstraction de toutes les spécificités des OS, je leur tire mon chapeau.
    Hum... justement, ces derniers temps, le nombre d'OS à tendance à se réduire, non?
    Si ils arrivent à faire un truc qui marche sur iTrucs et android, ils touchent déjà 80% du marché, je pense.

    Après, côté technique, je doute fortement que le principe de fonctionnement de l'API des OS soit fondamentalement différent: déjà, beaucoup sont basés sur un UNIX, ce qui permet d'utiliser POSIX. Ca résout une bonne partie des problèmes.
    Après, côté graphique, le principe est toujours le même: un buffer, des fonctions pour le manipuler, un système de coordonnées, voire, allez, un contexte openGL.

    En C++, tu fait quelques templates "primitives", et tu bâtis le reste du framework dessus. Reste plus qu'a spécialiser les templates pour chaque OS que tu veux supporter, le reste s'adapte automatiquement.


    Citation Envoyé par Gugelhupf Voir le message
    Qu'est-t-il possible de faire avec un autre langage par rapport au C++ ?
    De la réflexion, de la sérialisation (quoi que avec Boost), et une meilleure gestion des chaines (je pense au split(), join() qui sont absent dans le standard même si présent dans Boost...)
    Comme tu le dis si bien, boost permet la serialization. La réflexion, je ne sais pas. D'ailleurs, je ne sais pas à quoi ça sert... enfin, en théorie, oui, mais dans la pratique...

    Sinon, qu'est-ce qui est possible en C++ qui ne l'est pas dans les autres langages, c'est une question intéressante aussi.
    Par exemple, surcharge d'opérateur que Java n'a pas aux dernières nouvelles.
    Paramètres par défaut que C# n'a pas.
    Héritage multiple, qui peut avoir son utilité, bien qu'a utiliser avec prudence...
    Divers sites de référence propres! Genre cplusplus.com ou cppreference.com. Parce que désolé de dire ça, mais je ne parviens que difficilement à m'y retrouver dans la doc Oracle et dans la msdn.

    Et surtout, des conteneurs très bien foutus et intuitifs!
    Genre std::set, si on le compare à HashSet de C#, c'est plus agréable à manier je trouve, ou alors j'ai raté une étape... std::set, je n'ai eu besoin que de 5 minutes la première fois pour comprendre comment ça marche avec une classe faite par l'utilisateur. Avec HashSet, il semble que je n'ai rien commpris puisque le résultat que je veux, je ne l'ai toujours pas.
    Il y a aussi les versions "multi". Je sais pas pour Java, mais .NET ne les intègre pas.

    Citation Envoyé par Gugelhupf Voir le message
    Avec C++11, et plus tard C++17 (Modules, API : FileSystem et Networking), je pense que le C++ n'aura rien à envier aux autres langages.
    Vrai que filesystem manque cruellement...
    Pour moi, C++ & boost permet de tenir la dragée haute aux autres langages. Manque que l'IHM, mais pour moi, les IHM ne doivent pas être intégrées au standard, ça bouge bien trop vite pour ça, et on parle de standard industriel ici, pas d'un standard pour la mode.

    Citation Envoyé par Gugelhupf Voir le message
    C'est justement cette richesse qui peut se retourner contre les développeurs qui travaillent en équipe.
    Tu soulèves un sacré lièvre. C'est vrai que C++ demande probablement une meilleure coordination des gens, et il certain que l'apprentissage est plus long.

    D'un autre côté, une fois maîtrisé, je pense que ce langage est plus productif que les autres. J'ai plus qu'a espérer qu'un jour j'aie un CDI dans une boîte ou les chefs pensent comme ça aussi

  6. #26
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par Freem Voir le message
    Hum... justement, ces derniers temps, le nombre d'OS à tendance à se réduire, non?
    Si ils arrivent à faire un truc qui marche sur iTrucs et android, ils touchent déjà 80% du marché, je pense.
    Aujourd'hui, sûrement.
    Demain (en janvier, on verra les chiffres des ventes de noël), avec les tablettes, faudra pas oublier Windows et après demain Linux (Ubuntu).

  7. #27
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Freem Voir le message
    Vrai que filesystem manque cruellement...
    flesystem est à double tranchant, et n'a, à mon avis, pas sa place dans le standard du langage lui-même. c++ est sensé être indépendant de la plateforme sur laquelle il est compilé (processeur et os, c'est la raison pour laquelle, par exemple, la taille des types natifs n'est pas définie dans le standard). Cette indépendance vis à vis de la plateforme est, à mon avis, un bon choix, car gérer les différences entre plateforme au niveau du standard du langage serait ingérable et amènerait inévitablement à une perte de portabilité. L'inconvénient est que le programme doit être compilé sur la plateforme cible.

    C'est pourquoi c'est une bonne chose que filesystem reste dans une lib tierce (boost en l'occurence, et vous remarquerez que boost::filesystem doit être compilé; on ne peut pas utiliser uniquement l'en-tête).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  8. #28
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Sujet très intéressant, mais il semble que certaine personne ne connaisse pas bien les langages que sont Java et c# (comme moi qui n'y connait pas grand chose au c++), certes le c++ évolue mais pas aussi vite que ces 2 là (je parle de la standardisation).
    Et bon le cross-plateforme c'est jolie sur le papier, mais la mise en œuvre c'est pas la même chose.
    Pour une classe de base sans traitement elle marchera sûrement tel quel sur tous les mobiles, mais à partir du moment où on a des traitements des interactions avec le téléphone chaque plateforme à ses librairies et ses méthodes propres, après suffit de mettre une couche d'abstraction (c'est aussi l'un des rôles des machines virtuel) mais existe-t-il une solution vraiment correcte et performante à l'heure actuelle (qui serait très proche d'un développement natif ciblant la plateforme) ?
    Je pense que c'est surtout là qu'est le problème peut importe le langage.

    Citation Envoyé par Freem Voir le message
    Et surtout, des conteneurs très bien foutus et intuitifs!
    Genre std::set, si on le compare à HashSet de C#, c'est plus agréable à manier je trouve, ou alors j'ai raté une étape... std::set, je n'ai eu besoin que de 5 minutes la première fois pour comprendre comment ça marche avec une classe faite par l'utilisateur. Avec HashSet, il semble que je n'ai rien commpris puisque le résultat que je veux, je ne l'ai toujours pas.
    Il y a aussi les versions "multi". Je sais pas pour Java, mais .NET ne les intègre pas.

    Pour le hashset c'est super simple à utiliser (toujours regarder les exemples du msdn) après faut voir ce que tu voulais faire avec.

  9. #29
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    Je pense qu'on pourrait très bien faire du mobile et du web en C++ (oui oui, du web), mais si on ne le fait pas trop maintenant, c'est qu'on ne le fera pas forcément plus tard non plus.
    Il se trouve que c'est exactement l'inverse: on fait plus de web et de mobile avec C++ qu'auparavant (sans que ca soit super explosif comme grandissement non plus). Essentiellement parceque certaines applications gourmandes en resources sont moins cher a gerer en C++ (parceque contrairement a ce que certains pensent, les cou des serveurs ou les perfs peut parfois etre plus cher que le salaire des developpeurs... ne serait-ce que si ca rends l'application difficilement utilisable.)

    Personnellement, ce n'est pas vraiment les pointeurs et la gestion de la mémoire qui m'inquiètent, car comme dit plus haut on a les références (&), aujourd'hui les pointeurs sont nécessaires pour les collections hétérogènes ou pour les classes qui s'appellent elles-mêmes (liste chainée par exemple).
    Avec "pour un new de créé, faire un delete" et le RAII il ne devrait pas y avoir de problème de mémoire.
    A part RAII, ce ne sont pas les arguments qu'un developpeur de C++ moderne aurait apporte........

    Ce qui m'inquiète c'est plutôt la richesse du C++, moi-même j'en apprend tout les jours sur ce langage, alors que pour Java j'en ai fais le tour en quelques semaines/mois (sans compter les API).
    C++ est plus "permissif" (les variables globales, l'héritage multiple par exemple), il demande plus de temps d'apprentissage et donc on est susceptible d'avoir une courbe d'apprentissage plus longue (ex: j'ai une variable au-dessus de la déclaration d'une classe, puis d'une fonction, est-ce que la variable est accessible dans la classe, et dans la fonction ? à quoi sert "::variable" dans un programme ? Différence entre un struct et une class ? Pourquoi peut-f-on faire de l'héritage privé ? etc... ).
    Autre exemple, avec différentes manières de déclarer et initialiser en C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" };
    std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" });
    std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" }; // see "Uniform initialization" below
    C'est justement cette richesse qui peut se retourner contre les développeurs qui travaillent en équipe.
    Dans la pratique, je pense que c'est de la pessimization.
    L'avenir nous le diras mais pour avoir ete dans des cas de fortes differences de connaissances du C++ dans l'equipe, tant qu'il y q quelqu'un pour transferere les connaissances c'est vraiment un probleme tres mineur.
    Ou alors les devs veulent pas apprendre auquel cas c'est un autre probleme bien plus grave...

    Après il faut voir le bon coté des langages de "haut niveau", les langages compilés en bytecode je veux dire, si on met de coté le garbage collector.
    (note anexe) Deux choses bien differentes. "haut niveau" ca sous entends "loin de la machine" et C++ est aussi bien haut que bas niveau (et va meme parfois plus haut que la plupart des language courants).

  10. #30
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    [...] moi qui n'y connait rien au c++), certes le c++ évolue mais pas aussi vite que [...]
    Tu commet une erreur de logique ici il me semble. Tu compares par l'affirmation deux éléments alors que tu avoues tout ignorer de l'un d'entre eux (ex. Je n'ai jamais mangé de pomme, mais j'affirme que la poire est meilleure que la pomme).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  11. #31
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    je parlais de la standardisation chose que j'ai pu voir sur le portail de développer mais après sur l'utilisation du langage en lui même

  12. #32
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    Points : 2 625
    Points
    2 625
    Par défaut
    Citation Envoyé par r0d Voir le message
    flesystem est à double tranchant, et n'a, à mon avis, pas sa place dans le standard du langage lui-même. c++ est sensé être indépendant de la plateforme sur laquelle il est compilé (processeur et os, c'est la raison pour laquelle, par exemple, la taille des types natifs n'est pas définie dans le standard). Cette indépendance vis à vis de la plateforme est, à mon avis, un bon choix, car gérer les différences entre plateforme au niveau du standard du langage serait ingérable et amènerait inévitablement à une perte de portabilité. L'inconvénient est que le programme doit être compilé sur la plateforme cible.
    Et pour ouvrir un fichier?
    Et pour afficher du texte?
    Et pour exécuter une commande système?
    Les fonctions ne sont pas compilées, pour toi? Il faut m'expliquer comment tu fais alors...
    Le standard définit les résultats des appels à des fonctions sans préciser comment ce résultat doit être obtenu, et c'est ce manque qui permet d'avoir quelque chose de portable.

    Citation Envoyé par r0d Voir le message
    Tu commet une erreur de logique ici il me semble. Tu compares par l'affirmation deux éléments alors que tu avoues tout ignorer de l'un d'entre eux (ex. Je n'ai jamais mangé de pomme, mais j'affirme que la poire est meilleure que la pomme).
    Il est de notoriété commune que le standard actuel, surnommé C++11, à mis près de 10 ans à naître.
    C++ évolue réellement moins vite que les autres langages, et je peux dire, sans avoir goûté à une pomme, qu'elle à poussé moins vite qu'une poire, pour reprendre ton analogie.

    Par contre, dire que la vitesse d'évolution des standards d'un langage type Java/C# est un avantage comparé à C++, je suis à la fois d'accord et pas d'accord.
    Java, par exemple, à un standard de base (le premier je parle) assez primitif, qui n'avait même pas les template. D'un autre côté, les langages de VM ne boxent pas dans la même catégorie: là où C++ vise à être général et utilisable pour n'importe quelle application, Java et C# me semblent viser principalement les applications à faible contraintes de performance machine mais à grosses contraintes de rendement en terme d'interfaces Homme Machine.
    Hors, pour l'électronique, je pense que les évolutions rapides sont moins utiles que les évolutions stables, contrairement au domaine des IHM ou il faut un peu "suivre la mode". D'où la dualité dans mon propos précédent.

    Par rapport à HashSet, brièvement, parce que ce n'est pas le sujet ici (quoique), pour l'utiliser avec une classe utilisateur, il faut manifestement(cf http://badger.developpez.com/tutoriels/dotnet/hashset/ ) écrire une seconde classe implémentant IEqualityComparer. Ce n'est pas exactement très pratique, et le comportement est assez étrange, en tout cas, sur ce que j'ai tenté de faire, j'ai du commettre un impair puisque le résultat n'est pas celui attendu.
    En C++, avec std::set, il suffit d'implémenter l'opérateur inférieur bool Foo::operator<(Foo const& other) et tout est géré tout seul.

  13. #33
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    je parlais de la standardisation chose que j'ai pu voir sur le portail de développer mais après sur l'utilisation du langage en lui même
    Difficile de comparer C++ à d'autres langages typiquement utilisés, vu que (à ma connaissance) seul C++, C et C# sont standardisés - et C# est standardisé par ECMA, c'est donc plus un approval du document fournit par MS qu'un véritable standard internationnal. Parmi les langages de programmation usuels, bien peu font l'objet d'un standard ISO (et ces choses là, ça n'évolue pas nécessairement très vite).

    Citation Envoyé par r0d
    flesystem est à double tranchant, et n'a, à mon avis, pas sa place dans le standard du langage lui-même. c++ est sensé être indépendant de la plateforme sur laquelle il est compilé (processeur et os, c'est la raison pour laquelle, par exemple, la taille des types natifs n'est pas définie dans le standard). Cette indépendance vis à vis de la plateforme est, à mon avis, un bon choix, car gérer les différences entre plateforme au niveau du standard du langage serait ingérable et amènerait inévitablement à une perte de portabilité. L'inconvénient est que le programme doit être compilé sur la plateforme cible.
    T'inquiète ; std::tr2::filesystem arrive ! (et oui, c'est indépendant de la plateforme ; ça met à contribution l'opérateur /, et les path sont notés avec / ; reste le problème des volumes, mais il doit existe une alternative).

    Citation Envoyé par Freem
    Manque que l'IHM, mais pour moi, les IHM ne doivent pas être intégrées au standard, ça bouge bien trop vite pour ça, et on parle de standard industriel ici, pas d'un standard pour la mode.
    Je ne suis pas trop d'accord. Je suis personnellement pour que les IHM soient intégrés au standard - le modèle de développement d'une IHM ne varie pas d'une plateforme à l'autre (on est toujours sur un système fenêtre + contrôles). L'apparence varie, mais le principe de base reste suffisamment semblable pour qu'il existe déjà des solutions multi plateformes (Qt, GTK+, wxwidget...). S'il est possible de concevoir ces librairies, alors il est possible de concevoir une librairie standard s'appuyant sur des principes similaires.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  14. #34
    Membre chevronné

    Homme Profil pro
    Mentaliste
    Inscrit en
    Mars 2008
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Mentaliste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 872
    Points : 1 813
    Points
    1 813
    Par défaut
    Citation Envoyé par Hinault Romaric Voir le message
    En parfaite adéquation avec la création d’applications d’entreprise.
    Je déteste dire ça, mais aujourd'hui, tout développement d'application doit (malheureusement) se faire vite.

    Et, pour simplifier au maximum, C++ ne donne pas la possibilité de faire vite.

    Encore une fois, j'insiste, aujourd'hui, malheureusement ça n'est pas la qualité et la pérennité, mais la vitesse de développement.

    Aujourd'hui la mode est au code jetable : on fait vite, à l'arrache, ça prend deux jours, ça marche. Dans un mois il faut faire une évolution ? On jette l'ancien code, on fait vite, à l'arrache, ça prend deux jours, ça marche.

    Le C++ n'a pas ce rapport "vitesse / ça marche" qu'ont tous les autres langages (cf tous les posts précedents) : C#, Php et même Delphi.

    Je ne critique pas le C++ en tant que tel, je dis juste que ce discours n'est pas en rapport avec le marché mondial actuel. Et encore une fois : "malheureusement".
    .I..

  15. #35
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 832
    Points : 2 625
    Points
    2 625
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Je ne suis pas trop d'accord. Je suis personnellement pour que les IHM soient intégrés au standard - le modèle de développement d'une IHM ne varie pas d'une plateforme à l'autre (on est toujours sur un système fenêtre + contrôles). L'apparence varie, mais le principe de base reste suffisamment semblable pour qu'il existe déjà des solutions multi plateformes (Qt, GTK+, wxwidget...). S'il est possible de concevoir ces librairies, alors il est possible de concevoir une librairie standard s'appuyant sur des principes similaires.
    Pour être honnête, je suis assez mitigé, mon avis n'est pas aussi tranché que ce que j'ai écrit précédemment.
    D'un côté, effectivement, le modèle, l'architecture du code, est toujours la même, mais d'un autre côté, les recommandations par rapport à l'interface changent selon l'OS.
    Le souci que rencontre wxWidgets est d'ailleurs lié à ça: jongler avec les différences d'une API à l'autre est loin d'être aisé, surtout en respectant l'esprit derrière (histoire que ça s'intègre proprement).

  16. #36
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Freem Voir le message
    Et pour ouvrir un fichier?
    Et pour afficher du texte?
    Et pour exécuter une commande système?
    Les fonctions ne sont pas compilées, pour toi? Il faut m'expliquer comment tu fais alors...
    Le standard définit les résultats des appels à des fonctions sans préciser comment ce résultat doit être obtenu, et c'est ce manque qui permet d'avoir quelque chose de portable.
    Il me semble moi que définir les préconditions et les postconditions, ça permet justement de faire en sorte que toute implémentation de la norme respecte ça - plutôt qu'une implémentation interne qui est, par définition, liée à la machine sur laquelle le code s'exécute. Par exemple, si je dis que std::thread() DOIT utiliser la fonction Win32 CreateThreadEx(), comment est-ce que je peux proposer std::thread sur Linux ?

    Savoir comment les choses sont fait n'a pas d'intérêt.

    Citation Envoyé par Freem Voir le message
    Il est de notoriété commune que le standard actuel, surnommé C++11, à mis près de 10 ans à naître.
    C++ évolue réellement moins vite que les autres langages, et je peux dire, sans avoir goûté à une pomme, qu'elle à poussé moins vite qu'une poire, pour reprendre ton analogie.
    C'est sûr, on ne peux pas le nier

    Citation Envoyé par Freem Voir le message
    Par contre, dire que la vitesse d'évolution des standards d'un langage type Java/C# est un avantage comparé à C++, je suis à la fois d'accord et pas d'accord.
    Java, par exemple, à un standard de base (le premier je parle) assez primitif, qui n'avait même pas les template. D'un autre côté, les langages de VM ne boxent pas dans la même catégorie: là où C++ vise à être général et utilisable pour n'importe quelle application, Java et C# me semblent viser principalement les applications à faible contraintes de performance machine mais à grosses contraintes de rendement en terme d'interfaces Homme Machine.
    Java ? Un standard ? Ah bon ?

    Non. Il y a un comité, piloté par Oracle, qui dit comment le langage doit évoluer, et qui fait la surprise à tout le monde après en ajoutant des choses qui n'étaient pas prévues (mais qui facilitent les développements de leurs équipes ; ok, troll inside). Ce n'est pas ça, un standard. Un standard, c'est validé par une équipe internationale d'experts indépendants et non lié au working group qui a écrit le standard (ce qui permet de repérer les erreurs, les incohérences, les limites, etc). Puis il est validé, et voté par un organisme indépendant international (par exemple, ISO). Rien que ces étapes, ça demande environ 2 ans.

    Java n'a jamais été standardisé, et ne le sera jamais, parce que ça obligerait Oracle à permettre des implémentations concurrente sans limite d'usage (ce qui n'est pas le cas aujourd'hui, cf. le procès retentissant contre Google), et ça limiterait sa "capacité à innover" (lire : à faire des procès aux autres).

    Et Java n'a toujours pas les templates - il y a des generic, dont la puissance est infime comparée aux template du C++.

    C# est effectivement un standard (ECMA-334), mais (pour parler poliment) c'est un standard du pauvre. L'organisme ECMA est certes reconnu par ISO (et de fait, les standard ECMA peuvent devenir, sur demande, des standard ISO, et ce phénomène s'est reproduit deux fois pour C#), mais il n'en reste pas moins que le process de standardisation ECMA est nettement plus simple que le process ISO. En gros, vous venez avec votre proposition de norme, vous indiquez clairement que c'est royalty free (ou quelque chose de proche ; FRAND par exemple), et hop, c'est dans la poche. C'est pour ça que les entreprises passent par ECMA pour faire standardiser leurs solutions. Une fois la solution bien établie, vous pouvez demander une standardisation ISO, qui n'est rien de plus qu'un vote (le standard ECMA et le standard ISO étant alors identique).

    Le problème qui se pointe, c'est que seules les versions 1.0 et 2.0 sont standardisées - pas les versions 3.0 et 4.0, ni la nouvelle version 5.0. La dernière version ne fait même pas l'objet d'un document de design par MS, si ma mémoire est bonne (je peux me tromper).

    Du point de vue du process utilisé pour le développement, comparer Java, C# et C++ n'est pas possible. Maintenant, si tu donnes la responsabilité des évolutions de C++ à une seule entreprise (disons Google ; Apple a ObjectiveC, Oracle a Java, MS a C#), alors le langage va évoluer plus vite (mais les évolutions seront peut-être moins pertinente).

    Citation Envoyé par Freem Voir le message
    Hors, pour l'électronique, je pense que les évolutions rapides sont moins utiles que les évolutions stables, contrairement au domaine des IHM ou il faut un peu "suivre la mode". D'où la dualité dans mon propos précédent.

    Par rapport à HashSet, brièvement, parce que ce n'est pas le sujet ici (quoique), pour l'utiliser avec une classe utilisateur, il faut manifestement(cf http://badger.developpez.com/tutoriels/dotnet/hashset/ ) écrire une seconde classe implémentant IEqualityComparer. Ce n'est pas exactement très pratique, et le comportement est assez étrange, en tout cas, sur ce que j'ai tenté de faire, j'ai du commettre un impair puisque le résultat n'est pas celui attendu.
    En C++, avec std::set, il suffit d'implémenter l'opérateur inférieur bool Foo::operator<(Foo const& other) et tout est géré tout seul.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  17. #37
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 9
    Points
    9
    Par défaut j'aimerai bien
    oui, c++ j'aime bien
    mais je trouve cet avis bizarre de la part des repreneurs de borland d'un système de développement principalement pascal (delphi) dont le c++ est depuis longtemps le parent pauvre.

  18. #38
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par danielfr40 Voir le message
    oui, c++ j'aime bien
    mais je trouve cet avis bizarre de la part des repreneurs de borland d'un système de développement principalement pascal (delphi) dont le c++ est depuis longtemps le parent pauvre.
    En même temps, ce n'est pas comme si Delphi allait avoir un avenir brillant
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  19. #39
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Freem Voir le message
    Il est de notoriété commune que le standard actuel, surnommé C++11, à mis près de 10 ans à naître.
    A peut pres la moitie. Il faut retirer la periode jusque 2003-2004 ou le sujet n'etait pas l'evolution du langage mais sa stabilisation. Et la fin ou le langage etait fixe et on en etait a la procedure ISO d'approbation.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  20. #40
    Expert éminent
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant IT, chercheur IA indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2 264
    Points : 7 760
    Points
    7 760
    Billets dans le blog
    3
    Par défaut
    Pour le développement natif, en fonction des écosystèmes, les développeurs s’orientent le plus souvent vers objective-c ou Java.

    Pourtant, ceux qui cherchent à créer des applications cross-platform tout en bénéficiant d’une approche efficace pour la réduction des couts peuvent trouver leur bonheur au sein du C++.
    C'est moi où on vente le contraire de ce qu'on nous dit depuis des années : Java est connu pour son côté multi-plateformes grâce à sa machine virtuelle, là où C et C++ sont bons pour exploiter les ressources natives de la machine du fait de leur langage bas niveau... Et maintenant on nous dit le contraire ?

    Perso je ne suis plus.
    Site perso
    Recommandations pour débattre sainement

    Références récurrentes :
    The Cambridge Handbook of Expertise and Expert Performance
    L’Art d’avoir toujours raison (ou ce qu'il faut éviter pour pas que je vous saute à la gorge {^_^})

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 40
    Dernier message: 04/05/2014, 21h42
  2. Mobile : HTML5 est-il un échec pour le développement cross-platform ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 27
    Dernier message: 03/02/2014, 10h50
  3. Langage le plus conseillé pour développements cross-platform
    Par LexLxUs dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 22/03/2011, 09h03

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