- Jensen's Device
Jensen's Device is a computer programming technique devised by Danish computer scientist
Jørn Jensen after studying theALGOL 60 Report.Fact|date=February 2007The following program was proposed to illustrate the technique. It computes the 100th
harmonic number by the formula :begin integer i; real procedure sum (i, lo, hi, term); value lo, hi; integer i, lo, hi; real term; comment term is passed by-name, and so is i; begin real temp; temp := 0; for i := lo step 1 until hi do temp := temp + term; sum := temp end; comment note the correspondence between the mathematical notation and the call to sum; print (sum (i, 1, 100, 1/i)) end
The above exploits
call by name to produce the correct answer (5.187...). It depends on the assumption that an expression passed as an actual parameter to a procedure would be re-evaluated every time the corresponding formal parameter's value was required. If the last parameter tosum
had been passed by value, and assuming the initial value of
i
were 1, the result would have been 100 × 1/1 = 100.Moreover, the "first" parameter to
sum
,representing the "bound" variable of the summation,must also be passed by name, otherwise it would not be possibleto compute the values to be added.(On the other hand, the global variable does not have to use the same identifier,in this casei
, as the formal parameter.)Donald Knuth later proposed the Man or Boy Test as a more rigorous exercise.
Wikimedia Foundation. 2010.