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



бет1/4
Дата13.06.2016
өлшемі335.5 Kb.
#133382
  1   2   3   4
Сравнение языков программирования

C, C++, Pascal, Ada, Modula-2, Oberon-2 и Java

A. ЗАЧЕМ ЭТО ДЕЛАЕТСЯ.

Целью настоящей работы было определение типичного набора конструкций, используемых в современных языках программирования. Языки сравнивались между собой по более чем 70 параметрам, разделенным на 8 групп (набор операторов, конструктор типов и т.п.).

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

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

Для анализа отбирались языки программирования, зарекомендовавшие себя как инструменты для системного программирования и создания больших систем. Условно их можно поделить на две группы: клоны С (С, С++ и Java) и клоны PASCAL (PASCAL, MODULA-2 и OBERON-2). Особняком стоит ADA, которую нельзя однозначно отнести ни к первой, ни ко второй группе.

При анализе использовались стандарты языков программирования, за одним исключением – для PASCAL использовалась реализация языка в компиляторах фирмы Borland (Objective Pascal системы Delphi). Исключение для PASCAL было сделано потому, что, несмотря на приличный возраст языка, не существует общепринятого стандарта для расширений языка в области объектно-ориентированного программирования. В остальном принцип следования стандарту выдерживался последовательно. Так, скалярный тип (enum) С получил от С++, и при программировании на С он практически не используется, однако было отмечено, что С содержит такую конструкцию, поскольку она есть в ныне действующем стандарте языка.



B. НАБОР ОПЕРАТОРОВ В ЯЗЫКАХ ПРОГРАММИРОВАНИЯ.

Эта группа свойств характеризует наличие в языках основных операторов: присваивания, вызова процедуры, трех видов циклов и двух видов условий. В обзор, помимо них, включены другие удобные операторы, а так же псевдопроцедуры вроде процедур ввода-вывода С (printf/scanf), PASCAL (read/write) и процедур работы с динамическими типами данных.



 

C

C++

Java




Pascal

Modula-2

Oberon-2




Ada 95




1.Присваивание простых типов

++

++

+

 

+

+

+

 

+

 

2.Присваивание любых типов

 

 

+

 

+

+

+

 

+

 

3.Вызов процедуры

+

+

+

 

+

+

+

 

+

 

4.Вызов функции как процедуры

+

+



 



 

 

 

 

 

5.Условный оператор (if)

+

+

+

 

+

++

++

 

++

 

6.Оператор выбора (case,switch)

+

+

+

 

++

++

++

 

++

 

7.Цикл с предусловием (while)

+

+

+

 

+

+

+

 

+

 

8.Цикл с постусловием (repeat,do)

+

+

+

 

+

+

+

 

+

 

9.Цикл с параметром (for) , шаг 1

++

++

++

 

+

+

+

 

+

 

10.Цикл с параметром (for), любой шаг

+

+

+

 

 

+

+

 

 

 

11.Безусловный цикл (loop)

 

 

 

 

 

+

+

 

+

 

12.Оператор перехода (goto)

+

+







+










+




13.Выход/повтор цикла (break.continue)

++

++

++

 

++

+

+

 

+

 

14.Выход из процедуры (return)

+



+

 

 

+

+

 

+

 

15.Блок операторов

+

+

+

 

 

 

 

 

+

 

16.Операторы ввода-вывода (writeln,printf)

+

+

 

 



 

 

 

 

 

17.Оператор работы со структурой (with)

 

 

 

 

+

+

 

 

 

 

18.Оператор new

 

+



 

+

 

+

 

+

 

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

17

18

16

 

16

15

15

 

16

 

 

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

к пункту 1:C и С++ допускают присваивание любому адресному выражению

к пункту 4:PASCAL для использования функции в качестве процедуры требует установки соответствующего ключа компиляции

к пункту 5:оператор if в ADA, OBERON и MODULA имеют закрывающую скобку и раздел elsif

к пункту 6:в C, С++ и Ява нет синтаксически проверяемой границы варианта

к пункту 9:в C++ имеется возможность использовать несколько счетчиков цикла

к пункту 13:в ADA, OBERON и MODULA имеется только оператор выхода из цикла

к пункту 18:оператор new необходим в языках, поддерживающих ООП



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

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

к пункту 5:расширенная форма оператора if (с закрывающей скобкой) дает возможность точно локализовать синтаксические ошибки

к пункту 9:цикл с несколькими счетчиками не востребован в современных языках программирования

к пункту 15:локальные переменные желательно объявлять в цикле for (счетчик цикла)

к пункту 18:расширенная форма оператора new (с вызовом конструктора) необходима для корректной реализации ООП

 

C. МЕХАНИЗМ ПРОЦЕДУР В ЯЗЫКАХ ПРОГРАММИРОВАНИЯ.

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



 

C

C++

Java




Pascal

Modula-2

Oberon-2




Ada 95




Прогноз

1.Класс параметров VAR (по ссылке)

 

+

 

 

+

+

+

 

++

 

+

2.Параметр “неограниченный массив”

+

+

++

 

 

++

++

 

++

 

+

3.Необязательные параметры

 

+

 

 

 

 

 

 

+

 

+

4.Перегрузка имен процедур

 

+



 

+

 

+

 

+

 

+

5.Перегрузка знаков операций

 

++

 

 

 

 

 

 

+

 

 

6.Локальные переменные класса static

+

+

 

 

+

 

 

 

 

 

 

7.Процедуры inline

+

+

 

 

+

 

 

 

+

 

 

8.Переменные типа procedure

+

+

 

 

+

+

+

 

+

 

+

9.Рекурсия прямая и косвенная

+

+

+

 

+

+

+

 

+

 

+

10.Вложенные процедуры и функции

 

 

 

 

+

+

+

 

+

 

 

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

5

10

4

 

7

6

7

 

11

 

 


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




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

    Басты бет