0100011 Posté 9 juin 2008 Auteur Signaler Posté 9 juin 2008 pankkake a dit : Imaginons un langage capable d'étendre ses structures d'entiers à l'infini (du moins… à la taille de la mémoire physique, ÉVIDEMMENT)… le problème se posera d'abord avec la liste qu'on lui donne qui sera bien plus grosse.Et, de toute façon, ma critique sur le fait que ce n'est qu'un des multiples bugs possibles une fois qu'on fait ce qui était pas ou très mal expliqué dans l'énoncé de départ reste. Donc chut et plus d'énigmes malhonnêtes de ce genre, je déteste particulièrement ça.
vaginus Posté 9 juin 2008 Signaler Posté 9 juin 2008 Je rejoins pankkake pour dire que tu as présenté ça comme étant un problème d'algorithmie, or ce n'est clairement pas le cas. Montrer le code dans un langage réel, et non dans du pseudo-code, aurait été beaucoup plus appréciable. Le fait que tu donnes du pseudo-code donne l'impression qu'on s'abstrait de tout problème d'implémentation. Que tu le veuilles ou non, la capacité d'un entier EST un problème d'implémentation. Je crois savoir par exemple que le Python3000 aura un mécanisme qui donnera une taille virtuellement infinie aux entiers (comme le dit pankkake, ça limite à la taille de la mémoire physique, évidement). Bref, même si on est d'accord que c'est un problème à prendre en compte au moment de l'implémentation, que c'est important, la façon dont tu as énoncé le problème était erronée. On aurait apprécié l'exemple de code en Java par exemple (tel que présenté dans le papier dont tu as pasté l'url), où là on aurait pris en compte les limitations d'implémentation du langage. De toute façon, ton pseudo-code ne laissait pas présager d'autres détails d'implémentation qui pourraient également être problématiques, que ça soit le fait que /2 pourrait retourner une valeur flottante (rien ne le dit dans le code, mais bon on l'admet naturellement, vu que c'est de l'algorithmie), ou que high est bien inférieur à N-1, ou le type des variables, ou comme l'a fait remarquer je sais plus qui, la limitation de la pile pour la récursivité, ou quoi que ce soit.
0100011 Posté 9 juin 2008 Auteur Signaler Posté 9 juin 2008 pankkake a dit : Ose dire que j'ai tort. Tu as tort.
A.B. Posté 9 juin 2008 Signaler Posté 9 juin 2008 Vu que c'est donné en pseudo-code, le bug "stack overflow" est aussi pertinent que l'integer overflow. Meme si ca implique un stack ridicule. Par ailleurs on peut imaginer un langage ou les operations arithmetiques se font sur un type d'entier ayant plus de bits que les entiers manipulés, le bug disparait alors. Tout ca pour dire que Pankkake a raison. Il fallait ecrire le code en C pour que ce soit une question valide.
Saucer Posté 10 juin 2008 Signaler Posté 10 juin 2008 Vous êtes des ovnis. On ne discute pas avec les ovnis. Il faut fermer ce fil pendant que vous êtes à l'intérieur. Niqué l'ovni.
0100011 Posté 10 juin 2008 Auteur Signaler Posté 10 juin 2008 A.B. a dit : Vu que c'est donné en pseudo-code, le bug "stack overflow" est aussi pertinent que l'integer overflow. Meme si ca implique un stack ridicule. Par ailleurs on peut imaginer un langage ou les operations arithmetiques se font sur un type d'entier ayant plus de bits que les entiers manipulés, le bug disparait alors. Tout ca pour dire que Pankkake a raison. Il fallait ecrire le code en C pour que ce soit une question valide. Non c'est faux. Le fait que ce soit du pseudo code ne change rien à l'essence du bug qui tient à la finitude de toute machine physique. De plus je disais que le bug était présent dans la distrib standard Java. C'est fou ce manque d'abstraction…
h16 Posté 10 juin 2008 Signaler Posté 10 juin 2008 Kassad a dit : (le fait qu'il y a une limite même si elle n'est pas précisée) que tu fasses comme si ça n'avait pas d'importance est grave. Super grave. Il mérite la mort. Au minimum. Kassad a dit : Non c'est faux. Le fait que ce soit du pseudo code ne change rien à l'essence du bug qui tient à la finitude de toute machine physique. De plus je disais que le bug était présent dans la distrib standard Java. C'est fou ce manque d'abstraction… Oui, mais le stack overflow est aussi présent car tient à la finitude de toute machine physique. Si ton tableau est très grand et ta stack relativement petit, poum la stack. En tout cas, si tu présentes ton problème ainsi à tes étudiants, tu te feras lyncher.
pankkake Posté 10 juin 2008 Signaler Posté 10 juin 2008 h16 a dit : En tout cas, si tu présentes ton problème ainsi à tes étudiants, tu te feras lyncher. Tu surestimes les étudiants
A.B. Posté 10 juin 2008 Signaler Posté 10 juin 2008 Kassad a dit : Non c'est faux. Le fait que ce soit du pseudo code ne change rien à l'essence du bug qui tient à la finitude de toute machine physique. 1) Le stack overflow aussi. 2) Tu peux avoir une implémentation sur une machine physique et finie avec + (int31,int31) -> int32 / (int31,int31) -> int32 = (int31,int32) et le bug n'apparait pas.
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.