What is Expressiveness in a Computer Language

Joachim Durchholz jo at durchholz.org
Sun Jun 25 09:21:56 EDT 2006


Andreas Rossberg schrieb:
> 
> Luca Cardelli has given the most convincing one in his seminal tutorial 
> "Type Systems", where he identifies "typed" and "safe" as two orthogonal 
> dimensions and gives the following matrix:
> 
>           | typed | untyped
>    -------+-------+----------
>    safe   | ML    | Lisp
>    unsafe | C     | Assembler
> 
> Now, jargon "dynamically typed" is simply untyped safe, while "weakly 
> typed" is typed unsafe.

Here's a matrix how most people that I know would fill in with terminology:

             | Statically   | Not         |
             | typed        | statically  |
             |              | typed       |
    ---------+--------------+-------------+
    typesafe | "strongly    | Dynamically |
             | typed"       | typed       |
             | (ML, Pascal) | (Lisp)      |
    ---------+--------------+-------------+
    not      | (no common   | "untyped"   |
    typesafe | terminology) |             |
             | (C)          | (Assembly)  |
    ---------+--------------+-------------+

(Terms in quotes are challenged on a regular basis, or rarely if ever 
applied.)

With the above terminology, it becomes clear that the opposite if 
"(statically) typed" isn't "statically untyped", but "not statically 
typed". "Statically typed" and "dynamically typed" aren't even 
opposites, they just don't overlap.

Another observation: type safeness is more of a spectrum than a clearcut 
distinction. Even ML and Pascal have ways to circumvent the type system, 
and even C is typesafe unless you use unsafe constructs.
IOW from a type-theoretic point of view, there is no real difference 
between their typesafe and not typesafe languages in the "statically 
typed" column; the difference is in the amount of unsafe construct usage 
in practial programs.

Regards,
Jo



More information about the Python-list mailing list