1

Salut,
J'aimerais savoir si c'est prévu un jour qu'on puisse programmer en C++ avec TIGCC...
Parce que le C c'est bien, mais le C++ c quand même largement mieux ...
J'verrais bien un Mario Bros avec une classe de base abstraite Ennemi dont dérive Koopa qui se spécialise en Koopa Volant et Koopa marchant ... etc ... tongue

2

-

3

Bah l'intérêt du C++ pour les jeux (et pas que pour ça d'ailleurs) il est énorme ...
Fais voir un héritage ou une protection de membres en C ... essaye de réutiliser du code simplement avec des programmes en C ...
Nen mais déjà rien que le fait que d'avoir des objets avec des méthodes plutôt que des structures avec des pointeurs de fonctions sans aucun contrôle ... En plus le C++ c'est tout aussi rapide (ou presque) que le C, la taille des fichiers C++ elle est pas bcp plus grande que celles de fichiers en C ... Ca dépend de ce que tu mets dedans ...

4

Et tu parles de lourdeur ...
Le RCX qui est le module qui est utilisé par les Lego Mindstorms, il à 32K de Mémoire et y'a des projets qui font tourner du C++ dessus .. alors bon ...

5

On en a déjà parlé, c'est pas faisable, et Orion_ a expliqué pourquoi.

6

mouais ben va faire un tour sur le site de BrickOS, http://brickos.sourceforge.net/ les mecs ils ont développé un projet entièrement basé en C++ qui tourne sur une machine qui a la même pas le quart de la puissance processeur et mémoire de la TI-89 alors bof quoi ...

7

Si, c'est faisable, c'est juste moins efficace que du C, et ça sera à peu près impossible de réutiliser des librairies standard (STL...) pour des raisons de place, ce qui enlève pas mal d'intérêt au C++ sad Donc pour l'instant personne ne s'y est sérieusement intéressé, mais il ne tient qu'à toi d'y remédier si tu y tiens tellement tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

8

c'est pas tant les librairies qui importent, mais plutôt le fait de pouvoir programmer objet ...

9

Ben développer en objet sans les librairies et classes std, ça perd de son sens sad Mais comme l'a dit Popol, il ne tient qu'à toi de te lancer dans l'aventure ^^
avatar

10

dans la faq de TIGCC:

Q: I learn C++ in a school so it will be good if I can program my TI-89 in C++ (not in ordinary C). Do you plan to implement C++ on TI-89?

A: No. Although C++ is more powerful language than C, it is not a language which is good for TI calculators. It is not efficient enough to be good for a calculator. The code generated by C++ is less efficient than code generated by ordinary C, and it is too bloated. So, even if somebody made C++ compiler for TI, I don't recommend using any C++ extensions (like classes, and especially streaming), except if you like programs like

cout << "Hello world";

which produces 5 Kb long code...
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

11

... article de la FAQ tout le temps cité comme d'inspiration divine qd ce débat resurgit, mais notoirement faux ...

Il suffit d'avoir le code pour operator<<(<classe de std::cout>,const char *), qui serait une fonction virtuelle qui appelle printf. Coût : inclusion de printf (on n'y coupe de toute façon pas triso), déclaration de la table virtuelle, qui ne contient que cette fonction (4 octets), déclaration de std::cout, qui n'a aucune donnée à part un pointeur vers la table de fonction virtuelle (4 octets), et simplement deux déférencements pour appeler effectivement la fonction en question. Autrement dit, le coût de printf() plus peanuts (moins de 30 octets quoi qu'il en soit). Mieux : un compilateur qui ferait des optimisations pourrait éliminer tout cet overhead en se rendant compte que les données en question ne changent jamais, et appellerait directement printf en inlinant operator<<, donc le coût serait STRICTEMENT équivalent à printf.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

12

donc c'est un mauvais exemple couic
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

13

Oui, en fait ce qui coûte cher, c'est plutôt d'utiliser toutes les features de la STL qui font que le C++ est plus agréable que le C :
~/cplusplus-2005-06-30 $ cat > small.cpp
#include <string>
#include <map>
#include <deque>
int main() {
 std::map<std::string,std::deque<int> > x;
 x["hello"].push_back(3);
 return x["hello"][0];
}

~/cplusplus-2005-06-30 $ g++ -Os small.cpp -o small
~/cplusplus-2005-06-30 $ strip small.exe
~/cplusplus-2005-06-30 $ ls -l small.exe
-rwxrwxrwx 1 Paul Aucun 52224 Jun 30 23:18 small.exe*
~/cplusplus-2005-06-30 $ objdump -h small.exe

small.exe: file format pei-i386

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000b8f4 00401000 00401000 00000400 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE, DATA
1 .data 00000094 0040d000 0040d000 0000be00 2**4
CONTENTS, ALLOC, LOAD, DATA
2 .rdata 000006dc 0040e000 0040e000 0000c000 2**4
CONTENTS, ALLOC, LOAD, READONLY, DATA
3 .bss 000040c0 0040f000 0040f000 00000000 2**4
ALLOC
4 .idata 00000388 00414000 00414000 0000c800 2**2
CONTENTS, ALLOC, LOAD, DATA


