Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java (1161141), страница 2
Текст из файла (страница 2)
КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:
к пункту 1: ADA позволяет использовать три варианта параметров – in, out, и in out
к пункту 2: C и С++ не позволяют определить размер параметра-массива
к пункту 5: С++ позволяет перегружать операции "[]", "." и "*"
КОММЕНТАРИИ К ПРОГНОЗУ:
к пункту 3: необязательные параметры - достаточно простой и наглядный способ варьировать набор параметров процедуры
к пункту 4: перегрузка имен процедур необходима для реализации ООП
к пункту 5: необходимость перегружать знаки операций вызывает у автора серьезные сомнения
к пункту 10: возможность описывать локальные процедуры представляется излишней (здесь, как и в случае с типом “множество”, сильно влияние Вирта, три языка которого присутствуют в рейтинге).
D. КОНСТРУКТОР ТИПОВ В ЯЗЫКАХ ПРОГРАММИРОВАНИЯ.
Эта группа параметров характеризует способность языка создавать новые типы данных на основе имеющихся, а так же реализацию некоторых встроенных типов, таких как строки или множества.
| C | C++ | Java | Pascal | Modula-2 | Oberon-2 | Ada 95 | Прогноз | |||
1.Встроенный тип строк символов |
|
| + |
| ++ |
|
|
| + |
| + |
2.Скалярный тип и отрезок | ++ | ++ |
|
| + | + |
|
| ++ |
| + |
3.Запись (структура) с вариантной частью | + | + |
|
| ++ | ++ |
|
| + |
| ++ |
4.Массив | + | + | + |
| ++ | ++ | ++ |
| ++ |
| + |
5.Массив с переменной границей | + | + | ++ |
|
|
|
|
| + |
|
|
6.Указатель | + | + |
|
| + | + | + |
| + |
| + |
7.Множество |
|
|
|
| + | + | + |
|
|
| + |
8.Вложенность описаний типов |
|
|
|
| + | + | + |
| + |
| + |
9.Булевский тип |
| + | ++ |
| ++ | ++ | ++ |
| ++ |
| ++ |
РЕЙТИНГ ПО ГРУППЕ: | 6 | 7 | 6 |
| 12 | 10 | 7 |
| 11 |
|
|
КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:
к пункту 1: PASCAL позволяет пользоваться как массивами символов, так и строками ASCIIZ
к пункту 2:в С, C++ и ADA можно произвольно назначать значения констант скалярного типа
к пункту 3:С и С++ позволяют объявить только одно поле в варианте; в ADA вариант записи должен быть определен в момент ее создания
к пункту 4:в С, C++ и Яве нельзя объявлять матрицы вида arr[10,20]; тип индекса всегда целый, нумерация элементов всегда от 0
к пункту 5:в Яве все массивы с переменной границей; в С и С++ нельзя определить фактический размер массива с переменной границей
к пункту 6:в Яве все переменные и объекты являются скрытыми указателями
к пункту 8:здесь оценивается возможность вместо имени типа указать его объявление; С++ допускает вложенные объявления только массива и указателя на тип
к пункту 9:тип bool в С++ автоматически преобразуется в тип int и обратно, так что при создании программ его можно игнорировать
КОММЕНТАРИИ К ПРОГНОЗУ:
к пункту 1: строки – настолько важный тип данных, что для его реализации желательно иметь специальный базовый тип
к пункту 2: необходимость явно присваивать значения константам скалярного типа вызывает серьезные сомнения
к пункту 3: несмотря на возможность реализовать запись с вариантами путем наследования (в языках, поддерживающих ООП), без этого механизма сложно обойтись в системном программировании
к пункту 5: массив с переменной верхней границей как правило, необходим только при описании формальных параметров процедуры
к пункту 7: множество является удобным механизмом, однако его реализация не вполне эффективна; тем не менее множества (ненагруженные) очевидно, сохранятся в будущих языках программирования
к пункту 8: неограниченная вложенность описаний типов - необходимое условие удобства работы программиста
к пункту 9: наличие булевского типа данных позволяет выявить многие семантические ошибки на этапе трансляции
E. СТРОГАЯ ТИПИЗАЦИЯ В ЯЗЫКАХ ПРОГРАММИРОВАНИЯ.
Этот раздел показывает, насколько строгий контроль типов обеспечивает тот или иной язык программирования. Отсутствие или ослабление контроля воспринимается, как недостаток языка.
| C | C++ | Java | Pascal | Modula-2 | Oberon-2 | Ada 95 | Прогноз | |||
1.Контроль оператора присваивания | + | + | ++ |
| ++ | ++ | ++ |
| ++ |
| ++ |
2.Контроль фактических параметров | + | + | ++ |
| ++ | ++ | ++ |
| ++ |
| ++ |
3.Контроль типа счетчика for | + | + | + |
| + | + | + |
| + |
| + |
4.Контроль типа условия в if,while,repeat (do) |
|
| + |
| + | + | + |
| + |
| + |
5.Автоматическое преобразование типов |
|
| + |
| + | ++ | ++ |
| ++ |
| ++ |
6.Контроль переключателя в записи |
|
|
|
|
|
|
|
| + |
|
|
7.Операции приведения типов | + | + | + |
| ++ | ++ | ++ |
| ++ |
| ++ |
8.Контроль границ индекса массива |
|
| + |
|
|
|
|
| + |
|
|
РЕЙТИНГ ПО ГРУППЕ: | 4 | 4 | 9 |
| 9 | 9 | 9 |
| 12 |
|
|
КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:
к пункту 1:языки “группы С” допускают широкий спектр автоматического преобразования типов при присваивании