|
|
|
Компьютеры - Сравнение языков программирования - Типизация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 |
Просмотров: 9715
|