Il ya peu de choses aussi exaspérante que d'être au milieu d'une tâche sur un ordinateur, et ayant le logiciel geler sur vous. Ceci peut être particulièrement enrageait si vous ne l'avez pas sauvegardé votre travail récemment, et vous savez que la seule façon de «dégeler» le programme sera d'exécuter une force quitter - votre travail sera perdu, parce que le (mot insert de votre choix ici) ordinateur ne savait pas quoi faire ensuite. Heureusement, cependant, des chercheurs de Computer Science du MIT et Laboratoire d'Intelligence Artificielle ont développé un outil qui secoue programmes calé revenir dans l'action.

Programmes contiennent généralement des milliers de boucles, qui permettent à l'ordinateur pour effectuer la même tâche encore et encore, comme la comparaison systématiquement chaque lettre dans un document à celles d'un terme de recherche. Devrait-il y avoir une légère erreur dans le code, cependant, l'ordinateur peut rester coincé dans une boucle infinie, l'exécution du exactement la même fonctionner indéfiniment - il pourrait garder la comparaison de la même lettre, par exemple, au lieu de passer à la suivante.

Afin d'obtenir des ordinateurs sur des boucles infinies, MIT professeur de science informatique Rinard Martin et ses étudiants diplômés Michael Carbin, Sasa Misailovic et Michael Kling ont créé un outil logiciel qui est bien nommé Jolt. Lorsqu'il est activé par un utilisateur qui pense leur ordinateur aurait gelé, Jolt prend une série de «instantanés» de la mémoire de l'ordinateur après chaque exécution d'une boucle. Si tous ces instantanés sont identiques, alors la machine est en effet bloqué dans une boucle infinie.

Jolt ordonne alors l'ordinateur pour passer à la prochaine instruction dans le programme. Afin d'être en mesure de le faire, cependant, Jolt doit d'abord être conscient des points de toutes les boucles dans le code source du programme début et de fin. Cela nécessite à également être utilisé par les développeurs de logiciels, lorsque leur langage de programmation complexe est en cours d'élaboration en binaire facile à ordinateur.

Obtenir les développeurs à utiliser Jolt pourrait être beaucoup demander, toutefois, plus il provoque les programmes de fonctionner 7 à 8 pour cent plus lent. Pour contourner ces limitations, Rinard et son équipe travaillent actuellement sur une édition binaire du logiciel, appelé Bolt. Il est capable de travailler directement sur compilées, les versions binaires de programmes. Un des défis dans le développement de Bolt est l'identification des points de boucles en code binaire début et de fin - que ces points sont relativement faciles à repérer dans un langage de programmation, ils peuvent difficiles à localiser dans les chaînes de chiffres qui composent binaire .

Kling a abordé ce problème en développant un algorithme qui permet Bolt pour identifier la fonction de plus haut niveau qui exécute un programme à un moment donné. Si cela ne donne toujours pas de suffisamment d'informations, puis Bolt pourrait éventuellement même juste commencer à chercher de nouvelles instructions au hasard, jusqu'à ce qu'il en trouve un qui permet au programme de passer. Bien que d'aller à cette instruction suivante pourrait ne pas être le choix parfait pour le bon déroulement du programme, il serait au moins obtenir l'ordinateur hors de la boucle, de sorte que le travail de l'utilisateur ne pouvait être sauvé.

L'équipe du MIT a présenté Jolt à la Conférence européenne sur la programmation de 25 Object-Oriented à Lancaster, en Angleterre, le mois dernier.