What is Expressiveness in a Computer Language

Andreas Rossberg rossberg at ps.uni-sb.de
Tue Jun 20 17:39:28 CEST 2006


Rob Thorpe wrote:
>Andreas Rossberg wrote:
>>Rob Thorpe wrote:
>>
>>>>>"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."
>>>>
>>>>"it [= a value] [...] can [...] represent values"?
>>>
>>>???
>>
>>I just quoted, in condensed form, what you said above: namely, that a
>>value represents values - which I find a strange and circular definition.
> 
> Yes, but the point is, as the other poster mentioned: values defined by
> a class.

I'm sorry, but I still think that the definition makes little sense. 
Obviously, a value simply *is* a value, it does not "represent" one, or 
several ones, regardless how you qualify that statement.

>>>Well I haven't programmed in any statically typed language where values
>>>have types themselves.
>>
>>They all have - the whole purpose of a type system is to ensure that any
>>expression of type T always evaluates to a value of type T.
> 
> But it only gaurantees this because the variables themselves have a
> type,

No, variables are insignificant in this context. You can consider a 
language without variables at all (such languages exist, and they can 
even be Turing-complete) and still have evaluation, values, and a 
non-trivial type system.

> But the value itself has no type

You mean that the type of the value is not represented at runtime? True, 
but that's simply because the type system is static. It's not the same 
as saying it has no type.

> in a C program for example I can take
> the value from some variable and recast it in any way I feel and the
> language cannot correct any errors I make because their is no
> information in the variable to indicate what type it is.

Nothing in the C spec precludes an implementation from doing just that. 
The problem with C rather is that its semantics is totally 
underspecified. In any case, C is about the worst example to use when 
discussing type systems. For starters, it is totally unsound - which is 
what your example exploits.

- Andreas



More information about the Python-list mailing list