Сравнение языков программирования C, C++, Pascal, Ada, Modula-2, Oberon-2 и Java A. Зачем это делается



бет3/4
Дата13.06.2016
өлшемі335.5 Kb.
#133382
1   2   3   4

 

КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:

к пункту 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



КОММЕНТАРИИ К ПРОГНОЗУ:

к пункту 1: необходимость в двух уровнях инкапсуляции представляется автору излишней

к пункту 2: перегрузка имен процедур необходима для реализации ООП, однако этот механизм ухудшает "читабельность" текста программы и нуждается в некоторых ограничениях

к пункту 3: множественное наследование можно реализовать с помощью других механизмов ООП

к пункту 4: как показал пример ADA, конструкторы и деструкторы не являются обязательными компонентами ООП

к пункту 5: компилятор в состоянии самостоятельно определить “виртуальность” метода



H. ПРОЦЕССЫ И ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ.

Механизмы реализации параллельных процессов и обработки исключительных ситуаций являются скорее экзотикой, нежели обязательным компонентом современных языков программирования. Однако наличие этих механизмов в нескольких языках требует включить их в анализ для сравнения.



 

C

C++

Java




Pascal

Modula-2

Oberon-2




Ada 95




Прогноз

1. Сопрограммы

 

 

 

 

 

+

+

 

+

 

+

2. Сигналы

 

 

 

 

 

+

+

 

++

 

 

3. Критические участки (мониторы)

 

 

 

 

 

 

 

 

+

 

+

4. Исключительные ситуации

 

+

+

 

 

 

 

 

+

 

 

5. Распространение ситуаций

 

+

+

 

 

 

 

 

+

 

 

РЕЙТИНГ ПО ГРУППЕ:

0

2

2

 

0

2

2

 

6

 

 

КОММЕНТАРИИ К ОЦЕНКЕ СВОЙСТВ:

к пункту 2:ADA имеет специальный оператор приема сигналов when



КОММЕНТАРИИ К ПРОГНОЗУ:

к пункту 1: этот наиболее примитивный механизм параллельных процессов желателен в каждом языке программирования

к пункту 3: критические участки (мониторы) могут выступать альтернативой механизму сигналов

к пунктам 4-5: механизм обработки исключительных ситуаций в общем виде громоздок и трудно реализуем, однако желательно иметь некоторые средства для обработки ошибок времени выполнения

 

I. ПРОЧИЕ ВОЗМОЖНОСТИ.

Важные свойства языков программирования, тематически не относящиеся к предыдущим разделам, были объединены в дополнительный раздел "прочие возможности".







































 1. Инициализация переменных

+

++

++

 

+

 

 

 

+

 

+

2. Константные выражения

+

++

++

 

++

++

++

 

++

 

++

3. Типизированные константы

+

+

+

 

+

++

+

 

++

 

+

4. Макросы

+

+

+

 

 

 

 

 

++

 

 

5. Приоритеты логических операций

+

+

+

 

 

 

 

 

+

 

+

6. Адресная арифметика

+

+

 

 

 

 

 

 

 

 

 

7. Условное выражение

+

+

+

 

 

 

 

 

 

 

 

8. Операция разыменования

+

+

 

 

+

+

+

 

 

 

+

9. Операция “разыменование+доступ к полю”

+

+

 

 

 

++

++

 

++

 

+

РЕЙТИНГ ПО ГРУППЕ:

9

11

8

 

5

7

6

 

11

 

 


Достарыңызбен бөлісу:
1   2   3   4




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет