Language | Type strength | Type safety | Expression of types | Compatibility among composite types | Type checking |
---|---|---|---|---|---|
C# | strong | safe | explicit | name-based | static |
Clojure | strong | safe | implicit with optional explicit typing | dynamic | |
Erlang | strong | safe | implicit | dynamic | |
F# | strong | safe | implicit | name-based | static |
Fortran | strong | safe | explicit | name-based | static |
Go[26] | strong | safe | implicit with optional explicit typing | property-based | static |
Groovy | strong | safe | implicit with optional explicit typing | dynamic | |
Haskell | strong | safe | implicit with optional explicit typing | property-based | static |
Java | strong | safe | explicit | name-based | static |
JavaScript | weak | implicit | dynamic | ||
Objective-C | weak | safe | explicit | name-based (subclassing) and property-based (protocols) | dynamic with optional static typing |
OCaml | strong | safe | implicit with optional explicit typing | property-based | static |
Perl 6 | partially implicit | dynamic with optional static typing | |||
PHP | weak | implicit | dynamic | ||
Python | strong | safe | implicit | property-based | dynamic |
Ruby | strong | safe | implicit | property-based | dynamic |
Scala | strong | safe | partially implicit (local type inference) | name-based (subclassing) and property-based (structural) | static |
Scheme | strong | implicit | dynamic (latent) | ||
Smalltalk | strong | safe | implicit | dynamic | |
Standard ML | strong | safe | implicit with optional explicit typing | property-based | static |
Visual Basic .NET | strong | unsafe | explicit | static |
Tuesday, November 15, 2011
Comparing type systems of common languages
From http://en.wikipedia.org/wiki/Comparison_of_programming_languages:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment