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



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

 

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

к пункту 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:языки “группы С” допускают широкий спектр автоматического преобразования типов при присваивании

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




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

    Басты бет