Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java (Сравнение языков программирования), страница 3
Описание файла
Файл "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java" внутри архива находится в папке "Сравнение языков программирования". Документ из архива "Сравнение языков программирования", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java"
Текст 3 страницы из документа "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java"
к пункту 2:С++ имеет более "мягкие" правила соответствия типов
к пункту 4:С++ требует, чтобы условие в этих операторах имело тип “bool”, однако допускает автоматическое преобразование типа “int” в “bool”
к пункту 5:С и PASCAL допускают автоматическое преобразование числовых типов (это противоречит концепции строгой типизации); С++ автоматически преобразует “int ” в “bool”, В ADA автоматические преобразования числовых типов существуют, но строго контролируются
к пункту 7:в С, С++ и Яве префиксная форма записи операции по преобразованию типов
КОММЕНТАРИИ К ПРОГНОЗУ:
к пункту 2: "жесткие" правила совместимости типов позволяют выявить на этапе трансляции многие семантические ошибки
к пункту 5 : "хорошим тоном" с точки з рения строгой типи з ации считается полный запрет на автоматическое (неявное) преобразование типов ; в языках MODULA, OBERON и ADA допускаются только преобразования типа отрезка к базовому типу и некоторые преобразования целых типов
к пункту 6: контроль значения переключателя в записи во время выполнения программы крайне неэффективен с точки з рения реализации
F. РАЗДЕЛЬНАЯ КОМПИЛЯЦИЯ В ЯЗЫКАХ ПРОГРАММИРОВАНИЯ.
Механизм раздельной компиляции должен обеспечивать сборку программы и з ранее написанных модулей. Оценивается полнота и удобство этого механи з ма в каждом я з ыке программирования.
| C | C++ | Java | Pascal | Modula-2 | Oberon-2 | Ada 95 | Прогноз | |||
1. Единицы компиляции | + | + | ++ |
| ++ | ++ | ++ |
| ++ |
| ++ |
2. Раздел интерфейса модуля | ++ | ++ | ++ |
| + | ++ |
|
| ++ |
| ++ |
3. Импорт модулей |
| + | + |
| + | ++ | + |
| + |
| + |
4.Экспорт идентификаторов | + | + | + |
| + | + | + |
| + |
| + |
5.Ограничения видимости |
| + |
|
|
|
|
|
| ++ |
|
|
6. Синонимы |
|
|
|
|
|
| + |
| + |
|
|
7. Настраиваемые модули |
| + |
|
|
|
|
|
| + |
|
|
8. Произвольная структура модулей | + | + | + |
| + | + | + |
| + |
| + |
РЕЙТИНГ ПО ГРУППЕ: | 5 | 8 | 7 |
| 6 | 8 | 6 |
| 11 |
|
|
КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:
к пункту 1:у С и С++ единицей компиляции может быть только файл
к пункту 2:PASCAL не имеет отдельного файла описания интерфе й са модуля; в OBERON экспортируемые имена помечаются специальным знаком прямо в тексте модуля
к пункту 3:С позволяет импортировать модули только с помощью директивы include; MODULA-2 позволяет импортировать не все экспортируемые модулем идентификаторы
к пункту 5:в С++ для ограничения видимости можно использовать конструкцию namespace
к пункту 7:конструкция template из С++ позволяет создавать настраиваемые модули, однако может приводить к ошибкам компиляции в template-функциях (в отличие от конструкций generate из ADA)
КОММЕНТАРИИ К ПРОГНОЗУ:
к пункту 1: выделение специальных скобок для единицы компиляции (UNIT, MODULE или PACKAGE) позволяет избежать некоторых семантических ошибок
к пункту 3: использование для импорта модулей в C механизма include является устаревшим методом и снижает скорость компиляции
к пункту 5: средства для изменения контекста не нашли большого практического применения
к пункту 6: синонимы для импортируемых идентификаторов являются удобным, но не необходимым механизмом для организации межмодульных связей
к пункту 7: настраиваемые модули являются расширением механизма макросов, однако они сложны для реализации и не являются жизненно необходимыми
G. АБСТРАКТНЫЕ ТИПЫ ДАННЫХ И ОБЪЕКТЫ.
Этот раздел характеризует реализацию в современных языках программирования теоретических разработок: абстрактных типов данных и объектно-ориентированного программирования (отчасти механизм абстрактных типов данных рассмотрен в предыдущем разделе).
| C | C++ | Java | Pascal | Modula-2 | Oberon-2 | Ada 95 | Прогноз | |||
1. Инкапсуляция | + | ++ | ++ |
| + | + | ++ |
| + |
| + |
2. Полиморфизм |
| ++ | + |
|
|
|
|
| + |
| + |
3. Наследование |
| ++ | + |
| + |
| + |
| + |
| + |
4. Конструкторы и деструкторы |
| ++ | ++ |
| + |
|
|
|
|
|
|
5. Виртуальные методы |
| + | ++ |
| + |
| ++ |
| ++ |
| ++ |
6. Неявный параметр метода |
| ++ | ++ |
| ++ |
| + |
|
|
| + |
7. Доступ к тегам объектов |
|
|
|
|
|
| + |
| + |
|
|
РЕЙТИНГ ПО ГРУППЕ: | 1 | 10 | 10 |
| 6 | 1 | 7 |
| 6 |
|
|
КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:
к пункту 1:С++ и JAVA имеют два уровня инкапсуляции - protected и private; OBERON допускает инкапсуляцию “только для чтения”
к пункту 2:в С++ можно перегружать знаки операций
к пункту 3:С++ допускает множественное наследование
к пункту 4:в PASCAL конструкторы требуется вызывать явно
к пункту 5:в PASCAL и С++ виртуальные методы требуется объявлять явно
к пункту 6:имеется в виду возможность префиксной записи вида “объект.метод(параметры метода)”; в OBERON такая возможность присутствует, однако при описании метода параметр следует указывать явно
к пункту 7:OBERON предоставляет ограниченные возможности для проверки тега объекта с помощью оператора WITH и операции IS
КОММЕНТАРИИ К ПРОГНОЗУ: