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

Projets Discussion :

Pourquoi le C++?


Sujet :

Projets

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 97
    Points
    97
    Par défaut Pourquoi le C++?
    Bonjour,

    Tout d'abord, je ne suis pas certain que ce soit le bon endroit pour poser la question, mais je n'ai pas vraiment trouvé quoi que ce soit qui corresponde...

    Voilà ma question:
    L'ensemble des tutoriels, FAQ ...etc... sur la 2D/3D jeux sont dédiés au C++ et à ses bibliothèques graphiques. J'aimerai savoir quels peuvent être les avantages de ce language par rapport aux autres (java?,python?,basic?...) pour qu'il soit aussi omniprésent.

    LDPDC

  2. #2
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Salut,

    Je dirais que premièrement c'est la rapidité d'exécution qui joue beaucoup en sa faveur.

    Sinon à mon avis, il y aurais eu peut être plus de réponses et surtout plus pointues, si le sujet aurait été posté directement dans la section C++.



  3. #3
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    C'est principalement historique.

    Le C++ s'est largement imposé de par sa proximité au langage C, le précédent langage de prédilection pour les développeurs de jeu. Le langage C de par son coté très bas niveau mais néanmoins portable (le langage C original était suffisamment simple pour être mis en oeuvre sur toute plateforme existante). L'omniprésence d'unix dans les domaines universitaires a rendu C le langage développé conjointement à Unix, très populaire. L'influence de C est telle que Java a hérité sa syntaxe de C et C++.

    La question de pourquoi, à un moment, un autre langage tel que ceux que tu cites n'a pas pu prendre le dessus ? Les exemples que tu cites sont mauvais parce qu'un langage qui aurait pu surpasser C (ou C++) aurait du exister dans la meme niche que ces deux langages, ce qui exclut donc java, basic ou python.

    Tu trouveras des exemples anecdotiques de jeux développés en java, basic ou python. Les principes algorithmiques que tu peux trouver dans les différents articles/faq, seront les mêmes indépendamment du langage (pour une grosse partie).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par LeGreg Voir le message
    C'est principalement historique.

    Tu trouveras des exemples anecdotiques de jeux développés en java, basic ou python.

    LeGreg
    Effectivement, j'avais essentiellement en tête Civilization IV de Firaxis qui a été développé en grande partie en python au détriment du C, mais je n'ai pas énormément d'autres exemples (aucun en fait). Mais même dans ce cas il s'agirait plus de donner une forte "modabilité" au jeux qu'autre chose.

    Merci pour vos réponses

    LDPDC

  5. #5
    Membre éclairé
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Points : 875
    Points
    875
    Par défaut
    Merci, c'est intéressant de savoir tout ça.

  6. #6
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    Citation Envoyé par LDPDC Voir le message
    Effectivement, j'avais essentiellement en tête Civilization IV de Firaxis qui a été développé en grande partie en python au détriment du C, mais je n'ai pas énormément d'autres exemples (aucun en fait). Mais même dans ce cas il s'agirait plus de donner une forte "modabilité" au jeux qu'autre chose.
    et encore, ce n'est que la partie gameplay qui est developpé en python. Toute la partie moteur 3D est en C++ (c'est gamebryo je croit)

    d'ailleurs, on trouve de plus en plus de jeux dont la partie gameplay est developpé dans un autre langage que le C++ (unreal script, python très souvent, java pour certains...) mais généralement, le coeur du moteur reste en C++.

    sinon, pour en revenir à la question de départ, je rajouterais que, C++ s'etant imposé à un moment donné, toutes les ressources qu'on trouve sur le net (en terme de cours et tutoriaux) ce sont adapté à cette suprémaci, du coup, comme on n trouve que des tutos en C++, les gens se mettent automatiquement au C++, et du coup ecrivent des tutos en C++ etc...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    C++ n'est pas obligatoire. Je développe un jeu de stratégie, et j'ai choisi le langage Free Pascal, avec l'environnement de développement Lazarus (un clone libre de Delphi). Un programme compilé en Pascal est tout aussi rapide que son équivalent C/C++ et portable sans problème. Free Pascal est un langage orienté objet, avec une syntaxe claire et rigoureuse, ce qui permet d'écrire des programmes faciles à relire. Il existe de nombreux composants et bibliothèques utilisables sous Lazarus, comme GLScene.

  8. #8
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Citation Envoyé par bafman
    sinon, pour en revenir à la question de départ, je rajouterais que, C++ s'etant imposé à un moment donné, toutes les ressources qu'on trouve sur le net (en terme de cours et tutoriaux) ce sont adapté à cette suprémaci, du coup, comme on n trouve que des tutos en C++, les gens se mettent automatiquement au C++, et du coup ecrivent des tutos en C++ etc...
    +1

    Maintenant, C# commence aussi à se frayer un chemin.

  9. #9
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par zabibof Voir le message
    +1

    Maintenant, C# commence aussi à se frayer un chemin.
    J'ai le SDK de DirectX ver 10 de juin 2007, pour Direct3d il ya 39 "samples" en C++ contre 17 pour du code "managed".
    Donc j'en conclus bêtement qu'on est très limité avec C# et .NET et que C++ apporte infiniment plus de possibilités.
    En plus M$ semble vouloir abandonner XNA qui est en C#

    Citation Envoyé par LeGreg Voir le message
    Tu trouveras des exemples anecdotiques de jeux développés en java, basic ou python. Les principes algorithmiques que tu peux trouver dans les différents articles/faq, seront les mêmes indépendamment du langage (pour une grosse partie).
    Oui cela n'empêche pas qu'on puisse faire de très bon petits jeux en Java comme sur javaarcade.com ; sinon Flash aussi est un bon outil

  10. #10
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    J'ai le SDK de DirectX ver 10 de juin 2007, pour Direct3d il ya 39 "samples" en C++ contre 17 pour du code "managed".
    Donc j'en conclus bêtement qu'on est très limité avec C# et .NET et que C++ apporte infiniment plus de possibilités.
    Euh... je n'arrive pas à comprendre ta logique. Tu voudrais pas conclure aussi que le C est très limité par rapport à C#, juste en comptant les exemples ?
    Citation Envoyé par Mat.M Voir le message
    En plus M$ semble vouloir abandonner XNA qui est en C#
    Ah ? Tu as des sources ou des infos ?

  11. #11
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je pense que c'est un cercle vicieux. On s'aperçoit qu'il y a beaucoup plus de ressources en C++ (rien que les tutos jeux de développez.com, la majorité utilisent le C++), alors quand on voit ça, ben on se dit qu'on ferait bien d'apprendre le C++ afin d'avoir déjà une base de ressources conséquentes.

  12. #12
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par LLB Voir le message
    Euh... je n'arrive pas à comprendre ta logique. Tu voudrais pas conclure aussi que le C est très limité par rapport à C#, juste en comptant les exemples ?
    Eh non c'est plutot l'inverse que je voulais signifier, je me suis mal fait comprendre.
    S'il ya moins d'exemples en C# c'est que C#/.NET me semblent plus limités que C++.
    En d'autres termes il ya maintes fonctionnalités exploitables ( je ne peux pas les lister il faudrait plus étudier le SDK ) en C++ qu'on ne puisse pas exploiter en C#.

    Pour XNA ce n'est qu'une éventualité..

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    En d'autres termes il ya maintes fonctionnalités exploitables ( je ne peux pas les lister il faudrait plus étudier le SDK ) en C++ qu'on ne puisse pas exploiter en C#.
    Ou tu pourrais aussi en conclure que c'est plus compliqué de comprendre en C++ donc il y a besoin de plus d'exemples !

    Bref...

    MAT.

  14. #14
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    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é : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Citation Envoyé par LeGreg Voir le message
    C'est principalement historique.
    Il me semble que la réponse est ici.

    Si l'on regarde bien l'historique du développement des jeux vidéos, on remarque tout de suite que les possibilités des machines (à chaque évolution), étaient largement en dessous des demandes des développeurs. Je m'explique. A chaque époque les développeurs de jeux pouvaient dire:

    - les processeurs sont pas assez rapides.
    - il n'y a pas assez de mémoire.
    - les cartes graphiques, à la poubelle...

    Bon j'exagère, mais les développeurs de jeux ont toujours atteints les limites fonctionnelles des PC, et doivent d'ailleurs toujours faire face à des limitations. Elles sont justes différentes selon l'époque.

    Donc à l'époque, les problèmes de performance et d'optimisation était un réel souci.

    Le C quoiqu'on en dise, était le langage qui permettait d'allier l'efficacité (niveau performance) et complexité d'un programme (niveau architecture et algorithmie du programme).

    Les machines commencant à devenir plus puissantes, les jeux vidéos sont eux aussi devenus plus complexes (à tous les niveaux). Et le langage C a commencé à montrer ses faiblesses. Non pas qu'il est impossible développer un jeu dans ce langage, ni même dans n'importe quel langage (java, C#, python, etc...), mais que le C++ était le successeur naturel. Très bonne performance, rapidité de développement et de maintenance, réutilisabilité aisée des codes, etc...

    Les machines continuent d'évoluer, et le C++ montre aussi ses faiblesses, que le java ou le C# essaient de corriger.

    Le langage de la 5éme génération est en route... Mais ce sera qui?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    S'il ya moins d'exemples en C# c'est que C#/.NET me semblent plus limités que C++.
    En d'autres termes il ya maintes fonctionnalités exploitables ( je ne peux pas les lister il faudrait plus étudier le SDK ) en C++ qu'on ne puisse pas exploiter en C#.

    En fait je ne dirais pas plus limité; le C++ a l'avantage de la portabilité alors que la technologie .NET est plus orientée M$ (bien qu'il existe des interpréteurs c# pour Linux par exemple).

    Pour avoir bossé avec les même contraintes avec C++ et C#, C# permet quand même de gagner du temps sur C++ pour certaines fonctionnalités (lecture native des fichiers XML, conteneurs équivalents à la STL) mais il faut sacrifier un petit peu de puissance processeur (pas des masses mais il y aura toujours une différence).

    Je pense que ces deux langages ont tendance à devenir équivalents; le C++ conservant l'avantage de l'ancienneté et de l'implantation ainsi que son aspect M$ Free (donc indépendant des volontés de changement de la boutique).

  16. #16
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par akd Voir le message
    En fait je ne dirais pas plus limité; le C++ a l'avantage de la portabilité alors que la technologie .NET est plus orientée M$ (bien qu'il existe des interpréteurs c# pour Linux par exemple).
    Est-ce que tu as installé le SDK de Direct X et regardé les exemples ?
    Au vu du SDK on sentbien que .NET est plus limité pour exploiter Direct X

  17. #17
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par moldavi Voir le message
    Les machines continuent d'évoluer, et le C++ montre aussi ses faiblesses, que le java ou le C# essaient de corriger.

    Le langage de la 5éme génération est en route... Mais ce sera qui?
    Je veux bien mais quelles faiblesses ?
    Qu'est-ce que C# apporte de plus par rapport à C++ à part des effets de styles syntaxiques ?
    C'est pas tel ou tel langage de toute façon qui fera un jeu meilleur qu'un autre...

  18. #18
    Invité
    Invité(e)
    Par défaut
    .NET est peut être plus limité mais tu as toujours l'ouverture fournie par les DLLs et autres trucs du genre.

    Ce qui fait qu'en codant les éléments que tu ne peux pas utiliser directement dans un autre langage (Hi C++ !) et en crééant une lib externe tu pourras arriver au même résultat ^^.

    Perso je suis plutot une pro C++ mais l'expérience m'a fait voir qu'il peut aussi y avoir des bons dans d'autres langages sur certains points.

    Pour PM on est parti pour diverses raisons (principalement ressources de codeurs dispos en fait) sur C#. Le moteur TV3D qu'on utilise est un moteur écrit en C++ et basé sur DirectX.

    J'avais commencé à en établir auparavant une première version en C++; quand j'ai vu la différence de complexité entre TinyXML et la lib embarquée de C# y a pas photo on ne peut dire que merci à crosoft (et pourtant je les aime pas).

    Après l'un comme l'autre, avec une véritable programmation orientée objet, les différences seront relativement faibles à un ou deux détails près puisque les appels à des dlls compensent les manques de C# et que le code écrit est plus succint que celui de C++ pour arriver au même résultat.

    La seule vrai différence c'est la performance en temps CPU d'exécution du code écrit. Et sur nos machines modernes autant dire que tout le monde va te rire au nez quand tu vas avancer cet argument ( *part cacher son Troll très loin* ).

  19. #19
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par LDPDC Voir le message
    L'ensemble des tutoriels, FAQ ...etc... sur la 2D/3D jeux sont dédiés au C++ et à ses bibliothèques graphiques.
    Faux. Les tutos de fearyourself sont entièrement en C, de même pour de nombreux autres sur la SDL et l'OpenGL.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par Miles Voir le message
    Faux. Les tutos de fearyourself sont entièrement en C, de même pour de nombreux autres sur la SDL et l'OpenGL.
    Certes, mais ce qui se fait en C est utilisable en C++, et à moins d'une grossière erreur de ma part, programmer en C c'est plus ou moins programmer en C++ en ignorant une partie des possibilités du langage...

    LDPDC

    (Note: j'ai utilisé ces deux langages en commençant par le C++ puis en apprenant le C, ma vision de leurs différences vient de là)

Discussions similaires

  1. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  2. Que choisir ? C# , VB.NET, C++, Delphi ? pourquoi ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 475
    Dernier message: 08/04/2010, 19h27
  3. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  4. Pourquoi ces directives #ifndef ... en haut des .h
    Par Patrick PETIT dans le forum C
    Réponses: 8
    Dernier message: 06/03/2003, 23h53

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