What is Expressiveness in a Computer Language

Joachim Durchholz jo at durchholz.org
Wed Jun 21 07:24:39 EDT 2006


Pascal Costanza schrieb:
> (It's really important to understand that the idea is to use this for 
> deployed programs - albeit hopefully in a more structured fashion - and 
> not only for debugging. The example I have given is an extreme one that 
> you would probably not use as such in a "real-world" setting, but it 
> shows that there is a boundary beyond which static type systems cannot 
> be used in a meaningful way anymore, at least as far as I can tell.)

As soon as the running program can be updated, the distinction between 
"static" (compile time) and "dynamic" (run time) blurs.
You can still erect a definition for such a case, but it needs to refer 
to the update process, and hence becomes language-specific. In other 
words, language-independent definitions of dynamic and static typing 
won't give any meaningful results for such languages.

I'd say it makes more sense to talk about what advantages of static vs. 
dynamic typing can be applied in such a situation.
E.g. one interesting topic would be the change in trade-offs: making 
sure that a type error cannot occur becomes much more difficult 
(particularly if the set of available types can change during an 
update), so static typing starts to lose some of its appeal; OTOH a good 
type system can give you a lot of guarantees even in such a situation, 
even if it might have to revert to the occasional run-time type check, 
so static checking still has its merits.

Regards,
Jo



More information about the Python-list mailing list