Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Методология императивного параллельного программирования
Этот подход в котором предполагается использование явных конструкций для параллельного использования выбранных фрагментов программ. В общем случае параллельность заключается в одновременной обработке приложений, процессов, подпрограмм, циклов и операторов. В зависимости от уровня дробления параллельности различают ее реализацию на следующие уровни: 1) Макрокоманды 2) Операторы 3) Циклы и итерации 4) Подпрограммы 5) Потоки управления 6) Процессы 7) Приложения Традиционным в наше время является параллельность на уровне процесса. Следуют помнить, что языки параллельного программирования используют явные конструкции для параллельного выполнения кода. Существует несколько ключевых подходов в императивном параллельном программировании: 1) программирование на языке параллельного программирования (универсальных или ориентированных на конкретную архитектуры системы). 2) Программирование на известном языке, например: C++, C# и Delphi, который дополнен конструкциями распараллеливания. 3) Программирование с использованием дополнительных указаний транслятору на уровне языка Pragm. Pragm-программирование - это директива препроцессора, используемая для изменения стандартного поведения транслятора, то есть в этом случае используют 2 транслятора: первый - препроцессор (транслирует язык Pragm- программирования), второй транслятор обычный. 4) Программирование на популярном языке с использованием коммуникационных библиотек и интерфейсов для организации межпроцессорного взаимодействия, в этом случае в конструкции для параллельности, вынесены на уровень ОС. 5) Применение средств автоматического распараллеливания последоват. программ такими инструментами как компиляторы. Множеству языков содержащих конструкции распараллеливания относятся: Algol-68(1968), Concurrent Pascal(1972), Edison(1980), Ada(1979, 1983), Occam(1982), Linda(1985), Concurrent Prolog(1983), Oblig(1993).
Для реализации подпрограммы нужно записывать отдельный оператор. Функция - это подпрограмма, которая обязательно возвращает итог в точку вызова, при этом итог замещает вызов функции. В языке Python имеется только одно понятие функции, процедура в этом случае трактуется, как функция которая возвращает некоторый условный объект с именем none, он означает отсутствие реальных данных, следовательно, все функции имеют одну и ту же структуру. Чтобы функция выполнялась ее нужно активизировать, активизация выполняется указанием ее вызова внутри некоторого выражения или самостоятельным объектом. В вызове задают в обязательном порядке имя функции и круглые скобки, внутри которых может быть пусть или список объектов, которые необходимы для ее работы, такие объекты называются фактическими параметрами или аргументами, после завершения всех действий, закодированного алгоритма, функция может: 1) Возвращать в вызывающий текст какие-то итоги А) в точку вызова в форме объекта значения Б) в блок памяти фактического параметра, при этом параметр должен быть изменяемый В) блок памяти глобального объекта, который доступен как вызывающему тексту, так и функции 2) Возвращать в точку вызова значения none, чтобы иметь функцию нужно: 1) определить позицию, в которой ее можно описать 2) сформировать текст функции по определенным правилам. Текст функции может быть записан на уровне модуля, внутри оператора, внутри другой функции или внутри класса, но в этом случае функция называется методом. В языке Python имеется несколько возможностей сформировать текст функции, чаще всего используется слово def для формирования текста функции, в этом случае функция начинается заголовком вида def < имя> (< параметры> ): после этого со сдвигом на 4 позиции записывается код алгоритма, который называется блоком функции, имя - это имя функции, которую программист задает по своему усмотрению, параметры - это список имен незначащих ссылок или список ссылок с инициализацией, который трактуется как формальные параметры, элементы списка разделяются запятой, количество неограниченно, имена формальных параметров для блока функции трактуется как исходные данные для его работы, то есть в момент вызова функции этим ссылкам ставится в соответствие конкретные объекты значения(постоянные, выражения, имена значащих ссылок) эти значения являются теми которые указаны в вызовах функции в качестве фактических параметров, таким образом фактические и формальные параметры стыкуются по определенным правилам. Существуют следующие правила: 1) позиционная стыковка 2) стыковка по имени 3) стыковка с использованием значений формальных параметров Позиционная стыковка предполагает, что первый формальный параметр получает значение первого фактического параметра, второй от второго и так далее. В этом случае в качестве фактических параметров просто перечисляют объекты значений, при стыковке по имени фактический параметр содержит имя формального параметра и его значения, в этом случае перечисление фактических параметров может иметь любой порядок. Все функции в Python делятся на 2 вида: встроенные и формируемые программистом. Встроенные функции непосредственно доступны в интерпретаторе и готовы к использованию в любой момент. Особенность Python в том, что имя после def это просто имя, которое хранит адрес объекта значения функции под которым предполагается адрес блока кода функции, следовательно с именем функции можно выполнять те же операции, что и для любой другой ссылки доступной только для чтения. Например можно записать dront=sin и после этого sin(x) и dront(x) идентичны, поэтому заголовок функции с именем def это указание операции (...с объектом значения функции) Поскольку при описании функции создается объект значения, значит он определяется классом и имеет собственные ресурсы для своих целей. Встроенные функции языка Python описываются типом(классом). Любой объект встроенной функции обязательно имеет ресурсы, которые в c# принято называть полями.
|
Последнее изменение этой страницы: 2019-05-04; Просмотров: 170; Нарушение авторского права страницы