48 ko de code généré pour qques lignes de code source happy

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

14

-

15

gni ? tu as une idée de la verbosité de ce que ça représenterait si tu faisais ça en C ? essaye de me traduire ça en C (sans memory leaks évidemment) et on en reparle tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

16

Pollux :
gni ? tu as une idée de la verbosité de ce que ça représenterait si tu faisais ça en C ? essaye de me traduire ça en C (sans memory leaks évidemment) et on en reparle tongue

Clairement !

Enfin, je crois que nitro bosse/bossait sur un portage de C++/STL pour TiGCC...

17

mouais enfin ça prendrait bcp de place qd même... dans un langage de plus haut niveau et plus lent ça prendrait moins de place smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

18

djflex > Le C suffit pour faire de la prog oo. Et dans mario bros il n'y a pas de koopa.

19

Après faut voir ce qu'on entend par POO...

20

./15: C'est essentiellement pour ca que je n'aime pas vraiment le C++.

21

22

12, 13: ça fait quoi? J'ai fait un peu de prog OO (mais surtout du java) beaucoup de C, mais les nouveaux trucs du C++ (tout spécialement ceux avec des < > ) je n'y comprends absolument rien... (connais pas d'équivalent ni en C ni en java)
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

23

int main() { return 3; }
si l'optimiseur etait assez fort wink

24

Link> ça déclare un tableau associatif, qui à une chaîne associe un tableau d'entiers ; ensuite ça prend le tableau associé à la chaîne "hello", tableau qui est initialement vide, et ça lui rajoute le nombre 3 ; enfin la dernière ligne prend ce tableau associé à la chaîne "hello", et fait renvoyer à main() son premier élément ^^ (donc 3)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

25

en fait std, c'est le namespace? z'êtes obligé de le rajouter devant chaque classe? ça rend encore plus illisible...

en C (en supposant qu'il y ait des fonctions pour cela, dans une quelquonque lib):

int main()
{
PMAP x = CreateMap();
int r = 0;

AddToMap(x, "hello", CreateNewIntQueueWithOneInt(3));
r = GetIntQueueInt(GetFromMap(x, "hello"));
DestroyIntQueue(GetFromMap(x, "hello"));
RemoveFromMap(x, "hello");
DestroyMap(x);

return r;
}
#gni#
(bien sur, on suppose que tout se passe bien)
(J'ai mis "IntQueue", car je pense qu'avec des noms pareil, deque doit être une file d'attente, non?)
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

26

Link
: en fait std, c'est le namespace? z'êtes obligé de le rajouter devant chaque classe? ça rend encore plus illisible...

Non, c'est juste que si tu ne mets pas "using namespace std;" au début de ton programme, tu dois le mettre devant toutes les classes de la bibliothèque standard. L'intérêt c'est que tu peux définir une autre classe "map" dans ton propre namespace, et utiliser quand même std::map -- évidemment si tu ne comptes pas faire ce genre de choses c'est aussi simple de rajouter simplement un "using namespace" smile
en C (en supposant qu'il y ait des fonctions pour cela, dans une quelquonque lib):

Chouette, on va s'amuser :
AddToMap(x, "hello", CreateNewIntQueueWithOneInt(3));

Pas vraiment, ce que j'ai fait c'est *rajouter* 3 à un tableau déjà existant smile (évidemment tu peux n'émuler que le comportement exact du programme tel que je l'ai écrit dans l'ordre précis que j'ai utilisé, mais à ce moment-là "return 3" est une solution tout aussi valide triso)
DestroyIntQueue(GetFromMap(x, "hello"));

Qui te dit que j'ai pas rajouté au milieu d'autres éléments ? tongue
(bien sur, on suppose que tout se passe bien)

En effet, premier problème happy
(J'ai mis "IntQueue", car je pense qu'avec des noms pareil, deque doit être une file d'attente, non?)

Oui, deque = "double-ended queue".

Mais qu'est-ce qui se passe si je remplace "int" par "unsigned long" ? Et si je le remplace par "pair<int,string>" ? tongue Et si je veux que mon tableau associatif utilise une relation d'ordre spéciale ? (par exemple, faire des comparaisons case-insensitive) Et si je veux utiliser autre chose que des chaînes ? tongue

En tout cas c'est gentil de souligner aussi bien tous les problèmes du C hehe

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

27

j'ai pas dit que les extensions de type du cpp étaient mauvaises, j'ai seulement dit que j'y comprenais rien...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

28

Tu fais des posts de plus en plus détestables Pollux, fais attention neutral
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

29

"neutral" Je dis pas que le C c'est pas bien, je dis que qd Link dit que ça n'apporte rien par rapport au code équivalent en C, il se trompe embarrassed Le C++ et le C ont des objectifs différents, point.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

30

Sauf que je n'ai dit nulle part que ça n'apportait rien. C'était juste pour donner un aperçu de ce que ça donnerait en C.

Et c'est vrai, c'est plus verbeux.
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.