5

This simple C++ program runs forever and I can't figure out why.

Which word or locution renders forever in this contexte?

pour toujours, à jamais, perpétuellement, sans arrêt,...?

8

Dans ce contexte, on a plutôt tendance à utiliser des termes techniques qu'on n'utiliserait pas dans la langue courante. La terminologie n'est pas complètement établie en français, il existe de nombreuses variantes ; le fait qu'il existe des variantes en anglais n'aide pas à l'émergence d'un terme unique.

Ce programme tourne en boucle et je ne comprends pas pourquoi.

« Tourner en boucle » est aussi utilisé dans la vie courante, par exemple pour une diffusion sonore ou une vidéo qui est répétée à l'infini. Dans un contexte informatique, cela n'implique pas forcément que le programme tourne véritablement en boucle : on peut utiliser ce terme pour tout programme qui ne s'arrête pas, même si son comportement n'est pas répétitif. Par exemple, on peut l'utiliser non seulement pour un programme qui affiche 1, 1, 1, …, mais aussi pour un programme qui affiche 1, 2, 3, …

Ce programme ne termine pas et je ne comprends pas pourquoi.

Cet usage de « X termine » est assez courant en informatique, surtout chez des gens qui ont une formation théorique. Il y a une inversion par rapport à l'usage courant du verbe terminer : normalement, le sujet est l'entité qui cause l'arrêt et l'objet est l'entité qui est arrêtée. À ma connaissance, l'usage intransitif de terminer, dans lequel c'est le sujet qui s'arrête, est spécifique à l'informatique (et il en est de même avec l'anglais terminate).

Dans la langue courante, terminer peut être réfléchi (« une phrase se termine par un point »), mais dans ce cas il s'agit en général d'indiquer ce qui se trouve à la fin de quelque chose, et non de signaler que la chose en question a une fin. On peut aussi dire « ce programme ne se termine pas », mais je trouve cette formulation un peu bizarre : après « ce programme se termine », je pense au code source du programme, donc « … par une accolade fermante », et non à une description de son exécution, donc pas « … avec un message d'erreur ». J'aurais besoin d'écrire quelque chose comme « l'exécution de se programme se termine avec un message d'erreur ».

L'exécution de ce programme ne se termine pas et je ne comprends pas pourquoi.
Ce programme ne s'arrête pas et je ne comprends pas pourquoi.

Dans cette phrase, « ne s'arrête pas » signifie que le programme ne s'est pas encore arrêté au moment où on l'observe. Cela n'implique pas forcément que le programme ne s'arrêtera jamais, contrairement à « ce programme ne termine pas ». Par exemple, on peut dire « j'ai envoyé la commande d'arrêt instantané mais le programme a quand même continué jusqu'à la fin des intructions initiales ». Du coup, même si l'affirmation est correcte, ce n'est pas la meilleure formulation si l'on pense que le problème est que le programme ne va jamais s'arrêter alors qu'il devrait s'arrêter de lui-même.

Ce programme a une boucle infinie, mais je n'arrive pas à trouver où.

On peut dire qu'un programme a une boucle infinie, c'est tout à fait idiomatique. Mais cela sous-entend en général qu'on sait quelle est la boucle en question, donc cela ne convient pas très bien ici. La formulation est quand même possible à condition d'être un peu plus explicite dans la deuxième partie de la phrase.

En physique, on parle de mouvement perpétuel, mais cet adjectif n'est pas utilisé en informatique. On n'utilise pas non plus des expressions telles que « pour toujours » ou « à jamais ».

  • 2
    On utilise souvent l'expression ne pas rendre la main donc : Ce programme ne rend jamais la main, et je ne comprends pas pourquoi. – jlliagre Apr 22 at 10:21
  • Cela vient de l'expression "rendre la main" utlisée dans l'aviation où il y a notion de rendre les commandes au pilote. Il doit y avoir une analogie avec le fait que lorsqu'un programme est dit bloquant aucune intéraction manuelle ne peut être effectuée. – Victor Apr 23 at 15:05
3

"Ce simple programme en C++ ne {s'arrête / finit} jamais, et je ne comprends pas pourquoi."

1

Ce programme C++ s'exécute indéfiniment sans raison apparente.

L'adverbe adéquat est « indéfini » parce que son emploi est reconnu en informatique, l'expression est claire et concise.

Exemples : Boucle infinie - Wikipédia et Le guide complet du langage C, Claude Delannoy, éd. Eyrolles.

0

Les trois premiers sont synonymes et ne conviennent pas parce qu'ils signifient « tout le temps à venir » et cela n'est pas possible. De plus le verbe qui traduit « to run » ne donne pas de clue quant à la sorte de fonctionnement, qui dans ce cas est un fonctionnement anormal. Même en anglais l'interprétation est sujette au contexte. Il me semble qu'il n'y a rien de bref et précis en français. Même en utilisant le vocabulaire familier on n'énonce pas cet état de chose sans ambiguïté.

  • Ce programme tourne sans arrêt. _ Ce programme marche sans arrêt.

Des possibilités sans ambiguïté sont les suivantes ;

  • Le programme se bloque dans une boucle sans fin.

  • Le programme a un défaut qui l'empêche de s'arrêter.

Ce programme en C++ se bloque dans des boucles sans fin et je ne trouve pas pourquoi.

Ce programme en C++ a un défaut qui empêche son arrêt et je ne trouve pas pourquoi.

  • 1
    Petite variante : ce programme boucle sans fin – Damien Apr 21 at 10:31
  • Typo « a se bloque ». Je trouve « se bloque » pronominal inusité et trouver au présent et sans complément, inhabituel. Sans doute une différence dans mon usage... – sinople incandescent Apr 21 at 20:55
  • @Survenant9r7 C'est le résultat de copies entières de phrases que l'on modifie (mal) pour en tirer une variante. (Merci de signaler cela) – LPH Apr 21 at 21:15
  • @Survenant9r7 Ça me semble courant: ngram. – LPH Apr 21 at 21:44
  • 4
    Je trouve ces formulations très alambiquées et pas du tout idiomatiques. Elles me donnent l'impression que quelqu'un a cherché à traduire sans comprendre le contexte. – Gilles Apr 22 at 0:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.