OVH Cloud OVH Cloud

c , c++ et les jeu video???

177 réponses
Avatar
elekis
bonjour,

j'ai entendu que les jeux videos de nos jours, sont toujours concu en c
et non en c++,
ma quesiton est POUrquoi??, le c++ a quand meme beaucoup plus d'avantage
que le c non

merci


Ps: ceci n'est pas un troll; je suis en premiere année informatique, et
je commence a apprendre le c++, et les differences du c, et etant
passionné de jeu (c'est la dedans que j'aimerais travailler) je me
posait cette question

merci

a++++

10 réponses

Avatar
kanze
Laurent DELEPINE wrote in message
news:<3f817fa4$0$10423$...

Mais ma reaction concernait l'informatique en général, pas les jeux en
particulier, ou il est de bon ton de dire que les maths sont
indispensables alors qu'ils ne sont nécessaires que dans quelques cas
particuliers. Ce qui est vraiment nécessaire, c'est la logique.


Si tu régardes toutes tes études, combien te sert directement dans la
programmation ? Le but de la plupart des études, ce n'est pas tellement
acquisition des connaissances précises, mais l'acquisition d'une façon
de penser.

Si la plupart d'entre nous n'ont pas besoin d'un niveau élevé de maths,
du point de vue des connaissances, on a bien besoin d'un façon
mathématique de penser, et la façon la plus facile de l'acquérir, c'est
bien d'étudier des maths. Jusqu'à un niveau assez évelé.

La même chose vaut pour le français, d'ailleurs.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Avatar
kanze
Gabriel Dos Reis wrote in message
news:...
Frederic Py writes:

| Fabien LE LEZ said on 10/06/03 14:33:
| > On Mon, 6 Oct 2003 13:55:52 +0200, "Fred" wrote:

| >>char* monBeauTableau=new char[2];

| >>C'est du C++

| > Sans doute. Mais c'est une structure rarement utilisée. En fait,
| > il m'arrive d'allouer des objets directement par new, mais je ne
| > sais pas si new[] a réellement une utilité.

| Ca permet toutefois de creer un tableau "a la C" et de pouvoir
| l'exploiter dans des fonctions "C" et donc offrir une interface
| C++-C ou C->C++. Ce qui peut etre utile pour ouvrir une bibliotheque
| C++ au C ou exploiter une bibliotheque C en C++ ... Mais en dehors
| de ca je vois pas l'interet vu que dans ces deux cas on pourrait se
| tourner vers calloc afin d'eviter certains soucis (?)

Pourquoi veux-tu te tourner vers calloc ?


Pour avoir la fausse impression de faire comme vector<T>.

Si j'écris « std::vector<int> vi(10) », les dix int sont initialisés à
0. De même quand j'écris « calloc( 10 * sizeof( int ) ) ».

En revanche, si j'écris « std::vector< double > vd( 10 ) », les dix
double sont bien initialisés à 0.0, tandis que si j'écris « calloc( 10 *
sizeof( double ) ) », il n'y a aucune initialisation qui ne vaut de
façon garantie et portable.

Du coup, calloc c'est plutôt une piège que d'autre chose. AMHA,
évidemment.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Avatar
kanze
Marc Boyer wrote in message
news:<blrajt$gvt$...
ricky wrote:

toutefois, dans ce cadre, t si ta recherche est la performance
d'affichage, les routines internes sont plutot ecrites en c, lie a
de l'assembleur pour les plus petites routines les plus
demandeurs...


Hum ? Des références ? Une argumentation ? Je ne vois pas bien
pourquoi le C serait plus rapide que le C++ à fonctionnalités
équivalentes.


Si les deux compilateurs étaient indépendants, fournis par deux sociétés
différentes, et représentaient à peu près la même investissement pour
chacune des sociétés, il est probable que le compilateur C serait
nettement plus fort en optimisation. Avec des ressources finies, on ne
fait pas tout ce qu'on veut, et les ressources que le fournisseur du
compilateur C++ a mises à l'implémentation des templates, etc., le
fournisseur du compilateur C les a mises à l'optimisation.

Mais c'est un cas de figure que je n'ai jamais vu. En général, le
compilateur C et le compilateur C++ vient ensemble, et partage le même
optimisateur et le même back-end. Et que souvent, même, c'est le
compilateur C++ qui porte le drapeau, et qui reçoit la plupart des
efforts. Du coup, à code égal, il n'y a pas de différence.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
Gabriel Dos Reis
Richard Delorme writes:

|
| > Richard Delorme writes:
| >
| > | > La généricité, c'est écrire du code général *pour un ensemble de
| > | > critères données*. En particulier, lorsqu'on spécialise on doit
| > | > retrouver au moins la même performance que si on avait écrit le code
| > | > directement.
| > | >
| > | > [...]
| > |
| > | Je ne dit pas le contraire, mais la spécialisation n'est qu'une méthode,
| > | peut-être élégante, de réécrire le code.
| >
| > Ce que j'appelle spécialisation dans la phrase ci-dessus, c'est
| > l'action de substituer des valeurs aux paramètres génériques.
|
| C'est-à-dire ?

(1) Tu écris ton template.
(2) Tu subtitues des valeurs aux paramètres génériques -- qui
correspondent à cas particuliers.
(3) si la substitution ne te donne pas au moins la même efficacité
que la routine écrite sans considération de template, alors
il faut revoir la copie : ce n'est pas une rouotine générique.

La même chose vaut pour les structures de données.

http://www.stlport.org/resources/StepanovUSA.html
http://citeseer.nj.nec.com/musser88generic.html

-- Gaby
Avatar
Richard Delorme

On Tue, 07 Oct 2003 01:02:23 +0200, Richard Delorme
wrote:

