|
|
Компьютеры - Сравнение языков программирования - Типизация22 января 2011
Оглавление: 1. Сравнение языков программирования 2. Типизация 3. Компилятор/интерпретатор 4. Управление памятью 5. Управление потоком вычислений 6. Типы и структуры данных 7. Объектно-ориентированные возможности 8. Функциональные возможности 9. Разное 10. Стандартизация
Возможность |
Язык |
Ada |
C |
C++ |
C# |
D |
Eiffel |
Erlang |
F# |
Groovy |
Java |
JavaScript |
Haskell |
Common Lisp |
Nemerle |
Perl |
PHP |
Python |
Ruby |
Scala |
Smalltalk |
Tcl |
VB.NET |
Delphi |
OCaml |
PureBasic |
Статическая типизация |
+ |
+ |
+ |
+ |
+ |
+ |
- |
+ |
+ |
+ |
- |
+ |
+/- |
+ |
+/-
|
- |
- |
- |
+ |
+/-
|
- |
+ |
+ |
+ |
+ |
Динамическая типизация |
- |
- |
- |
-/+
|
- |
- |
+ |
-/+ |
+ |
- |
+ |
-
|
+ |
- |
+ |
+ |
+ |
+ |
- |
+ |
+ |
+
|
-/+
|
- |
- |
Явная типизация |
+ |
+ |
+ |
+ |
+ |
+ |
-/+
|
+ |
+ |
+ |
- |
+ |
+/- |
+ |
-/+
|
+/- |
+/-
|
- |
+ |
+/-
|
- |
+ |
+ |
+ |
+ |
Неявная типизация |
- |
- |
-/+ |
-/+ |
+ |
- |
+ |
+ |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
+ |
+ |
Неявное приведение типов без потери данных |
-/+
|
+ |
+ |
+ |
+ |
+ |
- |
- |
+ |
- |
+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
? |
+ |
+ |
+ |
+ |
- |
+ |
Неявное приведение типов с потерей данных |
- |
+ |
+ |
- |
+ |
- |
- |
- |
- |
- |
? |
- |
- |
? |
+
|
+ |
- |
- |
? |
+ |
+ |
+ |
+ |
- |
-/+ |
Неявное приведение типов в неоднозначных ситуациях |
- |
+ |
+ |
+ |
+ |
- |
- |
- |
- |
- |
+ |
- |
- |
+ |
+
|
+ |
- |
- |
? |
- |
+ |
+ |
- |
- |
-/+ |
Алиасы типов |
+ |
+ |
+ |
+ |
+ |
- |
x |
+ |
- |
- |
x |
+ |
+ |
+ |
x |
x |
x |
x |
? |
? |
x |
- |
+ |
+ |
-/+ |
Вывод типов переменных из инициализатора |
- |
- |
+/-
|
+ |
+ |
- |
x |
+ |
- |
- |
x |
+ |
+/-
|
+ |
x |
x |
x |
x |
+ |
? |
x |
+ |
- |
+ |
+ |
Вывод типов переменных из использования |
- |
- |
+/-
|
- |
- |
- |
x |
+ |
- |
- |
x |
+ |
+/-
|
+ |
x |
x |
x |
x |
? |
? |
x |
? |
- |
+ |
+/- |
Вывод типов-аргументов при вызове метода |
- |
- |
+ |
+ |
+ |
+ |
x |
+ |
+ |
+ |
x |
+ |
+/-
|
+ |
x |
x |
x |
x |
+ |
? |
x |
+ |
- |
+ |
? |
Вывод сигнатуры для локальных функций |
- |
- |
- |
- |
? |
- |
x |
+ |
- |
- |
x |
+ |
+/- |
+ |
x |
? |
x |
x |
- |
? |
x |
? |
- |
+ |
? |
Параметрический полиморфизм |
- |
x |
- |
+ |
+ |
+ |
x |
+ |
+ |
+ |
- |
+ |
+ |
+ |
x |
+ |
x |
x |
+ |
? |
x |
+ |
- |
+ |
? |
Параметрический полиморфизм с ковариантностью |
- |
x |
- |
+/-
|
? |
+ |
x |
+ |
- |
- |
- |
x |
+ |
+/- |
? |
? |
x |
x |
+ |
? |
x |
- |
- |
? |
? |
Параметрический полиморфизм высших порядков |
- |
x |
- |
- |
- |
? |
x |
- |
- |
- |
- |
+ |
+ |
- |
x |
? |
x |
x |
+ |
? |
x |
- |
- |
? |
? |
Информация о типах в runtime |
-/+
|
- |
-/+
|
+ |
+ |
+ |
+ |
+ |
+ |
+ |
-/+ |
- |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
- |
- |
Информация о типах-параметрах в runtime |
- |
- |
-/+ |
+ |
? |
? |
- |
+ |
- |
- |
-/+ |
- |
+ |
+ |
+
|
+ |
+ |
? |
- |
? |
- |
+ |
+ |
- |
- |
|
Ada |
C |
C++ |
C# |
D |
Eiffel |
Erlang |
F# |
Groovy |
Java |
JavaScript |
Haskell |
Common Lisp |
Nemerle |
Perl |
PHP |
Python |
Ruby |
Scala |
Smalltalk |
Tcl |
VB.NET |
Delphi |
OCaml |
PureBasic |
Просмотров: 8466
|