On voit souvent des "quel linux choisir ?", des "pourquoi linux ?" etc.
Mais finalement à devoir choisir entre la peste (du côté de chez MS) et
la grippe (notre bon vieux nunux), celà ne vous arrive pas le matin en
vous réveillant de vous dire que les programmes qui font fonctionner
votre machines ne sont que des bidouillages plus ou moins réussis ?
Regardez les codes sources d'un programme en C. Même le code d'un bon
programmeur n'est rempli que d'horreurs. Ce fameux "void" : c'est quoi
cette abomination de la programmation ? Il n'y a aucune sémantique
valable là derrière. D'ailleurs les types en C n'ont de type que le nom.
Comment se fait il qu'on puisse écrire dans la 11e case d'un tableau de
10 éléments. Ce langage surestime beaucoup les capacités des personnes
qui vont l'utiliser. Une telle chose ne doit pas être possible. Comment
imaginer que ce genre de choses peut être voulu par le programmeur ?
Je pense que vous avez déjà vu du JAVA. Mais c'est à gerber cet
emboîtement de new, cette masse colossale de classes à faire pour faire
trois fois rien ! J'ose même pas imaginer la quantité de calculs
inutiles faits par la machine pour gérer ces merdes. D'accord il y a de
l'optimisation, mais c'est loin d'être suffisant.
Dans le temps les programmes étaient bidouillés parce qu'il n'y avait
pas assez de mémoire : par exemple on utilisait une variable pour
stocker deux informations. Maintenant l'horreur est à l'autre extrême :
on a tellement de mémoire de disponible que l'on utilise trop. En C :
tant pis c'est perdu. Un trou de mémoire ? Tant que le pc doit pas
redémarrer toutes les heures à cause de ça on s'en fout. En JAVA : il y
a le ramasse miettes alors on peut bouffer de la mémoire : c'est pô grave.
Dès que les programmes ont commencé à ne plus rentrer sur une disquette
ils sont devenus beaucoup trop compliqués pour fonctionner correctement.
On en vient à une époque où on trouve acceptable un programme quand il a
moins de cent bugs alors que rien que le fait de consommer trop de
ressources fait que le programme n'est pas bon. Aujourd'hui on nous
parle de .NET et de merdouilles dans le genre. A quoi ça sert de se
lancer dans la création de langages qui se copient les uns les autres.
C, C++, JAVA, Pascal : c'est la même chose, la même façon de penser. Et
c'est une manière de penser qui pousse à faire des fautes.
Bref l'informatique ne va pas fort.
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Nicolas George écrivait dans fr.comp.os.linux.debats :
JKB , dans le message , a écrit :
Au passage, ce truc ne vous garantit jamais la structure même de l'entier.
Si un programme dépend de la structure de l'entier, c'est que le programmeur s'est chié dessus.
Non. Réfléchissez un peu (sur les architectures "octet", rien que les problèmes de petit/grand boutistes). Le nombre de fois où j'ai vu des trucs du genre :
long long li; // comprendre sur 64 bits unsigned char c[8];
c = li;
Et pan, une balle dans le pied !
JKB
Le 09-03-2005, à propos de
Re: a-t-on le choix ?,
Nicolas George écrivait dans fr.comp.os.linux.debats :
JKB , dans le message <slrnd2tsqs.u5h.knatschke@rayleigh.systella.fr>, a
écrit :
Au passage, ce truc
ne vous garantit jamais la structure même de l'entier.
Si un programme dépend de la structure de l'entier, c'est que le programmeur
s'est chié dessus.
Non. Réfléchissez un peu (sur les architectures "octet", rien que
les problèmes de petit/grand boutistes). Le nombre de fois où j'ai
vu des trucs du genre :
long long li; // comprendre sur 64 bits
unsigned char c[8];
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Nicolas George écrivait dans fr.comp.os.linux.debats :
JKB , dans le message , a écrit :
Au passage, ce truc ne vous garantit jamais la structure même de l'entier.
Si un programme dépend de la structure de l'entier, c'est que le programmeur s'est chié dessus.
Non. Réfléchissez un peu (sur les architectures "octet", rien que les problèmes de petit/grand boutistes). Le nombre de fois où j'ai vu des trucs du genre :
long long li; // comprendre sur 64 bits unsigned char c[8];
c = li;
Et pan, une balle dans le pied !
JKB
JKB
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Nicolas George écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$, a écrit :
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Prière définir "utiles" - stop
Votre définition en tant que telle ne veut strictement rien dire (pour un matheux, c'est étonnant).
JKB, physicien
Le 09-03-2005, à propos de
Re: a-t-on le choix ?,
Nicolas George écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$636a15ce@news.free.fr>, a
écrit :
Portable veut dire : un
programme calcule les mêmes choses pour toutes les entrées possibles
pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le
même programme donne des résultats conformes à ses spécifications utiles.
Prière définir "utiles" - stop
Votre définition en tant que telle ne veut strictement rien dire
(pour un matheux, c'est étonnant).
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Nicolas George écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$, a écrit :
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Prière définir "utiles" - stop
Votre définition en tant que telle ne veut strictement rien dire (pour un matheux, c'est étonnant).
JKB, physicien
Joe Cool
Joe Cool , dans le message <422eedca$0$16724$, a
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et n'importe quoi, puisque cette notion ne dépend que de la conformité des implémentations : si les implémentations sont conformes à leurs propres normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent être différents d'une implémentation à l'autre », alors quel que soit le langage, il est portable, sauf si il donne le même résultat sur toutes les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme quand la norme le dit.
-- Joe Cool
Joe Cool , dans le message <422eedca$0$16724$636a15ce@news.free.fr>, a
Portable veut dire : un
programme calcule les mêmes choses pour toutes les entrées possibles
pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le
même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et
n'importe quoi, puisque cette notion ne dépend que de la conformité des
implémentations : si les implémentations sont conformes à leurs propres
normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent
être différents d'une implémentation à l'autre », alors quel que soit le
langage, il est portable, sauf si il donne le même résultat sur toutes
les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme
quand la norme le dit.
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et n'importe quoi, puisque cette notion ne dépend que de la conformité des implémentations : si les implémentations sont conformes à leurs propres normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent être différents d'une implémentation à l'autre », alors quel que soit le langage, il est portable, sauf si il donne le même résultat sur toutes les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme quand la norme le dit.
-- Joe Cool
JKB
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Joe Cool écrivait dans fr.comp.os.linux.debats :
Tom , dans le message <422eb34a$0$25623$, a
Pour moi la définition d'un entier c'est 0 | Successeur d'un autre entier. Un sous ensemble des entiers ne peut pas représenter les entiers.
Où as-tu vu qu'il était question d'entiers _naturels_ ?
Les entiers relatifs sont signés et les entiers modulo ont besoin d'un paramètre entier pour être défini.
L'entier est forcément naturel. Le reste n'est qu'abus de langage.
"Dieu a inventé les nombres entiers, tout le reste est l'invention de l'homme".
Kronecker
Le 09-03-2005, à propos de
Re: a-t-on le choix ?,
Joe Cool écrivait dans fr.comp.os.linux.debats :
Tom , dans le message <422eb34a$0$25623$626a14ce@news.free.fr>, a
Pour moi la définition d'un entier c'est 0 | Successeur d'un autre entier.
Un sous ensemble des entiers ne peut pas représenter les entiers.
Où as-tu vu qu'il était question d'entiers _naturels_ ?
Les entiers relatifs sont signés et les entiers modulo ont besoin d'un
paramètre entier pour être défini.
L'entier est forcément naturel. Le reste n'est qu'abus de langage.
"Dieu a inventé les nombres entiers, tout le reste est l'invention
de l'homme".
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Joe Cool écrivait dans fr.comp.os.linux.debats :
Tom , dans le message <422eb34a$0$25623$, a
Pour moi la définition d'un entier c'est 0 | Successeur d'un autre entier. Un sous ensemble des entiers ne peut pas représenter les entiers.
Où as-tu vu qu'il était question d'entiers _naturels_ ?
Les entiers relatifs sont signés et les entiers modulo ont besoin d'un paramètre entier pour être défini.
L'entier est forcément naturel. Le reste n'est qu'abus de langage.
"Dieu a inventé les nombres entiers, tout le reste est l'invention de l'homme".
Kronecker
Nicolas George
Tom , dans le message <422ef1d2$0$15377$, a écrit :
Mais bon sang arrêtez avec vos tests. C'est grâce à ces tests qu'elle a explosé Ariane. Parce qu'on a testé dans quelques situations. Si ça n'a pas planté en simulation c'est que ça ne plantera pas. Et crac. Mais savez vous seulement ce qui s'est passé avec Ariane ? Ils ont tout simplement repris le programme de la fusée précédente. Or dans l'ancien programme une certaine valeur ne dépassait jamais un seuil. Sur la nouvelle fusée ça dépassait. Donc une alarme s'est déclenchée alors qu'il n'y avait rien de grave, et ça a conduit à l'explosion de l'engin. Comment on s'est rendu compte de ça ? En spécifiant le programme, et pas en le testant bêtement comme un informaticien des années 70.
Le programme avait déjà été spécifié. Mal, justement. Aucune preuve mathématique n'aurait pu détecter l'erreur, car l'erreur n'était pas mathématique, elle était dans la mise en relation entre ce qu'on souhaite prouver dans la réalité et ce qu'on a réellement prouvé mathématiquement.
Tom , dans le message <422ef1d2$0$15377$626a14ce@news.free.fr>, a
écrit :
Mais bon sang arrêtez avec vos tests. C'est grâce à ces tests qu'elle a
explosé Ariane. Parce qu'on a testé dans quelques situations. Si ça n'a
pas planté en simulation c'est que ça ne plantera pas. Et crac.
Mais savez vous seulement ce qui s'est passé avec Ariane ? Ils ont tout
simplement repris le programme de la fusée précédente. Or dans l'ancien
programme une certaine valeur ne dépassait jamais un seuil. Sur la
nouvelle fusée ça dépassait. Donc une alarme s'est déclenchée alors
qu'il n'y avait rien de grave, et ça a conduit à l'explosion de l'engin.
Comment on s'est rendu compte de ça ? En spécifiant le programme, et pas
en le testant bêtement comme un informaticien des années 70.
Le programme avait déjà été spécifié. Mal, justement. Aucune preuve
mathématique n'aurait pu détecter l'erreur, car l'erreur n'était pas
mathématique, elle était dans la mise en relation entre ce qu'on souhaite
prouver dans la réalité et ce qu'on a réellement prouvé mathématiquement.
Tom , dans le message <422ef1d2$0$15377$, a écrit :
Mais bon sang arrêtez avec vos tests. C'est grâce à ces tests qu'elle a explosé Ariane. Parce qu'on a testé dans quelques situations. Si ça n'a pas planté en simulation c'est que ça ne plantera pas. Et crac. Mais savez vous seulement ce qui s'est passé avec Ariane ? Ils ont tout simplement repris le programme de la fusée précédente. Or dans l'ancien programme une certaine valeur ne dépassait jamais un seuil. Sur la nouvelle fusée ça dépassait. Donc une alarme s'est déclenchée alors qu'il n'y avait rien de grave, et ça a conduit à l'explosion de l'engin. Comment on s'est rendu compte de ça ? En spécifiant le programme, et pas en le testant bêtement comme un informaticien des années 70.
Le programme avait déjà été spécifié. Mal, justement. Aucune preuve mathématique n'aurait pu détecter l'erreur, car l'erreur n'était pas mathématique, elle était dans la mise en relation entre ce qu'on souhaite prouver dans la réalité et ce qu'on a réellement prouvé mathématiquement.
Joe Cool
Joe Cool , dans le message <422ec057$0$30560$, a
ce que fait Caml à l'aide des exceptions Out_of_memory et Stack_overflow
... ou pas.
cigaes /tmp $ cat t.ml let rec a () = a (); a (); ();; let () = a ();; cigaes /tmp $ ocamlopt t.ml cigaes /tmp $ ./a.out zsh: segmentation fault ./a.out
Dommage.
Je suis désolé mais cette erreur vient de votre système.
-- Joe Cool
Joe Cool , dans le message <422ec057$0$30560$636a15ce@news.free.fr>, a
ce que fait Caml à l'aide des exceptions
Out_of_memory et Stack_overflow
... ou pas.
cigaes /tmp $ cat t.ml
let rec a () = a (); a (); ();;
let () = a ();;
cigaes /tmp $ ocamlopt t.ml
cigaes /tmp $ ./a.out
zsh: segmentation fault ./a.out
Dommage.
Je suis désolé mais cette erreur vient de votre système.
La dérécursivation est le travail du compilateur, il sait le faire. ah ? Ca vient de sortir ?
Le compilateur Caml, en tout cas, sait rédiger une récursion comme une boucle quand c'est évidemment possible (récursivité terminale).
JKB
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Joe Cool écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$, a
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et n'importe quoi, puisque cette notion ne dépend que de la conformité des implémentations : si les implémentations sont conformes à leurs propres normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent être différents d'une implémentation à l'autre », alors quel que soit le langage, il est portable, sauf si il donne le même résultat sur toutes les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme quand la norme le dit.
C'est comme l'ISO 9001 qui permet de faire de la m*rde lorsqu'on l'a spécifié ;-)
JKB
Le 09-03-2005, à propos de
Re: a-t-on le choix ?,
Joe Cool écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$636a15ce@news.free.fr>, a
Portable veut dire : un
programme calcule les mêmes choses pour toutes les entrées possibles
pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le
même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et
n'importe quoi, puisque cette notion ne dépend que de la conformité des
implémentations : si les implémentations sont conformes à leurs propres
normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent
être différents d'une implémentation à l'autre », alors quel que soit le
langage, il est portable, sauf si il donne le même résultat sur toutes
les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme
quand la norme le dit.
C'est comme l'ISO 9001 qui permet de faire de la m*rde lorsqu'on l'a
spécifié ;-)
Le 09-03-2005, à propos de Re: a-t-on le choix ?, Joe Cool écrivait dans fr.comp.os.linux.debats :
Joe Cool , dans le message <422eedca$0$16724$, a
Portable veut dire : un programme calcule les mêmes choses pour toutes les entrées possibles pour toutes les implémentations conformes.
Mauvaise définition, changer de définition.
Un programme est portable si, sur toutes les implémentations conformes, le même programme donne des résultats conformes à ses spécifications utiles.
Voilà une définition de la protabilité qui rend portable tout et n'importe quoi, puisque cette notion ne dépend que de la conformité des implémentations : si les implémentations sont conformes à leurs propres normes, alors le langage est portable.
Alors bien sûr si la norme dit uniquement : « certains calculs peuvent être différents d'une implémentation à l'autre », alors quel que soit le langage, il est portable, sauf si il donne le même résultat sur toutes les implémentations conformes.
Voilà un chef d'oeuvre de l'absurdité bureaucratique. On est conforme quand la norme le dit.
C'est comme l'ISO 9001 qui permet de faire de la m*rde lorsqu'on l'a spécifié ;-)
JKB
JustMe
JustMe , dans le message , a
La dérécursivation est le travail du compilateur, il sait le faire. ah ? Ca vient de sortir ?
Le compilateur Caml, en tout cas, sait rédiger une récursion comme une boucle quand c'est évidemment possible (récursivité terminale).
"possible" ou "facile" ?
JustMe , dans le message <mn.4a857d531370b6ac.15643@merci.beaucoup>, a
La dérécursivation est le travail du compilateur, il sait le faire.
ah ? Ca vient de sortir ?
Le compilateur Caml, en tout cas, sait rédiger une récursion comme une
boucle quand c'est évidemment possible (récursivité terminale).