Qu'est-ce qu'un point de séquence?
Un point de séquence dans la programmation informatique est un moment qui survient pendant l'exécution du programme lorsque la valeur d'une variable a été complètement calculée, sans modifications en attente d'opérations précédentes ni aucun calcul dans une expression future en cours d'exécution. Il existe un certain nombre d'endroits où existent des points de séquence - définis principalement dans le standard de langage C - comme avant l'exécution du code dans une fonction, à la fin des expressions de contrôle dans des instructions telles que "pour" et "si", et à la fin de toute expression complète, telle qu'une simple ligne de code C. Certaines des raisons pour définir un point de séquence sont d'éviter les situations ambiguës, qui entraînent un comportement indéfini ou qui pourraient confondre le compilateur et générer un code imprévisible. Dans de nombreux cas, les programmeurs ne s'inquiètent pas explicitement d'un point de séquence, bien que, dans la création d'un compilateur, le concept soit très important pour garantir que le code est exécuté correctement.
Un exemple de point de séquence dans le langage de programmation C est donné par l’énoncé A = A + B ;. Dans cette expression, le point-virgule est le point de la séquence; lorsque l'expression est terminée, la valeur de A sera évaluée et aucun calcul de résidu ne sera effectué dessus jusqu'à ce que l'expression suivante commence. Le signe égal n'est pas un point de séquence, car la valeur de A peut être modifiée par le compilateur dans n'importe quel ordre de l'expression.
La règle principale d'un point de séquence est qu'aucune variable ne sera accédée plus d'une fois entre les points à des fins autres que le calcul d'un changement de sa valeur. Une violation de cette règle est mieux exprimée lors de l'attribution d'une valeur à un tableau. S'il existe une variable A et un tableau appelé I, grammaticalement en C, il est possible d'écrire l'expression I [A] = A ++. Ici, la variable est utilisée plusieurs fois pour un but autre que l’évaluation de sa valeur actuelle; à savoir, il est utilisé comme index dans le tableau I. Cela signifie que le compilateur peut incrémenter A avant d'être utilisé comme index ou après l'avoir utilisé, en créant un comportement imprévisible qui ne peut pas être utilisé dans le programme.
Un point de séquence peut en principe être considéré comme un moyen de garantir que les instructions peuvent et seront systématiquement évaluées et exécutées par un compilateur. Cela permet également au compilateur d'employer des stratégies d'optimisation, car le comportement défini est prévisible. Dans la norme de langage C, il existe trois instances principales de points de séquence, à savoir quand une fonction commence à s'exécuter, au point d'opérateurs logiques et de virgules, et à la fin d'une expression complète se terminant par un point-virgule, comme le font la plupart des instructions en C .