smeet
:Et comme Java ne fournit pas de structY'a un truc, ca s'appelle des classes.
Ah, qu'est-ce donc ?
Nan mais tu noteras que c'était dans un paragraphe qui concernait la performance du code, hein... Le C# fournit (en plus des classes, oui
) un moyen de faire des structures de données qui se comportent en tout point comme des "int", par exemple : allocation sur la pile/dans les registres et pas sur le tas, passage par valeur et non par référence, etc (et il se trouve que ces structures de données s'appellent struct). Si tu passes par une classe wrapper, alors tu vas te chopper tout l'overhead de la garbage collection : au lieu de stocker un entier sur 8, 16 ou 32 bits, tu vas être obligé de stocker un pointeur 32 bits, qui va lui-même devoir pointer sur un autre bloc de mémoire, lequel va probablement devoir contenir une virtual function table et la valeur qui t'intéresse. Donc il y a des chances que si tu veux optimiser ton prog et que tu n'aies pas de type struct, tu sois obligé de passer par des int...
Et tu ne réponds pas au reste du paragraphe ^^
final private int MODE_ADDPOINT=0;
final private int MODE_MOVEPOINT=1;
final private int MODE_REMOVEPOINT=2;
final private int MODE_INSERTPOINT=3;
int mode;
String WhereAmI() {
String s="java sux";
if (mode==MODE_ADDPOINT)
s="ADDPOINT";
else if (mode==MODE_ADDPOINT)
s="ADDPOINT";
else if (mode==MODE_ADDPOINT)
s="ADDPOINT";
else if (mode==MODE_ADDPOINT)
s="ADDPOINT";
return "je suis dans le mode "+s; }
Cette fonction ne sert à rien.
(euh j'ai oublié de préciser que j'avais eu la flemme de changer ADDPOINT par les 3 autres trucs, évidemment)
Euh, tu fais exprès, rassure-moi ?
Ca ne sert à rien pour un désassembleur d'écrire le nom des opcodes qu'il génère ? Ca ne sert à rien de pouvoir débugger un prog sans avoir à faire à la main ce genre de conversions ? (surtout que s'il s'agit de voir un log de debug d'une vieille version, les numéros peuvent très bien ne plus correspondre) Et j'en passe...
Et puis, si tu utilises des int, autant les utiliser comme index d'un array de string, non?
Bah oui, si tu veux, mais le truc c que pour le coup si tu oublies de mettre à jour l'un alors que tu modifies l'autre, tu te retrouves avec un truc qui fait n'importe quoi... Et accessoirement avec ta technique pour affecter les numéros qui fait enum_value[n]=n*(n+1)/2, le tableau risque de devenir assez vite gigantesque
(et je ne parle même pas d'essayer d'insérer un élément au milieu, sachant que le nb de blancs qu'il doit y avoir entre 2 éléments de l'énum dépend de la position de cet élément, il faut tout refaire
)
Par ailleurs, en informatique, peut importe la taille des fichiers, c'est vraiment al derniere chose qui compte. Ce qui importe est, au choix, la rapidité, ou le haut-niveau.
Oui, je suis d'accord.
Java est haut niveau. Ca prend beaucoup de lignes, c'est comme ca.
Euh là par contre c'est n'importe quoi.
- OK, on s'en fout que le source prenne 30 Mo, mais par contre si le fait que ça prenne 30 Mo nuit à la lisibilité ou à la maintenabilité, ça devient n'importe quoi... (parce que tu ne vas pas me dire qu'avoir exactement la même chose 2 ou 3x dans le code est qqch qui accroît la lisibilité ou réduit le risque d'erreur : au contraire, au moindre oubli de modification d'un de ces éléments, le truc par en vrille -- et si on ne s'en rend pas compte tt de suite, ça peut être assez dur à trouver)
- ensuite, de ce point de vue-là, Java n'est justement pas haut niveau puisqu'il empêche d'adopter un typage efficace et oblige à passer par des objets sémantiquement plus pauvres (cf par exemple la différence entre la lib std de Java où chaque objet différent a un type différent, par opposition à la lib std du C où 90% des types sont des int, des void* ou des char* -- cf le système de fichiers de Java vs le système de file descriptors d'Unix), qui ne changent rien en bas niveau mais qui permettent des choses plus concises et plus sûres en haut niveau
Bref, j'ai l'impression que tu cherches une argumentation pour descendre Java, mais il te faudrait un peu plus les travailler
N'importe quoi
Au contraire, c'est pas vraiment une critique sur Java puisque l'absence d'énum a été corrigée. C'est plutôt une critique sur le fait que tu dises que les énum sont inutiles...


^42 De quoi tu parles ? Quel est le rapport entre C/asm et C# ? Où est-ce que j'ai dit que je voulais pas faire du haut niveau ? Au contraire, je trouve ton hack avec des int bcp trop bas niveau...



Tu sais, ça arrive à des gens de ne pas rester bloqué sur des technologies d'il y a 20 ans ^^
)