Jensen device

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Het Jensen device is een in sommige compilers toepasbare constructie waarin het mogelijk is om parameters die van elkaar afhankelijk zijn met call-by-name door te geven. De evaluatie van de parameterexpressie wordt pas in de procedureaanroep uitgevoerd tijdens executie van het programma. Een taal waarin het Jensen device toepasbaar is, is Algol 60. Het Jensen device is bedacht in 1960 door de Deen Jørn Jensen.

integer procedure optellen(i, n, x); value n; integer n;
begin
  integer som;
  som := 0;
  for i:=1 step 1 until n do
    som := som+x;
  optellen := som;
end

Hierin is x een expressie die afhankelijk is van i. Wordt in de functie de waarde van i veranderd, dan verandert ook de waarde van x.

De aanroep optellen(i, n, u[i]*v[i]) kan zo het inwendig product van de vectoren u en v berekenen. Het gebruik van optellen(i, n, sin(i) ) telt waarden van de sinusfunctie op. Hoewel het Jensen device compact programmeren toestaat is het onmogelijk om tijdens compilatie de syntactische correctheid te garanderen. De call-by-name parameteroverdracht is dan ook niet populair geworden in tegenstelling tot call-by-value en call-by-reference.