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
Oui, mais là le destructeur a un effet de bord, donc le compilo ne peut pas optimiser en virant certains temporaires.
HAHA! C'est donc pas si simple! ;-)
Ben si, c'est ce qu'on dit: le C++ est globalement aussi efficace que le C "à fonctionnalité équivalente". Si t'ajoute des choses, tu les payes.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes: | Gabriel Dos Reis wrote: | Parce que le programme compile et fonctionne correctement | sans l'activation de la RTTI ?
Alors, c'est à toi de le dire au compilateur.
| Non, il doit y avoir un truc qui m'échappe.
C'est que avec le modèle de compilation séparée de C++ et la technologie actuelle des compilateurs, si tu sais que ton prorgramme n'utiliseras pas la RTTI alors il faut le lui dire. D'ailleurs, il en profitera ainsi pour vérifier la cohérence des propos si cela lui est possible.
Oui, le modèle de compilation séparée, j'avais oublié (en fait, j'y ai pensé dans la soirée, mais j'allais pas me reconnecter pour crier "euréka")
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Gabriel Dos Reis wrote:
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
| Gabriel Dos Reis wrote:
| Parce que le programme compile et fonctionne correctement
| sans l'activation de la RTTI ?
Alors, c'est à toi de le dire au compilateur.
| Non, il doit y avoir un truc qui m'échappe.
C'est que avec le modèle de compilation séparée de C++ et la
technologie actuelle des compilateurs, si tu sais que ton prorgramme
n'utiliseras pas la RTTI alors il faut le lui dire. D'ailleurs, il en
profitera ainsi pour vérifier la cohérence des propos si cela lui est
possible.
Oui, le modèle de compilation séparée, j'avais oublié (en fait,
j'y ai pensé dans la soirée, mais j'allais pas me reconnecter
pour crier "euréka")
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
Marc Boyer writes: | Gabriel Dos Reis wrote: | Parce que le programme compile et fonctionne correctement | sans l'activation de la RTTI ?
Alors, c'est à toi de le dire au compilateur.
| Non, il doit y avoir un truc qui m'échappe.
C'est que avec le modèle de compilation séparée de C++ et la technologie actuelle des compilateurs, si tu sais que ton prorgramme n'utiliseras pas la RTTI alors il faut le lui dire. D'ailleurs, il en profitera ainsi pour vérifier la cohérence des propos si cela lui est possible.
Oui, le modèle de compilation séparée, j'avais oublié (en fait, j'y ai pensé dans la soirée, mais j'allais pas me reconnecter pour crier "euréka")
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Gabriel Dos Reis
Richard Delorme writes:
| | > Richard Delorme writes: | > | > | | > | > Richard Delorme wrote: | > | >> Bien sûr un programme C compatible C++ fonctionne à la même vitesse | > | >> que le compilateur soit en mode C ou C++. Néanmoins les approches | > | >> offertes par le C++, comme la programmation objet, générique,... | > | >> peuvent conduire à un programme légèrement plus lent, | > | > | > | > Heuh... En quoi la généricité rendrait-elle plus lent ? | > | | > | Parce qu'elle prend en compte tous les cas de figure, | > | > dans ce cas ce n'est pas de généricité : c'est de la masturbation | > intellectuelle. | > | > 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.
-- Gaby
Richard Delorme <abulmo@nospam.fr> writes:
|
| > Richard Delorme <abulmo@nospam.fr> writes:
| >
| > |
| > | > Richard Delorme wrote:
| > | >> Bien sûr un programme C compatible C++ fonctionne à la même vitesse
| > | >> que le compilateur soit en mode C ou C++. Néanmoins les approches
| > | >> offertes par le C++, comme la programmation objet, générique,...
| > | >> peuvent conduire à un programme légèrement plus lent,
| > | >
| > | > Heuh... En quoi la généricité rendrait-elle plus lent ?
| > |
| > | Parce qu'elle prend en compte tous les cas de figure,
| >
| > dans ce cas ce n'est pas de généricité : c'est de la masturbation
| > intellectuelle.
| >
| > 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.
| | > Richard Delorme writes: | > | > | | > | > Richard Delorme wrote: | > | >> Bien sûr un programme C compatible C++ fonctionne à la même vitesse | > | >> que le compilateur soit en mode C ou C++. Néanmoins les approches | > | >> offertes par le C++, comme la programmation objet, générique,... | > | >> peuvent conduire à un programme légèrement plus lent, | > | > | > | > Heuh... En quoi la généricité rendrait-elle plus lent ? | > | | > | Parce qu'elle prend en compte tous les cas de figure, | > | > dans ce cas ce n'est pas de généricité : c'est de la masturbation | > intellectuelle. | > | > 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.
-- Gaby
Gabriel Dos Reis
"Alain Naigeon" writes:
| "Richard Delorme" a écrit dans le message news: | 3f819e98$0$24668$ | | > Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus | > souvent, on n'a que des cas particuliers à traiter. | | C'est sûr que le but de template, c'est d'éviter la situation | "que des cas particuliers à traiter". | Il me semble que les bons auteurs insistent sur la possibilité | de spécialiser un template lorsqu'il y a de bonnes raisons.
Yep.
-- Gaby
"Alain Naigeon" <anaigeon@free.fr> writes:
| "Richard Delorme" <abulmo@nospam.fr> a écrit dans le message news:
| 3f819e98$0$24668$7a628cd7@news.club-internet.fr...
|
| > Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus
| > souvent, on n'a que des cas particuliers à traiter.
|
| C'est sûr que le but de template, c'est d'éviter la situation
| "que des cas particuliers à traiter".
| Il me semble que les bons auteurs insistent sur la possibilité
| de spécialiser un template lorsqu'il y a de bonnes raisons.
| "Richard Delorme" a écrit dans le message news: | 3f819e98$0$24668$ | | > Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus | > souvent, on n'a que des cas particuliers à traiter. | | C'est sûr que le but de template, c'est d'éviter la situation | "que des cas particuliers à traiter". | Il me semble que les bons auteurs insistent sur la possibilité | de spécialiser un template lorsqu'il y a de bonnes raisons.
Yep.
-- Gaby
Gabriel Dos Reis
Richard Delorme writes:
| | > "Richard Delorme" a écrit dans le message news: | > 3f819e98$0$24668$ | > | >> Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus | >> souvent, on n'a que des cas particuliers à traiter. | > | > C'est sûr que le but de template, c'est d'éviter la situation | > "que des cas particuliers à traiter". | > Il me semble que les bons auteurs insistent sur la possibilité | > de spécialiser un template lorsqu'il y a de bonnes raisons. | > En revanche, pour une classe de la STL, j'avoue ne l'avoir | > jamais fait, et je ne sais si c'est toujours faisable ou même | > permis. | | Si tu ne l'as jamais fait, cela prouve que c'est une pratique peu courante.
Cela prouve donc. Tiens.
-- Gaby
Richard Delorme <abulmo@nospam.fr> writes:
|
| > "Richard Delorme" <abulmo@nospam.fr> a écrit dans le message news:
| > 3f819e98$0$24668$7a628cd7@news.club-internet.fr...
| >
| >> Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus
| >> souvent, on n'a que des cas particuliers à traiter.
| >
| > C'est sûr que le but de template, c'est d'éviter la situation
| > "que des cas particuliers à traiter".
| > Il me semble que les bons auteurs insistent sur la possibilité
| > de spécialiser un template lorsqu'il y a de bonnes raisons.
| > En revanche, pour une classe de la STL, j'avoue ne l'avoir
| > jamais fait, et je ne sais si c'est toujours faisable ou même
| > permis.
|
| Si tu ne l'as jamais fait, cela prouve que c'est une pratique peu courante.
| | > "Richard Delorme" a écrit dans le message news: | > 3f819e98$0$24668$ | > | >> Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus | >> souvent, on n'a que des cas particuliers à traiter. | > | > C'est sûr que le but de template, c'est d'éviter la situation | > "que des cas particuliers à traiter". | > Il me semble que les bons auteurs insistent sur la possibilité | > de spécialiser un template lorsqu'il y a de bonnes raisons. | > En revanche, pour une classe de la STL, j'avoue ne l'avoir | > jamais fait, et je ne sais si c'est toujours faisable ou même | > permis. | | Si tu ne l'as jamais fait, cela prouve que c'est une pratique peu courante.
Cela prouve donc. Tiens.
-- Gaby
Gabriel Dos Reis
"Alain Naigeon" writes:
| "Fabien LE LEZ" a écrit dans le message news: | | > On Mon, 6 Oct 2003 16:59:29 +0200, "Chewee" | > wrote: | > | > >Je travaille moi aussi dans le jeu vidéo et c'est ce que j'ai toujours | > >entendu... | > | > Le C est meilleur que le C++, je le dis depuis 20 ans ;-) | | Si tu trolles dans l'espace dual, on ne va plus s'en sortir ;-)
à moins que l'espace ne soit reflexif.
-- Gaby
"Alain Naigeon" <anaigeon@free.fr> writes:
| "Fabien LE LEZ" <gramster@gramster.com> a écrit dans le message news:
| tcl3ovovpot9sfu03l2eekdcl2es1q8o4s@4ax.com...
| > On Mon, 6 Oct 2003 16:59:29 +0200, "Chewee" <chewee@NOSPAMchewee.net>
| > wrote:
| >
| > >Je travaille moi aussi dans le jeu vidéo et c'est ce que j'ai toujours
| > >entendu...
| >
| > Le C est meilleur que le C++, je le dis depuis 20 ans ;-)
|
| Si tu trolles dans l'espace dual, on ne va plus s'en sortir ;-)
| "Fabien LE LEZ" a écrit dans le message news: | | > On Mon, 6 Oct 2003 16:59:29 +0200, "Chewee" | > wrote: | > | > >Je travaille moi aussi dans le jeu vidéo et c'est ce que j'ai toujours | > >entendu... | > | > Le C est meilleur que le C++, je le dis depuis 20 ans ;-) | | Si tu trolles dans l'espace dual, on ne va plus s'en sortir ;-)
à moins que l'espace ne soit reflexif.
-- Gaby
Marc Boyer
Richard Delorme wrote:
Richard Delorme wrote:
En plus, le système est souvent (Unix + X11, Windows, openGL, ...) écrit en C à la base, et l'utilisation du C++ invite à écrire une surcouche objet dessus qui introduit un peu de lenteur.
Hum... La encore, je demande à voir pourquoi une surcouche objet introduirait quoi que ce soit de lenteur.
A mon avis, tu n'a pas idée de la taille d'une surcouche. Prends l'exemple de Qt/X11 :
Mais ici, il y a surcouche avec ajout de fonctionalités. Rajouter les mêmes fonctionnalités en C, et on aura le même problème.
Pour dessiner un rectangle sous X11, on utilise la fonction : XDrawRectangle(display, d, gc, x, y, width, height) Display *display; Drawable d; GC gc; int x, y; unsigned int width, height;
Sous Qt (version 3.1.2) l'épaisse surcouche ressemble à :
[SNIP l'épaisse surcouche]
Elle est sans doute plus facile d'utilisation, plus robuste, et tout ce qu'on veut ; mais, vu tout ce qu'il y a autour de la fonction X11, je ne vois pas comment elle peut-être aussi rapide.
Mais si elle est plus robuste et plus facile, il y a ajout de fonctionnalité. Si le développeur gagne du temps sur le développement, il peut *ensuite* optimiser les goulots d'étranglement. Ceci dit, Qt est peut-être une mauvaise surcouche à X11, peut-être une bonne, je n'ai pas d'avis tranché sur la question (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie de faire autre chose si c'était possible). Ce que je dis, c'est que le "langage" C++ et la surcouche objet, à fonctionnalité équivalente, n'est pas plus lente.
Après, il y a toujours la question de la base installée, qui fait que, si une bibliothèque C est devenue un standard de fait depuis 20 ans, il y a des chances qu'elle est été écrite, réécrite et optimisée par les meilleurs spécialistes, et la première équipe venue ne va pas faire mieux sous prétexte qu'elle utilise C++.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Richard Delorme wrote:
Richard Delorme wrote:
En plus, le système est souvent (Unix + X11, Windows, openGL, ...) écrit
en C à la base, et l'utilisation du C++ invite à écrire une surcouche
objet dessus qui introduit un peu de lenteur.
Hum... La encore, je demande à voir pourquoi une surcouche objet
introduirait quoi que ce soit de lenteur.
A mon avis, tu n'a pas idée de la taille d'une surcouche. Prends l'exemple
de Qt/X11 :
Mais ici, il y a surcouche avec ajout de fonctionalités. Rajouter les
mêmes fonctionnalités en C, et on aura le même problème.
Pour dessiner un rectangle sous X11, on utilise la fonction :
XDrawRectangle(display, d, gc, x, y, width, height)
Display *display;
Drawable d;
GC gc;
int x, y;
unsigned int width, height;
Sous Qt (version 3.1.2) l'épaisse surcouche ressemble à :
[SNIP l'épaisse surcouche]
Elle est sans doute plus facile d'utilisation, plus robuste, et tout ce
qu'on veut ; mais, vu tout ce qu'il y a autour de la fonction X11, je ne
vois pas comment elle peut-être aussi rapide.
Mais si elle est plus robuste et plus facile, il y a ajout de
fonctionnalité.
Si le développeur gagne du temps sur le développement,
il peut *ensuite* optimiser les goulots d'étranglement.
Ceci dit, Qt est peut-être une mauvaise surcouche à X11,
peut-être une bonne, je n'ai pas d'avis tranché sur la question
(hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie
de faire autre chose si c'était possible).
Ce que je dis, c'est que le "langage" C++ et la surcouche
objet, à fonctionnalité équivalente, n'est pas plus lente.
Après, il y a toujours la question de la base installée,
qui fait que, si une bibliothèque C est devenue un standard
de fait depuis 20 ans, il y a des chances qu'elle est été
écrite, réécrite et optimisée par les meilleurs spécialistes,
et la première équipe venue ne va pas faire mieux sous prétexte
qu'elle utilise C++.
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
En plus, le système est souvent (Unix + X11, Windows, openGL, ...) écrit en C à la base, et l'utilisation du C++ invite à écrire une surcouche objet dessus qui introduit un peu de lenteur.
Hum... La encore, je demande à voir pourquoi une surcouche objet introduirait quoi que ce soit de lenteur.
A mon avis, tu n'a pas idée de la taille d'une surcouche. Prends l'exemple de Qt/X11 :
Mais ici, il y a surcouche avec ajout de fonctionalités. Rajouter les mêmes fonctionnalités en C, et on aura le même problème.
Pour dessiner un rectangle sous X11, on utilise la fonction : XDrawRectangle(display, d, gc, x, y, width, height) Display *display; Drawable d; GC gc; int x, y; unsigned int width, height;
Sous Qt (version 3.1.2) l'épaisse surcouche ressemble à :
[SNIP l'épaisse surcouche]
Elle est sans doute plus facile d'utilisation, plus robuste, et tout ce qu'on veut ; mais, vu tout ce qu'il y a autour de la fonction X11, je ne vois pas comment elle peut-être aussi rapide.
Mais si elle est plus robuste et plus facile, il y a ajout de fonctionnalité. Si le développeur gagne du temps sur le développement, il peut *ensuite* optimiser les goulots d'étranglement. Ceci dit, Qt est peut-être une mauvaise surcouche à X11, peut-être une bonne, je n'ai pas d'avis tranché sur la question (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie de faire autre chose si c'était possible). Ce que je dis, c'est que le "langage" C++ et la surcouche objet, à fonctionnalité équivalente, n'est pas plus lente.
Après, il y a toujours la question de la base installée, qui fait que, si une bibliothèque C est devenue un standard de fait depuis 20 ans, il y a des chances qu'elle est été écrite, réécrite et optimisée par les meilleurs spécialistes, et la première équipe venue ne va pas faire mieux sous prétexte qu'elle utilise C++.
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Gabriel Dos Reis
Marc Boyer writes:
[...]
| (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie | de faire autre chose si c'était possible).
mitou. Sauf que des fois, on est « obligé » de faire avec.
-- Gaby
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr> writes:
[...]
| (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie
| de faire autre chose si c'était possible).
mitou. Sauf que des fois, on est « obligé » de faire avec.
| (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie | de faire autre chose si c'était possible).
mitou. Sauf que des fois, on est « obligé » de faire avec.
-- Gaby
Richard Delorme
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 ? - Lors de l'utilisation, comme dans bitset<32>(i).count(); - Ou pour redéfinir des fonctions, comme dans : class bitset<32> { size_t count() const { // algo kivamieu } }
-- Richard
Richard Delorme <abulmo@nospam.fr> 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 ?
- Lors de l'utilisation, comme dans bitset<32>(i).count();
- Ou pour redéfinir des fonctions, comme dans :
class bitset<32> {
size_t count() const {
// algo kivamieu
}
}
| > 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 ? - Lors de l'utilisation, comme dans bitset<32>(i).count(); - Ou pour redéfinir des fonctions, comme dans : class bitset<32> { size_t count() const { // algo kivamieu } }
-- Richard
Richard Delorme
Comme on ne voit pas les appels au constructeurs/destructeurs, on a tendance
à en minimiser l'impact.
Quel impact?
On parlait de l'impact sur la performance, en particuliers dans les jeux, les moteurs d'affichage, ...
-- Richard
Comme on ne voit pas les appels au constructeurs/destructeurs, on a
tendance
à en minimiser l'impact.
Quel impact?
On parlait de l'impact sur la performance, en particuliers dans les jeux,
les moteurs d'affichage, ...