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
> 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