What is Expressiveness in a Computer Language
marshall.spight at gmail.com
Fri Jun 23 13:15:56 EDT 2006
Chris Uppal wrote:
> But, as a sort of half-way, semi-formal, example: consider the type environment
> in a Java runtime. The JVM does formal type-checking of classfiles as it loads
> them. In most ways that checking is static -- it's treating the bytecode as
> program text and doing a static analysis on it before allowing it to run (and
> rejecting what it can't prove to be acceptable by its criteria). However, it
> isn't /entirely/ static because the collection of classes varies at runtime in
> a (potentially) highly dynamic way. So it can't really examine the "whole"
> text of the program -- indeed there is no such thing. So it ends up with a
> hybrid static/dynamic type system -- it records any assumptions it had to make
> in order to find a proof of the acceptability of the new code, and if (sometime
> in the future) another class is proposed which violates those assumptions, then
> that second class is rejected.
I have to object to the term "hybrid".
Java has a static type system.
Java has runtime tags and tag checks.
The two are distinct, and neither one is less than complete, so
I don't think "hybrid" captures the situation well.
More information about the Python-list