What is Expressiveness in a Computer Language

Chris Smith cdsmith at twu.net
Tue Jun 20 16:19:53 CEST 2006

Rob Thorpe <robert.thorpe at antenova.com> wrote:
> I'm not talking about correctness, I'm talking about typing.

Since you wrote that, I've come to understand that you meant something 
specific by "property" which I didn't understand at first.  From my 
earlier perspective, it was obvious that correctness was a property of a 
value.  I now realize that you meant a property that's explicitly 
associated with the value and plays a role in determining the behavior 
of the language.  Sorry for the confusion.

> No, that isn't what I said.  What I said was:
> "A language is latently typed if a value has a property - called it's
> type - attached to it, and given it's type it can only represent values
> defined by a certain class."

No, to answer Andreas' concern, you would only need to say:

    ... if a value has a property - called it's type - attached to it,
    and the language semantics guarantees that only values defined by a
    certain class may have that same property attached.

> Easy, any statically typed language is not latently typed.

I'm actually not sure I agree with this at all.  I believe that 
reference values in Java may be said to be latently typed.  This is the 
case because each reference value (except null, which may be tested 
separately) has an explicit property (called its "class", but surely the 
word doesn't make any difference), such that the language semantics 
guarantees that only a certain class of values may have that same 
property, and the property is used to determine behavior of the language 
in many cases (for example, in the case of type-based polymorphism, or 
use of Java's instanceof operator).  Practically all class-based OO 
languages are subject to similar consideration, as it turns out.

I'm unsure whether to consider explicitly stored array lengths, which 
are present in most statically typed languages, to be part of a "type" 
in this sense or not.

Chris Smith - Lead Software Developer / Technical Trainer
MindIQ Corporation

More information about the Python-list mailing list