Comme on ne voit pas les appels au constructeurs/destructeurs, on a
tendance à en minimiser l'impact.


Encore faut-il qu'il y ait un impact.


Oui. Ça arrive. Par exemple :

string prenom = "Richard";
string nom = "Delorme";
string nom_complet = prenom + ' ' + nom;

est plus lent que d'écrire :

string nom_complet = prenom;
nom_complet += ' ';
nom_complet += nom;

La raison est que quand on utilise l'opérateur+, il y a création/destruction
de variables temporaires, pas quand on utilise +=. Ça peut avoir une
importance dans du code critique.

J'ai l'impression que tu prends le problème dans le mauvais sens.
Optimiser dès le début me paraît discutable, même pour les jeux. Mieux
vaut faire rapidement un programme fiable (ce que permet le C++), ce
qui laisse du temps pour tester le programme et repérer, pendant
l'exécution, les goulots d'étranglement qu'il faudra effectivement
optimiser.


Je n'ai jamais dit le contraire. La question initiale était « Je ne vois pas
bien pourquoi le C serait plus rapide que le C++ à fonctionnalités
équivalentes. » je me suis contenté de glisser quelques pistes. En résumé,
le C++ offre quelques facilités, « à fonctionnalités équivalentes », mais
de moindre performance. En C, on n'a souvent qu'une manière de procéder, la
bonne, et le problème se pose moins.

--
Richard


Avatar
Fabien LE LEZ
On 7 Oct 2003 04:08:04 -0700, wrote:

Si la plupart d'entre nous n'ont pas besoin d'un niveau élevé de maths,
du point de vue des connaissances, on a bien besoin d'un façon
mathématique de penser, et la façon la plus facile de l'acquérir, c'est
bien d'étudier des maths. Jusqu'à un niveau assez évelé.


Je confirme : c'est en cours de maths (après le bac bien sûr) que j'ai
appris la rigueur nécessaire à la programmation en C++.

La même chose vaut pour le français, d'ailleurs.


C'est différent : dans le français, c'est bien les connaissances
(vocabulaire, syntaxe, etc.) qui te servent pour t'exprimer, tandis
que dans les maths, c'est plus la tournure d'esprit qui s'avère utile.

--
http://www.giromini.org/usenet-fr/repondre.html

Avatar
Gabriel Dos Reis
Richard Delorme writes:

[...]

| > J'ai l'impression que tu prends le problème dans le mauvais sens.
| > Optimiser dès le début me paraît discutable, même pour les jeux. Mieux
| > vaut faire rapidement un programme fiable (ce que permet le C++), ce
| > qui laisse du temps pour tester le programme et repérer, pendant
| > l'exécution, les goulots d'étranglement qu'il faudra effectivement
| > optimiser.
|
| Je n'ai jamais dit le contraire.

La question n'est pas tant le fait que tu aies dit le contraire de
quelque chose. La question porte plutôt sur le bien fondé de tes
affirmations :

| La question initiale était « Je ne vois pas
| bien pourquoi le C serait plus rapide que le C++ à fonctionnalités
| équivalentes. » je me suis contenté de glisser quelques pistes. En résumé,
| le C++ offre quelques facilités, « à fonctionnalités équivalentes », mais
| de moindre performance. En C, on n'a souvent qu'une manière de procéder, la
| bonne, et le problème se pose moins.

-- Gaby
Avatar
Marc Boyer
Richard Delorme wrote:
On Tue, 07 Oct 2003 01:02:23 +0200, Richard Delorme
wrote:
Encore faut-il qu'il y ait un impact.


Oui. Ça arrive. Par exemple :

string prenom = "Richard";
string nom = "Delorme";
string nom_complet = prenom + ' ' + nom;

est plus lent que d'écrire :

string nom_complet = prenom;
nom_complet += ' ';
nom_complet += nom;

La raison est que quand on utilise l'opérateur+, il y a création/destruction
de variables temporaires, pas quand on utilise +=. Ça peut avoir une
importance dans du code critique.


Parce que ton compilateur ne sais pas appliquer la NRVO ?

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Mickael Pointier
toutefois, dans ce cadre, t si ta recherche est la performance
d'affichage, les routines internes sont plutot ecrites en c, lie a
de l'assembleur pour les plus petites routines les plus
demandeurs...


Hum ? Des références ? Une argumentation ? Je ne vois pas bien
pourquoi le C serait plus rapide que le C++ à fonctionnalités
équivalentes.


Si les deux compilateurs étaient indépendants, fournis par deux
sociétés différentes, et représentaient à peu près la même
investissement pour chacune des sociétés, il est probable que le
compilateur C serait nettement plus fort en optimisation. Avec des
ressources finies, on ne fait pas tout ce qu'on veut, et les
ressources que le fournisseur du compilateur C++ a mises à
l'implémentation des templates, etc., le fournisseur du compilateur C
les a mises à l'optimisation.

Mais c'est un cas de figure que je n'ai jamais vu. En général, le
compilateur C et le compilateur C++ vient ensemble, et partage le même
optimisateur et le même back-end. Et que souvent, même, c'est le
compilateur C++ qui porte le drapeau, et qui reçoit la plupart des
efforts. Du coup, à code égal, il n'y a pas de différence.


Oui mais dans ce cas ce n'est plus le C et le C+ que l'on compare, mais
juste une implémentation d'un compilateur C "X" par rapport à
l'implémentation d'un compilateur C++ "Y"...

Mike



Avatar
Fabien LE LEZ
On 7 Oct 2003 09:00:38 GMT, Marc Boyer
wrote:

hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie
de faire autre chose si c'était possible


C'est aussi terrible que l'API Win32 ? ;-)

--
http://www.giromini.org/usenet-fr/repondre.html