Императивные языки программирования
Императивные языки программирования манипулируют данными в пошаговом режиме, используя последовательные инструкции и применяя их к разнообразным данным. Считается, что первым алгоритмическим языком программирования был язык Plankalkuel (от plan calculus), разработанный в 1945-1946 годах Конрадом Цузе (Konrad Zuse).
Класс задач
Императивное программирование наиболее пригодно для решения задач, в которых последовательное исполнение каких-либо команд является естественным. Примером здесь может служить управление современными аппаратными средствами. Поскольку практически все современные компьютеры императивны, эта методология позволяет порождать достаточно эффективный исполняемый код. С ростом сложности задачи императивные программы становятся все менее и менее читаемыми. Программирование и отладка действительно больших программ (например, компиляторов), написанных исключительно на основе методологии императивного программирования, может затянуться на долгие годы.
2.1.2. Методология структурного императивного программирования
Методология структурного императивного программирования- подход, заключающийся в задании хорошей топологии императивных программ, в том числе отказе от использования глобальных данных и оператора безусловного перехода, разработке модулей с сильной связностью и обеспечении их независимости от других модулей. Подход базируется на двух основных принципах построения:
|
|
· последовательная декомпозиция алгоритма решения задачи сверху вниз;
· использование структурного кодирования.
Данная методология является важнейшим развитием императивной методологии.
Происхождение
Создателем структурного подхода считается Эдсгер Дейкстра. Ему также принадлежит попытка (к сожалению, совершенно неприменимая для массового программирования) соединить структурное программирование с методами доказательства программ.
Методы
Метод алгоритмической декомпозиции сверху вниз- заключается в пошаговой детализации постановки задачи, начиная с наиболее общей задачи. Данный метод обеспечивает хорошую структурированность. Метод поддерживается концепцией алгоритма.
Метод модульной организации частей программы- заключается в разбиении программы на специальные компоненты, называемые модулями. Метод поддерживается концепцией модуля.
Метод структурного кодирования- заключается в использовании при кодировании трех основных управляющих конструкций. Метки и оператор безусловного перехода являются трудно отслеживаемыми связями, без которых мы хотим обойтись. Метод поддерживается концепцией управления.
|
|
Структурные языки программирования
Основное отличие от классической методологии императивного программирования заключается в отказе (точнее, той или иной степени отказа) от оператора безусловного перехода.
Практически на всех языках, поддерживающих императивную методологию, можно разрабатывать программы и по данной методологии.
Класс задач
Класс задач для данной методологии соответствует классу задач для императивной методологии. Заметим, что при этом удается разрабатывать более сложные программы, поскольку их легко воспринимать и анализировать.
2.1.3. Методология императивного параллельного программирования
Методология императивного параллельного программирования- подход, в котором предлагается использование явных конструкций для параллельного исполнения выбранных фрагментов программ.
Происхождение
Вычислительные задачи часто имеют огромные объемы. Анализ эффективности их решений показал, что ситуацию можно значительно улучшить, если использовать для вычислений не одно, а несколько вычислительных устройств одновременно. Создание аппаратных многопроцессорных архитектур привело к широким исследовательским работам в этой области. Еще одна причина возникновения данной методологии связана с появлением достаточно сложных программ, требующих поддержки явного параллелизма.
|
|
Методы и концепции
Метод синхронизацииисполняемого кода - заключается в использовании специальных атомических операций для осуществления взаимодействия между одновременно исполняемыми фрагментами кода. Метод поддерживается концепцией примитивов синхронизации.
Вычислительная модель
Модель вычислений параллельного программирования рассмотрим в контексте модели императивного программирования. Имеется несколько вычислителей, которые характеризуются наличием общих элементов состояния. Одно из возможных описаний вычислительной модели выглядит следующим образом. Если на шаге вычислений с некоторым номером элемент состояния одного вычислителя принимал данное значение, то и для любого другого вычислителя на шаге вычисления с тем же номером соответствующий элемент состояния также должен принимать данное значение.
Синтаксис и семантика
Прямым аналогом оператора в данной методологии является процесс. Основное отличие этой методологии от императивной в том, что процессы могут исполняться параллельно.
|
|
Параллельная методология тесно привязана к платформе, на которой она реализуется. Параллелизм может быть реализован как аппаратно на централизованной архитектуре, так и в распределенной архитектуре. Как правило, всегда имеются команды типа "породить потомка", "дождаться завершения работы потомка" и т. п.
В общем случае параллелизм заключается в одновременной обработке приложений, процессов, подпрограмм, циклов и операторов. В зависимости от уровня дробления выделяют следующие уровни параллелизма:
· параллелизм на уровне микрокоманд;
· параллелизм на уровне операторов (кроме циклов);
· параллелизм на уровне циклов и итераций;
· параллелизм на уровне подпрограмм (процедур и функций);
· параллелизм на уровне потоков управления;
· параллелизм на уровне процессов;
· параллелизм на уровне приложений.
Традиционное средство структурирования высокого уровня в данной методологии - процесс. Процессы могут работать параллельно. Они осуществляют синхронизацию между собой с помощью примитивов синхронизации
Семантически взаимодействие параллельных процессов лучше всего представлять как работу сети неких устройств, соединенных каналами, по которым текут данные. Спроектировав в таких терминах, например, систему параллельных процессов для быстрого суммирования большого количества чисел, можно легко описать эту систему в приведенном синтаксисе. Каждый вычислитель производит типичные для его вычислительной модели операции. Когда процесс встречает инструкцию "принять значение из канала ", он входит в состояние ожидания, пока канал пуст. Как только в канале появляется значение, процесс его считывает и продолжает работу.
Суперпозиция задач, как правило, реализуется через систему процессов, обменивающихся между собой информацией о результатах своих вычислений.
Дата добавления: 2018-05-12; просмотров: 830; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!