What is Expressiveness in a Computer Language

Anton van Straaten anton at appsolutions.com
Sat Jun 24 18:43:21 CEST 2006

David Hopwood wrote:
> I can accept that dynamic tagging provides some support for latent typing
> performed "in the programmer's head". But that still does not mean that
> dynamic tagging is the same thing as latent typing

No, I'm not saying it is, although I am saying that the former supports 
the latter.

> or that languages
> that use dynamic tagging are "latently typed". This simply is not a
> property of the language (as you've already conceded).

Right.  I see at least two issues here: one is that as a matter of 
shorthand, compressing "language which supports latent typing" to 
"latently-typed language" ought to be fine, as long as the term's 
meaning is understood.

But beyond that, there's an issue here about the definition of "the 
language".  When programming in a latently-typed language, a lot of 
action goes on outside the language - reasoning about static properties 
of programs that are not captured by the semantics of the language.

This means that there's a sense in which the language that the 
programmer programs in is not the same language that has a formal 
semantic definition.  As I mentioned in another post, programmers are 
essentially mentally programming in a richer language - a language which 
has informal (static) types - but the code they write down elides this 
type information, or else puts it in comments.

We have to accept, then, that the formal semantic definitions of 
dynamically-checked languages are incomplete in some important ways. 
Referring to those semantic definitions as "the language", as though 
that's all there is to the language in a broader sense, is misleading.

In this context, the term "latently-typed language" refers to the 
language that a programmer experiences, not to the subset of that 
language which is all that we're typically able to formally define.


More information about the Python-list mailing list