| 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