- •Вопрос 1. (по-моему, бред )
- •Вопрос 2.
- •2.1. Структурное программирование
- •2.2. Нисходящее программирование
- •Вопрос 3. Модульное программирование. Понятие и основные характеристики программного модуля.
- •Вопрос 4. Языки программирования: эволюция и классификация.
- •Вопрос 5. Системы программирования.
Вопрос 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 |