Сравнение Языков Программирования

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск
(Итоговая таблица)
(Итоговая таблица)
Строка 117: Строка 117:
== Итоговая таблица ==
== Итоговая таблица ==
-
{| class="standard"
+
{| border="1"
!C
!C
!C++
!C++

Версия 18:29, 12 января 2013

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

ЯП из курса: C, C++, Java, C#, Pascal, Delphi, Оберон-2, Модула-2, Ада (83 и 95 стандарты)

Полезные ссылки:

Сравнение ЯП в википедии

Энциклопедия языков программирования

Немножно рекламное сравнения большинства языков

План (краткий, взят из методички Головина, подробный см. в самой методичке):

Содержание

Базисные типы данных в языках программирования: простые и составные типы данных, операции над ними

Массивы. Длина массива - статический или динамический атрибут.

Управление памятью (ручное или сборщик мусора, выделение памяти для объектов)

Указатели

Ада, C, C++, C#, Delphi, Оберон

Указатели языка Ада 83 ссылаются только на объекты из динамической памяти. Указатель языка Си++ может ссылаться на любой объект данных (динамический, локальный, статический), что может приводить к труднообнаружимым ошибкам.

Также в языке Ада отсутствует адресная арифметика (арифметические операции над указателями), что также уменьшает вероятность появления ошибки работы с памятью.

В языке Оберон указатель может быть объявлен только на массив или запись.

В Java явных указателей нет.

Операторный базис языков программирования. Управление последовательностью вычислений

Процедурные абстракции

Перегрузка операций

Ада 83, Ада 95, Си++, Java, Delphi, C#

Понятие «перегрузка» означает, что одному имени в одной области видимости может соответствовать несколько определений. В современных языках программирования перегружаться могут только имена подпрограмм, но не типов, переменных, модулей. Пример на языке Си++:

   class X {
   public:
       void f();
       void f (int)
   };
               
   X a;
   a.f(); // первая функция
   a.f(0); // вторая функция

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

Определение новых типов данных. Логические модули. Классы

Инкапсуляция и абстрактные типы данных

Модульность и раздельная трансляция

Раздельная трансляция

C, C++

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

Исключительные ситуации и обработка ошибок

Исключения и блоки try {} catch {} finally {}. Семантика возобновления и семантика завершения.

Семантика возобновления: после обработки исключения управление может вернуться непосредственно в точку, где возникло исключение (варианты: на следующий оператор или на любой оператор из того же блока). Пример языка c семантикой возобновления: Visual Basic.

Семантика завершения: после возникновения исключения блок, в котором оно возникло, обязательно завершается. Обработка исключения происходит в блоках, вызвавших блок с исключением. Пример языка с семантикой завершения: Си++.

Наследование типов и классов

Динамический полиморфизм

Абстрактные классы и интерфейсы

Абстрактный тип данных (АТД) — это тип с полностью инкапсулированной структурой. Использовать объекты АТД возможно только при помощи явно определенных в интерфейсе типа операций. Абстрактный класс (АК) — это класс, содержащий хотя бы один абстрактный метод.

Прямой связи между АК и АТД нет. АТД может быть абстрактным классом, а может и не быть. Аналогично, АК может иметь инкапсулированную структуру, а может и не иметь.

Множественное наследование

Динамическая идентификация типа

Понятие о родовых объектах. Обобщенное программирование

Итоговая таблица

C C++ C# Java Pascal Delphi Оберон Оберон-2 Modula-2 Ada83 Ada95
есть оператор перехода «goto метка» ? ? есть нет ? есть нет нет нет есть есть
Личные инструменты
Разделы