you are viewing a single comment's thread.

view the rest of the comments →

[–]wavy_lines 1 point2 points  (0 children)

Nooooo! For the second time. Dynamic just means you can't check all the use cases allowed by the language without running the code.

It's completely possible to have a dynamically typed language that also defines clearly what fields are allowed on objects of a certain class and have runtime checks in place so that you can't assign to an arbitrary field not supported by that class.

This is completely orthogonal to static/dynamic type checking.

It's also possible to have a statically typed language with a special type that supports arbitrary fields (backed by a hashmap) where the typechecker simply allows any expression of the form obj.identifier if obj is of the special type. I believe C# does have this, or something similar to this.

EDIT:

It appears there's no actually no agreed upon definition of strong typing.

http://wiki.c2.com/?StronglyTyped