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. #41
    Membre très actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 151
    Par défaut
    Citation Envoyé par fregolo52 Voir le message
    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.
    Effectivement, je trollais un peu.

    Maintenant, et pour etre un peu plus sérieux, je prends tellement plaisir à coder des choses avec le C++, boost et Qt que je ne vois plus l'utilité d'employer un autre langage (excepté le temps de compilation).

    Par exemple, les signaux de boost (pour le modèle et le controlleur) et ceux de Qt (pour le controlleur et la vue) m'aident beaucoup à coder un MVC que je trouve séduisant.

    Après, mes souvenirs de Java ont 10 ans, j'imagine que les choses ont évoluées.

    Pour le webservice, je ne connais pas bien le web, mais mon avis est que Java est sur sa fin par les choix que fait Oracle, le dernier procès avec Google en est la preuve. Je trouve par contre que GWT est une bonne solution.

  2. #42
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    @Matthieu Vergne: en fait, ce qui a tout chamboulé c'est la prolifération d'appareils portables (iphones, consoles, etc.). En gros, et selon ce que j'ai personnellement compris du problème, les langages interprétés tels le java sont trop gourmands en ressources (en particulier la consommation d'énergie: un processeur consomme beaucoup d'énergie).
    c++ offre une bonne solution, à condition que les "sdk natives" des appareils puissent s'interfacer avec, et il semble que les constructeurs aient choisi cette voie.

  3. #43
    Membre éprouvé
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 292
    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 292
    Billets dans le blog
    3
    Par défaut
    Donc plutôt que du cross-platform, ce serait du cross-environment.
    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 {^_^})

  4. #44
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par Matthieu Vergne Voir le message
    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.
    C'est le problème de répéter la même chose pendant des années. Lorsque les choses évoluent, ce que l'on dit devient progressivement des bêtises.

    L'enseignement du C++ a longtemps été (et continu dans beaucoup de formations) avec être basé sur une approche "historique" (comprendre "archaïque"), orienté sur une approche bas niveau, sans prendre en compte les fonctionnalités évoluées (différent de complexe) du langage ni l'évolution des besoins des entreprises (maintenabilité, évolutivité, etc).
    Sans être un spécialiste du Java, j'imagine que le langage a appris à exploiter les ressources natives des systèmes.

    Idem pour la portabilité. Les différentes versions de la JVM peuvent parfois mettre à mal un programme java sur plusieurs machines. Le C++ a bénéficié d'outils de compilation et de libs portables (boost, Qt, cmake, etc) qui permet de proposer assez facilement une appli sur différentes plateforme (bien qu'un petit coup de normalisation de l'abi pourrait encore améliorer les choses)

    Bref, a part pour s'amuser à troller sur le chat, rester sur des idées préconçus n'aident pas trop

  5. #45
    Membre éprouvé
    Avatar de Matthieu Vergne
    Homme Profil pro
    Consultant IT, chercheur IA indépendant
    Inscrit en
    Novembre 2011
    Messages
    2 292
    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 292
    Billets dans le blog
    3
    Par défaut
    Sauf que parler d'idées préconçues c'est un peu dur {'^_^}. Obsolète, d'accord, le fait est que j'ai plus touché à C++ depuis longtemps en switchant sur Java, justement pour ce côté portable et les librairies de base du langage qui permettent de rentrer dans le lard tout de suite sans avoir à retrouver telle ou telle lib. Les évolutions du C++, je n'ait suivi que ce qui voulait bien arriver devant mes yeux, autrement dit je suis loin d'être à jour. Cependant, ça ne justifie pas qu'on dise maintenant que la tendance se soit inversée, dans le sens où Java fonctionne toujours de la même manière (et donc est toujours aussi portable) en plus d'avoir tout de même gagné en rapidité (on l'utilise quand même sur des cartes à puces et des téléphones mobiles).

    Dire que ça ait convergé et que maintenant il serait bon de se poser la question lequel est le mieux selon le cas qui se présente serait plus juste je trouve. Mais dire que Java fait du natif et C++ du portable... l'article est une source de troll à part entière {'^_^}.
    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 {^_^})

  6. #46
    Membre Expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Par défaut
    Citation Envoyé par Emmanuel Deloget
    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).
    Maintenant ce ne sont plus des technical report, mais de technical specification, le namespace sera-t-il changé ? (ts2 au lieu de tr2 ?)

  7. #47
    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
    Par défaut
    Citation Envoyé par SurferIX Voir le message
    Je déteste dire ça, mais aujourd'hui, tout développement d'application doit (malheureusement) se faire vite.
    Generalisation fausse.

    Les projets d'applications medicales, militaires, de robotique, d'infrastructure, de recherche ont pour priorite d'etre correct, pas vite fait (au risque de devenir litteralement mortel). Note que c'est la ou C++ est le plus present. La qualite dans le jeu video se fait avec du temps aussi quelque soit le language.

    Donc non pas toute. La plupart.

    Et, pour simplifier au maximum, C++ ne donne pas la possibilité de faire vite.
    Discutable. C++ a des desavantage cote vitesse d'iteration oui. Ca ne veut pas dire que tu ne peux pas coder rapidement une appli en C++. Ca necessite certainement plsu de connaissances de base du language (entre autre) avant d'arriver a coder rapidement en C++, mais c'est loin d'etre impossible. J'ai fait des game jams de 3h ou de 2 jours en C++.


    Encore une fois, j'insiste, aujourd'hui, malheureusement ça n'est pas la qualité et la pérennité, mais la vitesse de développement.
    Toujours faux, ca depends des domaines. Google, Facebook et d'autres ont C++ dans leur systeme de fond (chez Facebook ils vont encore plus loin avec C++ apparemment) et ya de bonnes raisons qui n'ont pas a voir avec la vitesse de developpement parceque c'est pas la priorite.

    Cela etant dis, comme il y a effectivement un ralentissement a coder en C++, ils travaillent tous avec le standard et les outils comme CLang pour ameliorer la vitesse a laquelle on itere en C++.

    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.
    Je sais pas ou tu bosses mais dans toutes les boites ou j'ai bosse, tu fais ou pense comme ca, tu prends la porte dans la minute.


    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.
    Et pourtant... la plupart des gros jeux sont en C++. Recemment, Super Hexagon, qui est un petit jeu mais tres rapide et cross-platform, a ete totalement recode en C++. Qu'est-ce que ca pointe?

    C++ n'est actuellement pas bon pour le prototypage de concept. Coder rapidement une idee, la tester, la mettre publique, etc, tout ca c'est chaud en C++.

    Faire une application de qualite en revanche, selon les resources dispo, C++ colle largement au profil.

    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".
    C'est comme si tu disais qu'il n'y avait pas de bonne raison de choisir C++ plutot qu'una utre language. Le critere de la vitesse d'ecrtiture de code est important mais pas pour tous les projets. Donc en fait non.

  8. #48
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    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 326
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Freem
    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
    C’est le bytecode qui compte, c’est lui qui est multiplateforme.
    Ensuite d’après mon expérience, je peux dire que Java est plus multiplateforme que C++.
    Pour la gestion des dossiers par exemple, sans bibliothèque tiers, tu n’arriveras pas à compiler ton programme avec un même code source entre Linux et Windows.

    Citation Envoyé par Freem
    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...
    • Surcharge d’opérateur : Java n’implémente pas des concepts dont le développeur peut s’en passer.
      Par exemple tu n’as pas les types non-signés (unsigned) non plus, ça peut paraître grave pour un développeur C++ mais pas Java, car tu peux t’en passer.
    • Java n’a pas les paramètres par défaut mais C# les a, ce qu’il faut voir c’est pourquoi le C++ Google Style Guide déconseille leur utilisation et pousse les développeurs à utiliser la surcharge de méthode (chose qu’on fait en Java) -> Lire ici.
    • Je demande juste à voir un cas concret où on ne peut pas se passer d’héritage multiple dans une conception.


    Citation Envoyé par Freem
    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.
    Je dois reconnaître que cppreference.com s’est beaucoup amélioré.
    Le msdn n’est pas trop mauvais, tu as même une version française.
    Pour la javadoc tu as du lire l’ancienne documentation, celle de Java 7 est mieux foutu (exemple avec la classe String).


    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.
    Pas besoin de rendre les IHM standard, ça ne sert à rien, même en Java on passe de Swing à JavaFX.
    Pour les IHM il faut vivre avec son temps (Qt), par contre pour les bases de données, le standard pourrait très bien mettre en place des classes abstraites pour que les SGBD implémentent eux-mêmes des fonctions. Comme ça on aurait tous la même syntaxe dans les programmes (sans passer par Qt).

    Citation Envoyé par Freem
    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
    Le temps d’apprendre à « maitriser » un langage comme le C++, oui parce qu’il y a le je sais en faire et je m’en sors plutôt pas mal et je sais tout faire tu peux pas test



    Citation Envoyé par Klaim
    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).
    Je ne vois pas beaucoup d’offre d’emploi dans le développement Web en C++, j’ai créé un sujet sur ça il y a quelques temps et je n’ai eu qu’un seul message. Si tu poste ton avis ici, j'en serais ravi

    Citation Envoyé par Klaim
    A part RAII, ce ne sont pas les arguments qu'un developpeur de C++ moderne aurait apporte........
    Je me considère comme un développeur C++ moderne, quels arguments aurais-je du apporter ?

    Citation Envoyé par Klaim
    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)
    Ce n’est pas parce que le C++ est standard que GCC ne contient pas d’erreur.
    Peut-être que le JSR n’est pas un standard international, mais il n'est pas mauvais, ils ne font pas n'importe quoi chez le JCP.
    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

  9. #49
    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
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    Je ne vois pas beaucoup d’offre d’emploi dans le développement Web en C++, j’ai créé un sujet sur ça il y a quelques temps et je n’ai eu qu’un seul message. Si tu poste ton avis ici, j'en serais ravi
    J'y ai tellement repondu souvent sur programmers.stackexchange.com que ca fait un peu redondant. En gros ya pas mal de boites qui commencent a s'interesser au C++ pour le web (ou le cloud, comme chez Microsoft) essentiellement pour les applis web gourmandes ou embarques. Evidemment il est plus efficace a court terme de faire son appli web dans tous les languages fais pour etre rapide a coder. Mais quand le goulot d'etranglement deviens la performance du site ou le cout du harddware pour le maintenir, les boites en question se tournent vers les outils specialises pour ca.

    Encore une fois ca reste peu de boites, mais ca augmente. Ca sera jamais C++ partout evidemment, et c'est sain comme ca.


    Je me considère comme un développeur C++ moderne, quels arguments aurais-je du apporter ?
    Ne pas utiliser new et delete du tout, RAII c'est la base, et d'autres choses expliques couramment sur le forume C++ par des paves de reponses de nos amis developeurs c++.

    Ce n’est pas parce que le C++ est standard que GCC ne contient pas d’erreur.
    Cette citation n'est pas de moi.

  10. #50
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonjour,

    Citation Envoyé par Hinault Romaric Voir le message
    [B][SIZE="4"]C++ peut être utilisé pour développer des applications natives pour Android, iOS, Windows Phone, Windows RT et Blackberry 10, selon John Thomas, qui estime que « les développeurs commencent à réaliser que l’utilisation d’outils natifs pour chacun de ces écosystèmes est trop chère, et ceux-ci sont à la recherche d’une solution ».
    Question bête : le problème ne va-t-il pas se résorber de lui-même, dans le sens où il est fort probable que sur le long terme le marché ne soit dominé que par un ou deux systèmes d'exploitation?

  11. #51
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    [...] le problème [...]
    Quel problème? En tant que spécialiste c++ je ne considère pas cette situation comme un problème

  12. #52
    Membre très actif

    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
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Generalisation fausse.

    Les projets d'applications medicales, militaires, de robotique, d'infrastructure, de recherche ont pour priorite d'etre correct, pas vite fait (au risque de devenir litteralement mortel). Note que c'est la ou C++ est le plus present. La qualite dans le jeu video se fait avec du temps aussi quelque soit le language.

    Donc non pas toute. La plupart.
    Tu as entièrement raison, et je m'excuse : j'ai la vision brouillée par le fait que je sois orienté Web et SSII. En fait tout ce que j'ai dit n'est valable que dans le cadre de développement Web allié à société de services.

    (Développement Web + SSII) c'est tout de même une bonne partie du développement, mais je ne sais pas quel pourcentage.

    Accepte toutes les excuses d'un gars qui a la vision brouillée par des discours journaliers du genre "tenir les délais à n'importe quel prix quitte à faire de la merde et à devoir tout réécrire plus tard, limite c'est mieux comme ça on vend encore plus"...

    Citation Envoyé par Klaim Voir le message
    Mais quand le goulot d'etranglement deviens la performance du site ou le cout du hardware pour le maintenir, les boites en question se tournent vers les outils specialises pour ca.
    De ce que j'en sais les développeurs balancent tout sur le hard. Pour simplifier (et c'est à peine caricatural) : "oulah, si c'est lent c'est le hard. Un bon i7 avec 32 Go de RAM sur un Linux dépouillé de tout ce qui est superflu et votre appli tournera". Hop in ingénieur système qui monte la totale en un jour + le prix d'un gros PC c'est moins cher que 3 devs qui bossent pendant plusieurs jours pour optimiser l'application. Encore une fois, j'ai peut être la vision brouillée par les SSII : "la rapidité de livraison avant tout" .

  13. #53
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Par défaut
    Citation Envoyé par Klaim Voir le message
    Cette citation n'est pas de moi.
    Je confirme, c'est la mienne
    [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. #54
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Citation Envoyé par SurferIX Voir le message
    ...
    Cela fait vachement peur comme vision du travail...
    Quelle est le nom de votre SSII que je n'y postule pas ?
    Ces gens là seraient bien incapables de coder pour des cartes électroniques s'ils sont pas fichu capable de faire un logiciel pour un ordinateur.

  15. #55
    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
    Par défaut
    Citation Envoyé par SurferIX Voir le message
    Tu as entièrement raison, et je m'excuse : j'ai la vision brouillée par le fait que je sois orienté Web et SSII. En fait tout ce que j'ai dit n'est valable que dans le cadre de développement Web allié à société de services.

    (Développement Web + SSII) c'est tout de même une bonne partie du développement, mais je ne sais pas quel pourcentage.

    Accepte toutes les excuses d'un gars qui a la vision brouillée par des discours journaliers du genre "tenir les délais à n'importe quel prix quitte à faire de la merde et à devoir tout réécrire plus tard, limite c'est mieux comme ça on vend encore plus"...
    Pas besoin de s'excuser
    Note pourtant que Facebook et Google sont des entreprise totallement oriente sur le web et qui utilisent C++, Facebook de plus en plus.

    Donc c'est vraiment une question de besoin specifique a un projet a un moment T, pas une question de domaine.

    Et puis si Microsoft mets le paquets pour qu'Azure soit tres facilement utilisable en C++ pour faire des serveurs, je pense qu'il y a de bonnes raisons.

    De ce que j'en sais les développeurs balancent tout sur le hard. Pour simplifier (et c'est à peine caricatural) : "oulah, si c'est lent c'est le hard. Un bon i7 avec 32 Go de RAM sur un Linux dépouillé de tout ce qui est superflu et votre appli tournera". Hop in ingénieur système qui monte la totale en un jour + le prix d'un gros PC c'est moins cher que 3 devs qui bossent pendant plusieurs jours pour optimiser l'application. Encore une fois, j'ai peut être la vision brouillée par les SSII : "la rapidité de livraison avant tout" .
    Oui en fait c'est la strategie de base pour augmenter les perfs.
    Mais comme je le soulignais, ya un moment ou ajouter du hardware coute plus cher que rendre le software moins gourmand, meme pour des serveurs. Apres, tout le monde ne vas pas realiser cela, surtout pour des applis web avec juste quelques milliers d'utilisateurs. Quand ca deviens massivement utilise, c'est autre chose.

    En fait on a cette hierarchie dans le dev web:

    - Torcher les premieres versions en Python ou Ruby ou PHP.
    - Augmenter les perfs avec de meilleurs serveurs.
    - A un moment ca coute trop cher, du coup refaire l'appli en Java ou C# est plus rapide (Java et C# sont dans la meme magnitude de vitesse d'execution-meme si C# est souvent un peu plus rapide-, Python et Ruby sont loin derrirere, C++ est souvent devant mais pas toujours dans l'ordre de magnitude devant).
    - Si on veut radicalement reduire le cout des serveurs (tous ces languages prennent quand meme pas mal de memoire vive qui coute cher niveau energie), on passe a une solution radicale: refaire l'appli en C++

    Donc, le dernier stade est certes rare mais existe. Ya aussi les appli web ou le developpeur prefere payer ses programmeurs a faire une appli performante et peu couteuse en hardware qu'avoir a augmenter la paye du hardware tous les mois.

    Facebook a realise assez vite que meme si php est plutot rapide, il bouffait trop de hardware. Du coup ils ont fait un compilateur PHP qui genere du C++.
    Maintenant, ils sont passe a l'etape superieur en reecrivant reellement le code en C++ principalement parceque le code PHP convertis ne donne pas du code maintenable en C++ (donc tu dois continuer en PHP pour que ca vaille le coup, mais ca perds de son interet sur le long terme)
    De plus enplus de devs Facebook passent completement au C++, il faut dire que c'est une application super gourmande et qui se doit d'etre reactive.

    Pour rappel, quand ils sont passes au compilateur PHP->C++, ils ont reduis de moitier le parc hardware necessaire pour faire tourner Facebook.


    C'est aussi important de comprendre les limites de son application meme sur device portable. Admettons que je fasse un jeu tres long pour Android. C'est un RPG avec une histoire bien longue, qui garanti au moins 50h de jeu. Je la fais disons en Java pour me simplifier la vie. Le souci que je vais avoir, c'est que jouer au jeu va bouffer pas mal d'energie et donc reduire la qualite de l'experience du jeu (en plus du reste). Parceque c'est un jeu long. Alors bon tous les jeux sont pas long, mais le mien l'est. Alors pour reduire les soucis, je peu toujours tenter d'optimiser mon code Java, mais si je peu reecrire le tout en C++, ca va etre drastiquememt positif niveau energie.

    Au final, ca depends fortement de ce que l'ont fait, mais avec les devices et le coup du hardware en general, l'energie est super importante pour certaines applications, auquel cas c'est tentant de passer directement au bazooka. Pour peu qu'on ai des devs qui peuvent le faire.

    Personellement j'ai torche des jeux iphone tres vite en C++ ya quelques mois. Pour peu qu'on ait un framework adapte au type d'appli ( et yen a des tas ) on peut facilement faire des trucs peu gourmand et tres cross-platforme ( voir l'histoire de Super Hexagon ).

    Dans pas longtemps je compte m'emtrainer a faire du web avec C++ (certainement avec cppcms). Pour cela, je vais juste faire de tres petits sites dynamiques. A partir de cette experience et combine avec mes precedentes experiences avec Java, C# et Python pour le web (j'ai peu fait de Ruby), ca me donnera un vrai instinct de quand ca vaut le coup de passer au C++.

    Rien ne vaut l'experience.

  16. #56
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    SuferIX ma vision de la SSII n'est pas la même que toi.
    En gros tu sorts un truc pourris en 2 jours à cause des délais (on verra plutard ou jamais).
    Et quand tu as une évol tu prends les même voir pire d'autres personnes pour repondre un truc bencale sur l'existant ont repars pas du début et ensuite tu vas sur la maintenance d'une appli vieille de 10 ans et tu as tout compris ...

    Ensuite Transgohan un projet c'est du temps, le temps c'est de l'argent donc un projet c'est de l'argent, tu peu être passionné mais les gens qui gère la boite c'est pas forcement leurs cas, donc tu applique ce qu'ont te demande welcome in the real world :s.

    Le problème d'un projet c'est les contraintes mais sans les contraintes ont se fait chier ^^.

    Le seul truc cool au bout du comptes c'est un projet prévu sur une grosse période de temps ^^

  17. #57
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Citation Envoyé par jouana Voir le message
    Ensuite Transgohan un projet c'est du temps, le temps c'est de l'argent donc un projet c'est de l'argent, tu peu être passionné mais les gens qui gère la boite c'est pas forcement leurs cas, donc tu applique ce qu'ont te demande welcome in the real world :s.
    Il y a une différence entre faire un projet en le moins de temps possible pour gagner sur les marges et faire de la merde. Tel qu'il nous le présente c'est plutôt le second cas.
    Après c'est vrai que je suis pas encore dans ce monde là, je travaille pour une entreprise bossant pour l'armée, donc je rentre dans le cas de projet qui sont réfléchis (bien que...) et pas des projets de 2ans à faire en 2semaines.

  18. #58
    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
    Par défaut
    En fait dans le cas ideal, tu vas faire une claire difference entre du prototypage (ou tu peux aller vite et torcher le design), et le vrai developpement (ou tu n'auras rien reutilise des prototypes mais tu te serviras des infos tires des prototypes) ou il faut du code de qualite et maintenable.

    Surtout en SSII ou plein de monde vas passer derriere. Mais les SSII elles meme ne voient pas d'un bon oeil le code de qualite qui est long a mettre en place effectivement. Sauf quand le client l'impose.

    Moi, apres diverses experiences, je preferes qu'on me vire plutot que de pondre du code qui me pourrira l'annee suivante parcequ'il sera difficile a maintenir.

  19. #59
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 836
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Java ? Un standard ? Ah bon ?
    Certes... pas vraiment un standard. J'aurais dû parler de première implémentation publique.

    Citation Envoyé par Emmanuel Deloget Voir le message
    Et Java n'a toujours pas les templates - il y a des generic, dont la puissance est infime comparée aux template du C++.
    Je n'ai pas cherché à comparer l'efficacité de la programmation générique dans ces deux langages, de toute façon je suis vendu au C++

    Citation Envoyé par Emmanuel Deloget Voir le message
    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.
    A priori, l'ecma est justement là pour résoudre le problème des standards trop lents, mais je ne connaît pas super bien cet organisme.

    Citation Envoyé par Emmanuel Deloget Voir le message
    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).
    Hé ben c'est encore plus moche que je ne le pensais alors!

    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    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.
    2011-2003=8 ans, c'est plus proche de 10 que de 5.
    D'ailleurs, 2003, c'était, selon wikipedia, plus de l'ordre du bugfix.

    Et quand on parle de standard, on parle du moment ou il est effectivement publié, on enlève pas une période comme ça, pour le fun, parce que ça nous plaît. Les dates sont officielles, point barre.
    Si on commence à remettre en question les informations officielles, ou va t-on...

    Citation Envoyé par Matthieu Vergne Voir le message
    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.
    C à été conçu pour écrire un OS, mais la portabilité à toujours été dans le cahier des charges. C++ est le descendant de C.
    La principale différence entre C et Java, c'est que l'un compile et donc s'exécute partout, l'autre s'exécute partout en ne se compilant qu'une fois.

    Citation Envoyé par Gugelhupf Voir le message
    C’est le bytecode qui compte, c’est lui qui est multiplateforme.
    Pour ça que je parlais de jouer sur les mots

    Citation Envoyé par Gugelhupf Voir le message
    [*]Surcharge d’opérateur : Java n’implémente pas des concepts dont le développeur peut s’en passer.
    Hum... Pourtant, Java implémente les mécanismes orientés objet. On peu s'en passer, la preuve, des milliers de dev C le font chaque jour.

    Citation Envoyé par Gugelhupf Voir le message
    [*]Java n’a pas les paramètres par défaut mais C# les a, ce qu’il faut voir c’est pourquoi le C++ Google Style Guide déconseille leur utilisation et pousse les développeurs à utiliser la surcharge de méthode (chose qu’on fait en Java) -> Lire ici.
    Il faut aussi se demander si google est vraiment un modèle de propreté dans son code. Je me permet de rappeler ici qu'ils préfèrent éviter les exceptions en faveur des traitement d'erreur à l'ancienne: if(probleme)return -1;
    Citation Envoyé par Gugelhupf Voir le message
    [*]Je demande juste à voir un cas concret où on ne peut pas se passer d’héritage multiple dans une conception.
    Le fait que l'on puisse s'en passer n'implique pas que ce soit toujours idéal de s'en passer.
    Après tout, on peut très bien écrire un programme sans faire de classes...

    Citation Envoyé par Gugelhupf Voir le message
    Le msdn n’est pas trop mauvais, tu as même une version française.
    Peu m'importe la version française. Le problème est que ce site est bordélique, parce qu'il mélange des torchons et des serviettes!
    Tu as, en vrac, l'API win32, le framework .NET, les langages: C++, C++/CLI, C#, Vb...
    Il ne m'est pas aisé de m'y retrouver, pas aisé du tout!

    Citation Envoyé par Gugelhupf Voir le message
    Pour la javadoc tu as du lire l’ancienne documentation, celle de Java 7 est mieux foutu (exemple avec la classe String).
    C'est vrai, c'est beaucoup mieux que dans mes souvenirs.
    Par contre, toujours un sacré manque d'exemples, et les pages sont impressionnantes de longueur. Heureusement que ça charge vite malgré tout (html simple en même temps )

    Citation Envoyé par Gugelhupf Voir le message
    Pas besoin de rendre les IHM standard, ça ne sert à rien, même en Java on passe de Swing à JavaFX.
    C'est pourtant un reproche que j'ai entendu faire au C++ plus d'une fois.
    Mais sinon, je suis d'accord avec toi

  20. #60
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 641
    Par défaut
    Salut,
    Citation Envoyé par SurferIX Voir le message
    Je déteste dire ça, mais aujourd'hui, tout développement d'application doit (malheureusement) se faire vite.
    Je dois avoir travaillé pour des extra terrestres ces deux dernières années...
    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.
    En fait, lorsque on travaille (comme il est souvent recommandé de le faire) par petites itérations, on se rend souvent compte que les deux premières itérations sont, si l'on veut partir sur des bases saines, sans doute effectivement beaucoup plus lentes en C++, car l'analyse de base doit être particulièrement soignée.

    Par contre, si cette analyse de base est soignée, dés la troisième itération, le rythme s'accélère et l'on perd beaucoup moins de temps que s'il fallait tour rejeter à l'itération suivante.

    C'est vrai pour tous les langages, y compris pour C++

    Si je venais à travailler pour une SSII qui me demande de faire du "rapide et crado", je lui demanderais mon C4 après trois mois
    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.
    J'ai fait des POC en moins de deux jours prouvant qu'il était possible d'ajouter une fonctionnalité complexe à une application qui n'avait pas du tout prévu ce genre d'évolution...

    Il y a parfaitement moyen de faire du "rapide" en C++, mais il est très largement préférable de faire du "bien"

    Citation Envoyé par Gugelhupf Voir le message
    C’est le bytecode qui compte, c’est lui qui est multiplateforme.
    Ensuite d’après mon expérience, je peux dire que Java est plus multiplateforme que C++.
    Pour la gestion des dossiers par exemple, sans bibliothèque tiers, tu n’arriveras pas à compiler ton programme avec un même code source entre Linux et Windows.
    Si tu te limites strictement au C++ (comprends: sans recourir aux extensions propres à chaque compilateur), tu peux parfaitement arriver à quelque chose qui compile aussi bien sous linux que sous windows, le tout sans avoir à écrire ne serait-ce qu'une instruction conditionnelle quant à la plateforme visée .

    Il n'y a, en définitive que certains aspects propres à l'OS pour lesquels ce n'est pas forcément vrai (généralement liés au système de fichiers, d'ailleurs), mais, en choisissant correctement les bibliothèques avec lesquelles tu devras de toutes manières travailler (C++ en standard reste malgré tout... dépouillé ), le seul problème qui pourrait subsister tiendrait plus largement de l'absence de certains outils sur certaines plateformes (je pense, par exemple, à l'absence de MsOffice sous linux )
    [LIST][*]Surcharge d’opérateur : Java n’implémente pas des concepts dont le développeur peut s’en passer.
    Par exemple tu n’as pas les types non-signés (unsigned) non plus, ça peut paraître grave pour un développeur C++ mais pas Java, car tu peux t’en passer.
    Puis tu t'étonneras sans doute d'avoir un résultat incohérent en tentant d'accéder à un index négatif dans un tableau
    [*]Java n’a pas les paramètres par défaut mais C# les a, ce qu’il faut voir c’est pourquoi le C++ Google Style Guide déconseille leur utilisation et pousse les développeurs à utiliser la surcharge de méthode (chose qu’on fait en Java) -> Lire ici.
    Tu sembles avoir occulté un passage de la règle que tu cites, et que je reproduis intégralement
    Citation Envoyé par Google coding rules
    We do not allow default function parameters, except in limited situations as explained below. Simulate them with function overloading instead, if appropriate.
    Ils interdisent l'usage de paramètres par défaut, sauf dans certaines situations.

    A choisir, je préfère aussi les éviter autant que possibles

    Sauf que, parfois, il est beaucoup plus sain de passer un paramètre par défaut que de fournir une surcharge supplémentaire, car cela se répercuterais sur trop de classes ou parce que cela nécessiterait un refactoring par trop important
    Je demande juste à voir un cas concret où on ne peut pas se passer d’héritage multiple dans une conception.
    Soient les classes
    • Générateur, qui implémente l'interface ProducteurDeCourent,
    • Turbine qui implémente les interfaces DebitVolumétrique et Rotatif
    • Les fabriques qui vont bien pour ces deux classes
    • UtilisateurDeTurbine, qui manipule une turbine en interne
    • UtilisateurDeGenerateur, qui manipule un généateur en interne
    Comment créer la classe Turbo-Generateur de sorte que les classes UtilisateurDeTurbine et UtilisateurDeGenerateur puissent en profiter conjointement pour leur évolution chacun de leur coté

    Sans l'héritage multiple, c'est impossible, avec, cela ne te posera aucun problème

    (note que la classe Turbine utiliserait déjà l'héritage multiple pour implémenter ses deux interfaces )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

+ 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