Tuesday, November 15, 2011

Comparing type systems of common languages

From http://en.wikipedia.org/wiki/Comparison_of_programming_languages:


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

No comments:

Post a Comment