Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы 1-5.doc
Скачиваний:
82
Добавлен:
15.04.2019
Размер:
108.03 Кб
Скачать

Вопрос 4. Языки программирования: эволюция и классификация.

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

Таким образом, язык программирования представляет собой систему обозначений, служащую для точного описания программ или алгоритмов для ЭВМ. Они относятся к искусственным языкам, и отличаются от естественных ограниченным числом «слов», а также строгими правилами записи команд (операторов).

Языки программирования должны удовлетворять требованиям:

  • наглядность – использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;

  • единство — использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Ко­личество этих символов должно быть по возможности минимальным;

  • гибкость — возможность относительно удобного, несложного описа­ния распространенных приемов математических вычислений с помощью имеющегося в языке ограниченного набора изобразительных средств;

  • модульность — возможность описания сложных алгоритмов в виде со­вокупности простых модулей, которые могут быть составлены отдельно и использованы в различных алгоритмах;

  • однозначность – недвусмысленность записи любого алгоритма (ее от­сутствие может привести к неправильным ответам при решении задач).

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

  • алфавит – совокупность символов, отображаемых на устройствах печати и экранах и/или вводимых с клавиатуры терминала;

  • лексика – совокупность правил образования цепочек символов (лексем), образующих идентификаторы (переменные и метки), операторы, операции, зарезервированные слова и другие лексические компоненты языка;

  • синтаксис – совокупность правил образования языковых конструкций – блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенность – принцип вложенности (рекурсивность) правил построения конструкций;

  • семантика – смысловое содержание конструкций, предложений языка, семантический анализ – проверка смысловой правильности конструкции.

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

Трансляторы – это программы-переводчики, преобразующие программу с языка программирования в машинные коды. Трансляторы реализуются в виде компиляторов или интерпретаторов.

Интерпретатор – построчный перевод и исполнение программы.

Компилятор – перевод всей программы с последующим исполнением.

Программа для ЭВМ занимается преобразованием одних данных в другие.

Поколения языков программирования:

1 поколение: Языки низкого уровня (машинно-ориентированные), предназначенные для определенного типа компьютера и отражающие его внутренний машинный код; представляют собой набор машинных команд в двоичном (бинарном) или восьмеричном формате, определяемый архитектурой ЭВМ. Используются для разработки системных программ, драйверов.

Особенности машинно-ориентированных языков программирования:

- компактность создаваемых программ, высокая скорость их выполнения;

- возможность использования конкретных аппаратных ресурсов;

- предсказуемость объектного кода и заказов памяти;

- составление эффективных программ;

- трудоемкость процесса составления программ (требуется знание системы команд и особенностей функционирования конкретной ЭВМ);

- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.

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

Различают типы операторов:

  • инструкции (при трансляции преобразуются в команды процессора и исполняются после загрузки в память загрузочного модуля программы, имеющего расширение .COM или .EXE);

  • директивы (управляют процессом ассемблерования – преобразования текста исходной программы в коды объектного модуля – расширение .OBJ).

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

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

Макровызов – оператор вызова макроопределения.

3 поколение: Языки высокого уровня, которые не зависят от типа ЭВМ. Они близки к естественному (английскому) языку, представляют набор заданных команд и предназначены для удовлетворения требований программиста (Algol, ADA, Fortran).

4 поколение: Непроцедурные языки высокого уровня. В первую очередь они предполагают описание (декларацию) свойств объекта. Основные тенденции развития:

а) объектно-ориентированные (С++), базирующиеся на понятии программного объекта, состоящего из структур данных и алгоритмов и способного пользоваться разными алгоритмами при выполнении действий, определенных одним и тем же ключевым словом (свойство полиморфизма);

б) языки запросов, позволяющие пользователям получать информацию из баз данных (SQL);

в) языки параллельного программирования (Occam, SISAL, FP), ориентированные на создание ПО для вычислительных средств параллельной архитектуры (многомашинные, мультипроцессорные среды и др.);

г) языки искусственного интеллекта, экспертных систем, баз знаний (Lisp).

Фактор

Характеристика

Группы

Примеры ЯП

Уровень ЯП

Степень близости ЯП к архитектуре компьютера

Низкий

Автокод, ассемблер

Высокий

ADA, Fortran, Pascal, Basic, C

Сверхвысокий

Сетл

Специализация ЯП

Потенциальная или реальная область применения

Общего применения (универсальные)

Algol, Basic, Pascal

Специализированные

Fortran (инженерные расчеты)

Cobol (коммерческие задачи)

Lisp (символьная обработка)

ADA (программирование в реальном времени)

Алгоритмичность (процедурность)

Возможность абстрагироваться от деталей алгоритма задачи

Процедурные

Ассемблер, Fortran, Basic, Pascal, ADA

Непроцедурные

Prolog, Langin

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]