article

Jensen's Device is a computer programming technique devised by Danish computer scientist Jørn Jensen after studying the ALGOL 60 Report.

The following program was proposed to illustrate the technique. It computes the 100th harmonic number:

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; begin real temp; temp := 0; for i := lo step 1 until hi do temp := temp + term; sum := temp end; 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 to sum had been passed by value, the result would have been 100 × 1/1 = 100.

Donald Knuth later proposed the Man or Boy Test as a more rigorous exercise.

Compiler theory

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Jensen's Device".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld