Information Technology Reference
In-Depth Information
Theorem 5: New Java with nested classes as presented in [GJSB00] instantiates
and executes its classes due to the Algol60-like static scope strategy. Methods
remain executed due to the dynamic scope strategy.
Inordertoachieveastaticscopeimplementation it is crucial to generate appro-
priate actual parameter information when a non-formal inner procedure identifier
is occurring as an actual parameter. In our program example π 2 it is q inside
call f(q,false) . The actual parameter information for q is generated by new
% q(this) which yields a coupling of the identifier q and of a reference to an
instance of the enclosing procedure (class) p .So3in5: p( 3 ,false) is pointing
to 3:% q( 2 ) and 6 in 8: q( 6 ,false, 2 ) to 6:% q( 5 ) .
If we compare to results on denesting of Algol60-programs it seems surprising
that Java's classes can be denested and that the original Java of 1996 is in a
way as powerful as the new Java of 2000. On the other hand, one should not
forget that methods are declared inside classes. So, honestly, original Java has
a nesting level 2, in a sense. This corresponds to a result in [LiS73] which says
that Algol60-programs of any nesting level can be denested towards level 2 in a
structurally equivalent manner (but not lower down to level 1 due to [Lan74]).
There is another interesting situation where Java-researchers could have learnt
from investigations on Algol. Apt's and Olderog's ingenious soundness definition
[Apt79, Old79] of Hoare's proof rule for recursive procedure calls [Hoa71] was
reinvented by A. Poetzsch-Heffter and P. Muller [PHM99] when they developed
a programming logic for sequential Java. See also the later subsection 3.2.
3
Algol60 and Turbo ASM
3.1
Corresponding Notions and Phrases
We have realized that the modern extension [GJSB00] of original Java [GJS96]
has adopted essential language concepts and implementation techniques from
Algol60 (without explicit mentioning, perhaps unconsciously). We see a similar
phenomenon at the specification language ASM, especially at the transition from
Basic ASM to Turbo ASM. There are a good few corresponding notions and
phrases which sound differently, but mean the same concepts:
Turbo ASM
Algol60
1. 0-ary static function
standard constant
2. n
1-ary static function
standard function
3. 0-ary dynamic function
simple variable
4. n
1-ary dynamic function n
1-dimensional array
5. location
simple or subscripted variable
6. skip rule
dummy statement
7. update rule
assignment statement
8. conditional rule
conditional statement
9. sequence rule
compound statement
10. let rule
block as a procedure body with
call-by-value parameters
Search WWH ::




Custom Search