Wat is een reekspunt?
Een volgordepunt in computerprogrammering is een moment dat zich tijdens de uitvoering van het programma voordoet, wanneer de waarde van een variabele volledig is berekend, zonder dat er nog wijzigingen zijn in eerdere bewerkingen en er nog geen berekeningen in een toekomstige expressie worden uitgevoerd. Er zijn een aantal plaatsen waar opeenvolgende punten bestaan - voornamelijk gedefinieerd in de C-taalstandaard - zoals vóór de uitvoering van de code in een functie, aan het einde van besturingsuitdrukkingen in verklaringen zoals "voor" en "als", en aan het einde van een volledige uitdrukking, zoals een eenvoudige regel C-code. Enkele redenen om een reekspunt te definiëren, zijn om situaties te vermijden die dubbelzinnig zijn, leiden tot ongedefinieerd gedrag of de compiler kunnen verwarren en code kunnen genereren die onvoorspelbaar is. In veel gevallen maken programmeurs zich niet expliciet zorgen over een reekspunt, hoewel het concept bij het maken van een compiler erg belangrijk is om ervoor te zorgen dat de code correct wordt uitgevoerd.
Een voorbeeld van een reekspunt in de programmeertaal C is in de instructie A = A + B ;. In deze uitdrukking is de puntkomma het reekspunt; wanneer de uitdrukking is voltooid, wordt de waarde van A geëvalueerd en worden er geen resterende berekeningen uitgevoerd totdat de volgende uitdrukking begint. Het gelijkteken is geen reekspunt, omdat de waarde van A door de compiler in elke volgorde in de expressie kan worden gewijzigd.
De hoofdregel van een reekspunt is dat geen enkele variabele meer dan één keer kan worden geopend tussen punten voor een ander doel dan het berekenen van een wijziging in de waarde ervan. Een overtreding van deze regel kan het beste worden uitgedrukt bij het toewijzen van een waarde aan een array. Als er een variabele A is en een array met de naam I, dan is het grammaticaal mogelijk in C de uitdrukking I [A] = A ++ te schrijven. Hier wordt de variabele meer dan eens gebruikt voor een ander doel dan het evalueren van de huidige waarde; namelijk, het wordt gebruikt als een index in de array I. Dit betekent dat de compiler A kan verhogen voordat het wordt gebruikt als een index of nadat het wordt gebruikt, waardoor onvoorspelbaar gedrag ontstaat waarop niet kan worden vertrouwd in het programma.
Een reekspunt kan in principe worden gezien als een manier om te zorgen dat statements consistent kunnen en worden geëvalueerd en uitgevoerd door een compiler. Hierdoor kan een compiler ook optimalisatiestrategieën gebruiken, omdat het gedefinieerde gedrag voorspelbaar is. Binnen de C-taalstandaard zijn er drie hoofdinstanties van reekspunten, namelijk wanneer een functie met uitvoering begint, op het punt van logische operatoren en komma's en aan het einde van een volledige uitdrukking die eindigt met een puntkomma, zoals de meeste C-instructies doen .