Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java (Сравнение языков программирования)
Описание файла
Файл "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java" внутри архива находится в папке "Сравнение языков программирования". Документ из архива "Сравнение языков программирования", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java"
Текст из документа "Сравнение ЯП C_ C++_ Pascal_ Ada_ Modula-2_ Oberon-2_ Java"
Сравнение языков программирования
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 |
|
|