C'est bizarre c'est peut de chose pret ce que j'ai écrit dans mon long commentaire. Sauf que la conclusion est toujours la même :
"la fonction halt répond à la question si j'appelle testArret [instance A] avec en argument la string représentant le programme testArret [instance B] est-ce que testArret s'arrête."
La réponse est: cela dépend des entrées de l'instance B !
testArret("testArret(in) {\n"+
"si halt(in,in) alors boucle infinie;\n"+
"sinon arret;\n"+
"}");
C'est ici encore plus clair, qu'est-ce que tu mets dans le "in" de la 2ième fonction dans la string ?
Tu ne fais que reprendre ce que j'ai écris au dessus sur la manière de comprendre halt(testArret,testArret).
Je ne vais pas tout réécrire une fois de plus. Je pose comme préalable que tout est du C normal et que halt existe.
Et si on respecte la sémantique C habituel dans le sens que tu présentes, écrire halt(testArret,testArret) veut simplement dire : est-ce que la fonction testarray de testarray de testarray de testarray de testarray de ... s'arrête or c'est une chaine infinie !
donc halt(halt1,null) == 0,
donc halt1(blob(halt1)) ne boucle pas.
Et le plan d'exécution de montest_de_halt() se déroule sans accroc.
Il n'y a rien de contradictoire la dedans.
Souvent on me propose comme exemple halt(halt,halt) (que tu appelles halt2(t,t)). Qu'est-ce que cela signifie ?
Cela signifie que je veux savoir si halt (instance A) s'arrête avec la fonction halt (instance B) en entrée sans préciser l'entrée de l'instance B. Erreur de compile.
Si on considère que halt(halt, halt) est en fait, la fonction qui test l'arret de halt (instance B) ayant halt (instance C)en entrée qui elle même prend halt (instance C) et ainsi de suite, je créait ainsi une suite infini.
Comme le résultat final dépend du nombre pair ou impair d'instance de "halt" considérée, je ne peux pas répondre puisque que ce nombre est infini. Je n'ai donc toujours rien prouvé sur l'existence de "halt".
Cette démonstration classique est du même ordre que :
toto (bool a){
if(a) boucle_infinie() else arret();
}
? testarray(toto);
La réponse dépend des entrées,ce qui est une évidence qui n'apporte strictement aucune nouvelle information. Et d'un point de vue preuve n'a aucune utilité.
Et votre équipe ont des papiers la dessus ? Je serrais curieux de voir ce qui se fait sur des algo qui passe à l'échelle (et non qui explosent après 100 lignes de code).
Merci de renforcer mon propos écrit un peu plus haut :)
halt(halt, halt) ne veut en effet rien dire car le 2 ième halt n'a de sens qu'avec ses entrées.
Le problème de l'arrêt parle donc bien d'un programme pour toutes ses entrées possibles, ce qui est une évidence dont le résultat n'a pas d'intérêt surtout si l'on considère une entrée de taille infini pour la démonstration.
Vous n'avez jamais songer à faire un produit fini comme une mini console de salon ?
J'avoue que je serais étonné de voir ce que des hackers pourraient faire avec un arm+ un gros FPGA dans le domaine du jeu vidéo.
Le plus gros spartan 3 semble couter entre 60 et 80$ l'unité. Cela commence à faire chère mais avec plus de 100 blocs multiplieur, il y a de la ressource.
Par contre, l'ISE n'est plus gratuit. Reste à mettre le plus gros, voir plusieurs version du Spartan, avec ISE gratuit. L'un uniquement pour la video et l'autre pour le reste.
Les démos du problèmes d'arrêt que j'ai vu utilise l'oracle et produise une boucle infinie en cas d'arrêt du programme. Celui-ci se mange lui-même ce qui démontre le problème par l'absurde.
Je trouve cette démonstration débile car si le programme est f(a), on doit lui faire manger f(f(f(f(f...)))) ce qui tourne à l'infini. Qu'il n'y ai pas de solution à une récursion infinie n'a pas l'air très étonnant.
Au lieu de générer tous les états possibles et ensuite vérifier les propriétés qui t'intéressent, je partirais des propriétés puis je remonterais le flot de programmes pour en vérifier la propriété. La taille du problème est beaucoup plus faible. Tu remontes le cônes d'influences.
Le halting problem, c'est juste le fait de ne pas pouvoir savoir (dans tout les cas) si on programme s'arrête sans connaitre par avance ses entrées. Bref, c'est tellement évident, que cela n'a pas d'utilité pratique.
Mieux, le fait qu'ils soient contre l'interopérabilité semble surtout prouver qu'ils ne comptent pas faire plus d'effort que ça sur la mise en place du fameux logiciel.
Non, cela veut juste dire que les éditeurs proprio lui ont dit que cela allait être très cher, qu'il vaut mieux rester en 100% windows. (+ 1% Mac, aussi sans doute)
Cela peut être aussi l'obligation d'acheter un logiciel qui fait le minimum mais qui est le seul moyen de prouver sa bonne fois. Il faut juste que le logiciel est le bon tampon, pas qu'il ait une quelconque efficacité.
Je ne vois pas comment un mouchard peut prouver effectivement quoi que se soit. Il suffit de monter un proxy, de monter une machine virtuel (sauf si tout le PC est verrouillé façon Palladium) et même, comment simplement détecter un deuxième PC branché sur un deuxième port Ethernet ? Les eeetop ont un belle avenir pour faire tourner ses mouchard... (ou la mule d'ailleurs)
Si on veut vraiment aider les artistes et non les industriels de la musique (pardon pour les autres industriel), il suffit protéger leur revenues. Par exemple que les 7% soient totalement incompressible et non soumis à paiement pour prestation de pub ou autre demande signer pour passer à 3.5%...
Voir encore mieux, interdire tout contrat d'exclusivité, les marchand de disque ne serait plus que des marchands de disques... Et il y aurai une vrai concurrence.
La conclusion étant que pour un gain réel en fiabilité, il faut du raid5 dupliqué sur deux sites. Et là, bonjour la facture en matériel info et en électricité.
Le raid5 ne sert quasiment à rien. Il ne gère que trop peu de cas de panne des disques.
Je me fout de perdre 4Ko ou 1To : je ne veux rien perdre du tout.
Je vais me répéter. Si on stocke des données, c'est a priori parce qu'on souhaite les conserver. Partant de là, les disques posent un problème majeur, qui s'accentue avec leur capacité : ils peuvent mourir d'un seul coup, là comme ça, sans prévenir. Genre, le soir il marche, le lendemain tu te lèves et il marche plus.
Il n'y aucune différence avec un DVD ! Sauf que tu mettras plus de temps pour l'apercevoir.
Pour résumer : un disque peut aussi lâcher en silence.
Lacher en silence ne veut pas dire d'un coup mais sans que tu t'en aperçois. Là, l'OS t'insulte assez copieusement.
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"la fonction halt répond à la question si j'appelle testArret [instance A] avec en argument la string représentant le programme testArret [instance B] est-ce que testArret s'arrête."
La réponse est: cela dépend des entrées de l'instance B !
testArret("testArret(in) {\n"+
"si halt(in,in) alors boucle infinie;\n"+
"sinon arret;\n"+
"}");
C'est ici encore plus clair, qu'est-ce que tu mets dans le "in" de la 2ième fonction dans la string ?
cf mon 1er exemple idiot :
testArret("toto (bool a){if(a) boucle_infinie() else arret();}"}
testarray() ne peut pas répondre et pourtant toto est parfaitement définit et existe.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
Je ne vais pas tout réécrire une fois de plus. Je pose comme préalable que tout est du C normal et que halt existe.
Et si on respecte la sémantique C habituel dans le sens que tu présentes, écrire halt(testArret,testArret) veut simplement dire : est-ce que la fonction testarray de testarray de testarray de testarray de testarray de ... s'arrête or c'est une chaine infinie !
Le problème est dans la définition de ton "in".
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 1.
On arrive donc à une contradiction. D'où provient-elle ? Du fait qu'une telle fonction halt2 est impossible à écrire.
Et le fait que t soit de taille infinie, on s'en tape ?
Soit la fonction halt(void (* foo)(void *), void * data); qui est notre oracle.
void halt1 (char * blob)
{
void (* foo)(void *) = slice_prog(blob);
void * data = slice_data(blob);
if ( halt( foo, data)) { while(1); }
}
Jusque là, on a écrit la même chose.
Ensuite, tu propose d'écrire
void halt_2( void (* foo)(void *) )
{
char * blob;
memcpy(blob, foo, sizeof(foo));
halt1(blob);
}
void Montest_de_halt()
{
halt_2(halt1);
}
On l'exécution on aura:
Montest_de_halt();
..halt_2(halt1);
....halt1(blob(halt1));
......halt(halt1, null);
Comme halt(null) ==1,
donc halt1(null) boucle,
donc halt(halt1,null) == 0,
donc halt1(blob(halt1)) ne boucle pas.
Et le plan d'exécution de montest_de_halt() se déroule sans accroc.
Il n'y a rien de contradictoire la dedans.
Souvent on me propose comme exemple halt(halt,halt) (que tu appelles halt2(t,t)). Qu'est-ce que cela signifie ?
Cela signifie que je veux savoir si halt (instance A) s'arrête avec la fonction halt (instance B) en entrée sans préciser l'entrée de l'instance B. Erreur de compile.
Si on considère que halt(halt, halt) est en fait, la fonction qui test l'arret de halt (instance B) ayant halt (instance C)en entrée qui elle même prend halt (instance C) et ainsi de suite, je créait ainsi une suite infini.
Comme le résultat final dépend du nombre pair ou impair d'instance de "halt" considérée, je ne peux pas répondre puisque que ce nombre est infini. Je n'ai donc toujours rien prouvé sur l'existence de "halt".
"La première sécurité est la liberté"
[^] # Re: produit fini ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le projet Armadeus passe à la vitesse supérieure. Évalué à 2.
je ne dis rien de plus :)
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à -1.
toto (bool a){
if(a) boucle_infinie() else arret();
}
? testarray(toto);
La réponse dépend des entrées,ce qui est une évidence qui n'apporte strictement aucune nouvelle information. Et d'un point de vue preuve n'a aucune utilité.
"La première sécurité est la liberté"
[^] # Re: Tiens c'est drôle
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
Merci de renforcer mon propos écrit un peu plus haut :)
halt(halt, halt) ne veut en effet rien dire car le 2 ième halt n'a de sens qu'avec ses entrées.
Le problème de l'arrêt parle donc bien d'un programme pour toutes ses entrées possibles, ce qui est une évidence dont le résultat n'a pas d'intérêt surtout si l'on considère une entrée de taille infini pour la démonstration.
"La première sécurité est la liberté"
[^] # Re: La faute aux députés et ceux qui les élisent
Posté par Nicolas Boulay (site web personnel) . En réponse au journal boycotter les industries de la musique et du cinéma ?. Évalué à 3.
"La première sécurité est la liberté"
# produit fini ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le projet Armadeus passe à la vitesse supérieure. Évalué à 2.
J'avoue que je serais étonné de voir ce que des hackers pourraient faire avec un arm+ un gros FPGA dans le domaine du jeu vidéo.
Le plus gros spartan 3 semble couter entre 60 et 80$ l'unité. Cela commence à faire chère mais avec plus de 100 blocs multiplieur, il y a de la ressource.
Par contre, l'ISE n'est plus gratuit. Reste à mettre le plus gros, voir plusieurs version du Spartan, avec ISE gratuit. L'un uniquement pour la video et l'autre pour le reste.
"La première sécurité est la liberté"
[^] # Re: Peut-on développer sur un système 100% libre ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Le projet Armadeus passe à la vitesse supérieure. Évalué à 2.
"La première sécurité est la liberté"
# Création
Posté par Nicolas Boulay (site web personnel) . En réponse au journal boycotter les industries de la musique et du cinéma ?. Évalué à 2.
http://www.warninglabelgenerator.com/
"La première sécurité est la liberté"
[^] # Re: Oui, mais...
Posté par Nicolas Boulay (site web personnel) . En réponse au journal boycotter les industries de la musique et du cinéma ?. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 1.
halt(halt,halt(halt, halt(halt ...))) ?
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à -1.
Je trouve cette démonstration débile car si le programme est f(a), on doit lui faire manger f(f(f(f(f...)))) ce qui tourne à l'infini. Qu'il n'y ai pas de solution à une récursion infinie n'a pas l'air très étonnant.
"La première sécurité est la liberté"
# back track
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Tiens c'est drôle
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à 2.
"La première sécurité est la liberté"
[^] # Re: Halting problem
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Déterminer le domaine d'un programme. Évalué à -2.
"La première sécurité est la liberté"
[^] # Re: Ce n'est pas un problème d'interopérabilité
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Riposte graduée : le rapporteur s'oppose à l'interopérabilité, l'April appelle à la mobilisation. Évalué à 2.
Non, cela veut juste dire que les éditeurs proprio lui ont dit que cela allait être très cher, qu'il vaut mieux rester en 100% windows. (+ 1% Mac, aussi sans doute)
"La première sécurité est la liberté"
[^] # Re: que sont les "moyens de sécurisation" ?
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Riposte graduée : le rapporteur s'oppose à l'interopérabilité, l'April appelle à la mobilisation. Évalué à 2.
Je ne vois pas comment un mouchard peut prouver effectivement quoi que se soit. Il suffit de monter un proxy, de monter une machine virtuel (sauf si tout le PC est verrouillé façon Palladium) et même, comment simplement détecter un deuxième PC branché sur un deuxième port Ethernet ? Les eeetop ont un belle avenir pour faire tourner ses mouchard... (ou la mule d'ailleurs)
"La première sécurité est la liberté"
# Aidé les artistes
Posté par Nicolas Boulay (site web personnel) . En réponse au journal L'abus de droit d'auteur commencerait-il à intéresser la population?. Évalué à 6.
Voir encore mieux, interdire tout contrat d'exclusivité, les marchand de disque ne serait plus que des marchands de disques... Et il y aurai une vrai concurrence.
"La première sécurité est la liberté"
# évaluation
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Pour l'ouverture d'une enquête parlementaire contre Christine Albanel !. Évalué à 3.
Même pas besoin d'être lié au lobby, c'est l'intitulé du poste !
"La première sécurité est la liberté"
[^] # Re: Remerciement
Posté par Nicolas Boulay (site web personnel) . En réponse au message Son de "mitraillette" vient se rajouter sur le son normal du système. Évalué à 3.
"La première sécurité est la liberté"
[^] # Re: Laisser tomber les supports passifs
Posté par Nicolas Boulay (site web personnel) . En réponse au journal « Ordinateurs : attention au trou de mémoire ». Évalué à 2.
Le raid5 ne sert quasiment à rien. Il ne gère que trop peu de cas de panne des disques.
Si tu as 2 sites séparés, le raid est inutile.
"La première sécurité est la liberté"
[^] # Re: Laisser tomber les supports passifs
Posté par Nicolas Boulay (site web personnel) . En réponse au journal « Ordinateurs : attention au trou de mémoire ». Évalué à 3.
Je vais me répéter. Si on stocke des données, c'est a priori parce qu'on souhaite les conserver. Partant de là, les disques posent un problème majeur, qui s'accentue avec leur capacité : ils peuvent mourir d'un seul coup, là comme ça, sans prévenir. Genre, le soir il marche, le lendemain tu te lèves et il marche plus.
Il n'y aucune différence avec un DVD ! Sauf que tu mettras plus de temps pour l'apercevoir.
Pour résumer : un disque peut aussi lâcher en silence.
Lacher en silence ne veut pas dire d'un coup mais sans que tu t'en aperçois. Là, l'OS t'insulte assez copieusement.
"La première sécurité est la liberté"