Python Strings

Quinn Dunkan quinn at cruzeiro.ugcs.caltech.edu
Wed Sep 6 20:44:47 CEST 2000


On Wed, 06 Sep 2000 08:00:40 -0700, Keith Ray <k_j_r_a_y at ix.netcom.com> wrote:
>What most people mean by "strongly-typed" or "staticly typed" is "there 
>is compile-time checking of variable types" (and parameter-types, and 
>function-return-types and expressions being assigned or passed into 
>variables/parameters/etc.).
>
>What most people mean by "weakly-typed" or "dynamically typed" is "there 
>is only run-time checking of variable types" (and parameter-types, and 
>function-return-types and expressions being assigned or passed into 
>variables/parameters/etc.).
>
>C is a language that is staticly typed -- but the parameter types for 
>non-prototyped function are not checked by the compiler, making C one of 
>the most dangerous language in which to be a sloppy programmer.

Well, I've never taken a CS class, but my impression was that:

strongly typed - no typecasts, values' types never change
weakly typed - typecasts (does this include automatic conversion like perl?)

statically typed - function signatures and variable bindings must be known at
    compile time
dynamically typed - types are muddled out at runtime

untyped - there is only one type (strings for tcl, hex for assembly, ...)

So python is strongly dynamically typed.
C is weakly statically typed.
haskell is strongly statically typed.

In fact, C is the only language I know of that is weakly typed... is this
"correct" usage?  It makes sense to me... but I posted this because I'm sure
someone out there can clear this up for me.

>C++ and Java are staticly typed -- you declare a type for a variable. If 
>you try to assign the wrong type to it, the compiler complains at 
>compile-time. If you try to pass an array into a function that is 
>expecting a floating-point-scalar, then the compiler will give you an 
>error at compile time.

I would consider the language's reference/binding semantics to be a seperate
issue from typefulness.  In fact, C and perl (and java?) are the only
languages I know of that always use explicit references/pointers.



More information about the Python-list mailing list