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

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


1 чел. помогло.
Смотрите также:
Рабочая программа по курсу “Программирование на языках высокого уровня” Факультет экономический...
Основные разделы программы Программирование на языке высокого уровня Операционные системы...
Роль и значение языка паскаль в эволюции языков программирования...
Данное пособие поможет написать сочинения для школьников. Внем собраны лучшие сочинения...
Эти произведения автора не относятся к относительно совершенным в литературно духовном и т п...
Параллельные программы главный тормоз 11 2 mpi 11 3 Реализации mpi 12 4 Средства...
«Теория игр и исследование операций» Направления нк, нп 4 курс, 1-й семестр (2008/09 уч год)...
Программы Организации Объединенных Наций по окружающей среде комитет высокого уровня министров...
Рабочая программа по дисциплине Основы алгоритмизации и программирования (язык С/C++) Для...
Составление программы на языке программирования...
Литература [Абрамов89] Абрамов С. А., Зима Е. В...
Алгоритмизация и программирование. Языки программирования высокого уровня...



Загрузка...
страницы: 1   2   3   4   5   6   7   8
вернуться в начало
скачать
^

Сильные стороны

Повышение надёжности кода


Привлекательная сторона вычислений без состояний — повышение надёжности кода за счёт чёткой структуризации и отсутствия необходимости отслеживания побочных эффектов. Любая функция работает только с локальными данными и работает с ними всегда одинаково, независимо от того, где, как и при каких обстоятельствах она вызывается. Невозможность мутации данных при пользовании ими в разных местах программы исключает появление труднообнаруживаемых ошибок (таких, например, как случайное присваивание неверного значения глобальной переменной в императивной программе).
^

Удобство организации модульного тестирования


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

Таким образом имеется возможность протестировать каждую функцию в программе, просто вычислив её от различных наборов значений аргументов. При этом можно не беспокоиться ни о вызове функций в правильном порядке, ни о правильном формировании внешнего состояния. Если любая функция в программе проходит модульные тесты, то можно быть уверенным в качестве всей программы. В императивных программах проверка возвращаемого значения функции недостаточна: функция может модифицировать внешнее состояние, которое тоже нужно проверять, чего не нужно делать в функциональных программах[4].
^

Возможности оптимизации при компиляции


Традиционно упоминаемой положительной особенностью функционального программирования является то, что оно позволяет описывать программу в так называемом «декларативном» виде, когда жесткая последовательность выполнения многих операций, необходимых для вычисления результата, в явном виде не задаётся, а формируется автоматически в процессе вычисления функций.[источник не указан 214 дней] Это обстоятельство, а также отсутствие состояний даёт возможность применять к функциональным программам достаточно сложные методы автоматической оптимизации.
^

Возможности параллелизма


Ещё одним преимуществом функциональных программ является то, что они предоставляют широчайшие возможности для автоматического распараллеливания вычислений. Поскольку отсутствие побочных эффектов гарантировано, в любом вызове функции всегда допустимо параллельное вычисление двух различных параметров — порядок их вычисления не может оказать влияния на результат вызова.

Недостатки


Недостатки функционального программирования вытекают из тех же самых его особенностей. Отсутствие присваиваний и замена их на порождение новых данных приводят к необходимости постоянного выделения и автоматического освобождения памяти, поэтому в системе исполнения функциональной программы обязательным компонентом становится высокоэффективный сборщик мусора. Предполагается, что релиз Java7 с новым сборщиком мусора G1, несколько снизит остроту проблемы.

Для преодоления недостатков функциональных программ уже первые языки функционального программирования включали не только чисто функциональные средства, но и механизмы императивного программирования (присваивание, цикл, «неявный PROGN» были уже в LISPе). Использование таких средств позволяет решить некоторые практические проблемы, но это означает отход от идей (и преимуществ) функционального программирования и написание императивных программ на функциональных языках.


^ 17. Парадигмы программирования. Логическое программирование

Логи́ческое программи́рованиепарадигма программирования, основанная на автоматическом доказательстве теорем, а также раздел дискретной математики, изучающий принципы логического вывода информации на основе заданных фактов и правил вывода. Логическое программирование основано на теории и аппарате математической логики с использованием математических принципов резолюций.

Самым известным языком логического программирования является Prolog.

^ Пролог (англ. Prolog) — язык и система логического программирования, основанные на языке предикатов математической логики исчисления предикатов, представляющей собой подмножество логики предикатов первого порядка.

^ Основными понятиями в языке Пролог являются факты, правила логического вывода и запросы, позволяющие описывать базы знаний, процедуры логического вывода и принятия решений, на основе которых система логического программирования Пролог делает логические выводы и дает осмысленные ответы.

^ Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил логического вывода с логическими заключениями и списком логических условий.

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

^ Факты в базах знаний на языке Пролог представляют конкретные сведения (знания). Обобщённые сведения и знания в языке Пролог задаются правилами логического вывода (определениями) и наборами таких правил вывода (определений) над конкретными фактами и обобщенными сведениями. --ВАК, проф.,док.комп.наук 05:28, 21 июля 2009 (UTC)

^ Логическое программирование - использование логики в качестве языка программирования - строится на идее, что не человека следует обучать компьютерному мышлению, а компьютер должен выпол-нять инструкции, свойственные человеку.

В логическом программировании программа представляет собой не набор команд и инструкции для компьютера, а описание абстрактной модели решаемой задачи; в виде логических аксиом [хорновых предложений] (утверждений)

A:-B1, B2, … Bn A истинно, если истинны Bi

формулируются сведения о задаче и предположения, достаточные для её решения.

Подобная программа может выполняться путем постановки задачи, описанной в виде логического утверждения - целевого утверждения (вопроса)

G?

Выполнение программы состоит в попытке решить задачу, т.е. доказать целевое утверждение G, используя предположения A, заданные в логической программе.

Наиболее известным языком логического программирования является Пролог, созданный на рубеже 60 - 70-х годов ХХ в. в Марсельском университете А. Колмерором и его сотрудниками на основе теоретических работ Р.А. Ковальского (программа доказательства теорем Programmation en Logique, которая включала интерпретатор хорновых дизъюнктов Ковальского).


18. Многопроцессорные системы. Определение, свойства


Потребность решения сложных прикладных задач с большим объемом вычислений и принципиальная ограниченность максимального быстродействия «классических» – по схеме фон Неймана - ЭВМ привели к появлению многопроцессорных вычислительных систем (МВС). Использование таких средств вычислительной техники позволяет существенно увеличивать производительность ЭВМ при любом существующем уровне развития компьютерного оборудования. При этом, однако, необходимо «параллельное» обобщение традиционной - последовательной - технологии решения задач на ЭВМ. Так, численные методы в случае МВС должны проектироваться как системы параллельных и взаимодействующих между собой процессов, допускающих исполнение на независимых процессорах. Применяемые алгоритмические языки и системное программное обеспечение должны обеспечивать создание параллельных программ, организовывать синхронизацию и взаимоисключение асинхронных процессов и т.п.


^ Микропроцессорная система (МПС) представляет собой функционально законченное изделие, состоящее из одного или нескольких устройств, главным образом микропроцессорных: микропроцессора и/или микроконтроллера.

^ Микропроцессорное устройство (МПУ) представляет собой функционально и конструктивно законченное изделие, состоящее из нескольких микросхем, в состав которых входит микропроцессор; оно предназначено для выполнения определённого набора функций: получение, обработка, передача, преобразование информации и управление.

Главная особенность микропроцессора — возможность программирования логики работы. Поэтому МПС используются для управления процессом измерения (реализацией алгоритма измерения), обработки опытных данных, хранения и вывода результатов измерения и пр. Рассмотрим основные преимущества микропроцессорных средств измерения.

  • Многофункциональность. Замена измерительного комплекса (совокупности различных измерительных приборов) одним, многофункциональным. Такая замена в приборах с «жесткой» логикой неэкономична. Так как добавление новой функции требует ввода дополнительного блока. Программируемая логика позволяет сделать это добавлением блока программы. Число программ ограничено возможностями ПЗУ и блока управления.

  • ^ Повышение точности — наиболее важный момент. Уменьшение погрешностей по сравнению с обычными цифровыми приборами при прочих равных условиях достигается за счет исключения систематических погрешностей в процессе самокалибровки: коррекция смещения нуля, учет собственной АЧХ прибора, учен нелинейности преобразователей. Самокалибровка в данном случае — это измерение поправок или поправочных множителей и запоминание их в ОЗУ с целью использования на этапе обработки опытных данных.

  • ^ Уменьшение влияния случайных погрешностей (путем проведения многократных измерений с последующей обработкой выборки — усреднением, вычислением мат. ожидания и пр.). Выявление и устранение грубых погрешностей (промахов). Вычисление и индикация оценки погрешности прямо в процессе измерения.

  • ^ Компенсация внутренних шумов и повышение чувствительности средства измерения. Простое усреднение сигнала на входе прибора требует достаточно большого времени tycp. Один из вариантов — проведение многократных измерений и усреднение результатов с целью компенсации случайной составляющей измерительного сигнала. Пример — микропроцессорный ВЧ вольтметр среднеквадратического значения.

  • ^ Расширение измерительных возможностей путем широкого использования косвенных и совокупных измерений, воспринимаемых оператором в этом случае как прямые (поскольку результат обработки появляется на индикаторе сразу после проведения измерения). Напомним, что косвенные измерения включают в себя вычисления результата по опытным данным по известному алгоритму. Совокупные измерения предполагают измерение нескольких одноименных физических величин путем решения системы уравнений, получаемых при прямых измерениях сочетаний этих величин. (Например, измерение сопротивления различных сочетаний резисторов — последовательное, параллельное, последовательно-параллельное, позволяют рассчитать сопротивление каждого из них). В этих случаях микропроцессор осуществляет управление процессом измерения по программе и проводит обработку опытных данных. Результат расчетов воспринимается оператором как результат прямых измерений, поскольку расчет делается быстро.

  • ^ Упрощение и облегчение управления прибором. Все управление производится с кнопочной панели, выносные клавиатуры используют редко. Чем меньше кнопок, тем более «разумным» является прибор. Автоматизация установок прибора приводит к упрощению его использования (выбор пределов измерения, автоматическая калибровка и пр.). В ряде приборов использую контроль за ошибочными действиями оператора — индикация его неверных действий на табло или экране. Упрощает измерения визуализация результатов на экране в удобном виде, с дополнительными шкалами. Ряд приборов предусматривает вывод результатов на печатающее устройство, и на флоппи-диск для сохранения и переноса на компьютер.


19. Многопроцессорные системы. Модель организации памяти


Одной из отличительных особенностей многопроцессорной вычислительной системы является сеть обмена, с помощью которой процессоры соединяются друг с другом или с памятью. Модель обмена настолько важна для многопроцессорной системы, что многие характеристики производительности и другие оценки выражаются отношением времени обработки к времени обмена, соответствующим решаемым задачам. Существуют две основные модели межпроцессорного обмена: одна основана на передаче сообщений, другая - на использовании общей памяти. В многопроцессорной системе с общей памятью один процессор осуществляет запись в конкретную ячейку, а другой процессор производит считывание из этой ячейки памяти. Чтобы обеспечить согласованность данных и синхронизацию процессов, обмен часто реализуется по принципу взаимно исключающего доступа к общей памяти методом "почтового ящика".

В архитектурах с локальной памятью непосредственное разделение памяти невозможно. Вместо этого процессоры получают доступ к совместно используемым данным посредством передачи сообщений по сети обмена. Эффективность схемы коммуникаций зависит от протоколов обмена, основных сетей обмена и пропускной способности памяти и каналов обмена.

Часто, и притом необосновано, в машинах с общей памятью и векторных машинах затраты на обмен не учитываются, так как проблемы обмена в значительной степени скрыты от программиста. Однако накладные расходы на обмен в этих машинах имеются и определяются конфликтами шин, памяти и процессоров. Чем больше процессоров добавляется в систему, тем больше процессов соперничают при использовании одних и тех же данных и шины, что приводит к состоянию насыщения. Модель системы с общей памятью очень удобна для программирования и иногда рассматривается как высокоуровневое средство оценки влияния обмена на работу системы, даже если основная система в действительности реализована с применением локальной памяти и принципа передачи сообщений.

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

Таким образом, существующие MIMD-машины распадаются на два основных класса в зависимости от количества объединяемых процессоров, которое определяет и способ организации памяти и методику их межсоединений.

К первой группе относятся машины с общей (разделяемой) основной памятью, объединяющие до нескольких десятков (обычно менее 32) процессоров. Сравнительно небольшое количество процессоров в таких машинах позволяет иметь одну централизованную общую память и объединить процессоры и память с помощью одной шины. При наличии у процессоров кэш-памяти достаточного объема высокопроизводительная шина и общая память могут удовлетворить обращения к памяти, поступающие от нескольких процессоров. Поскольку имеется единственная память с одним и тем же временем доступа, эти машины иногда называются UMA (Uniform Memory Access). Такой способ организации со сравнительно небольшой разделяемой памятью в настоящее время является наиболее популярным. Структура подобной системы представлена на рис. 3.28.



Рис. 3.28. Типовая архитектура мультипроцессорной системы с общей памятью.

Вторую группу машин составляют крупномасштабные системы с распределенной памятью. Для того чтобы поддерживать большое количество процессоров приходится распределять основную память между ними, в противном случае полосы пропускания памяти просто может не хватить для удовлетворения запросов, поступающих от очень большого числа процессоров. Естественно при таком подходе также требуется реализовать связь процессоров между собой. На рис. 3.29 показана структура такой системы.

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

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

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



Рис. 3.29. Типовая архитектура машины с распределенной памятью.

Для обмена в общей памяти это включает:

  • Совместимость с хорошо понятными используемыми как в однопроцессорных, так и маломасштабных многопроцессорных системах, механизмами, которые используют для обмена общую память.

  • Простота программирования, когда модели обмена между процессорами сложные или динамически меняются во время выполнения. Подобные преимущества упрощают конструирование компилятора.

  • Более низкая задержка обмена и лучшее использование полосы пропускания при обмене малыми порциями данных.

  • Возможность использования аппаратно управляемого кэширования для снижения частоты удаленного обмена, допускающая кэширование всех данных как разделяемых, так и неразделяемых.

Основные преимущества обмена с помощью передачи сообщений являются:

  • Аппаратура может быть более простой, особенно по сравнению с моделью разделяемой памяти, которая поддерживает масштабируемую когерентность кэш-памяти.

  • Модели обмена понятны, принуждают программистов (или компиляторы) уделять внимание обмену, который обычно имеет высокую, связанную с ним стоимость.

Конечно, требуемая модель обмена может быть надстроена над аппаратной моделью, которая использует любой из этих механизмов. Поддержка передачи сообщений над разделяемой памятью, естественно, намного проще, если предположить, что машины имеют адекватные полосы пропускания. Основные трудности возникают при работе с сообщениями, которые могут быть неправильно выровнены и сообщениями произвольной длины в системе памяти, которая обычно ориентирована на передачу выровненных блоков данных, организованных как блоки кэш-памяти. Эти трудности можно преодолеть либо с небольшими потерями производительности программным способом, либо существенно без потерь при использовании небольшой аппаратной поддержки.

Построение механизмов реализации разделяемой памяти над механизмом передачи сообщений намного сложнее. Без предполагаемой поддержки со стороны аппаратуры все обращения к разделяемой памяти потребуют привлечения операционной системы как для обеспечения преобразования адресов и защиты памяти, так и для преобразования обращений к памяти в посылку и прием сообщений. Поскольку операции загрузки и записи обычно работают с небольшим объемом данных, то большие накладные расходы по поддержанию такого обмена делают невозможной чисто программную реализацию.

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

  1. ^ Полоса пропускания: в идеале полоса пропускания механизма обмена будет ограничена полосами пропускания процессора, памяти и системы межсоединений, а не какими-либо аспектами механизма обмена. Связанные с механизмом обмена накладные расходы (например, длина межпроцессорной связи) прямо воздействуют на полосу пропускания.

  2. Задержка: в идеале задержка должна быть настолько мала, насколько это возможно. Для ее определения критичны накладные расходы аппаратуры и программного обеспечения, связанные с инициированием и завершением обмена.

  3. ^ Упрятывание задержки: насколько хорошо механизм скрывает задержку путем перекрытия обмена с вычислениями или с другими обменами.


20. Многопроцессорные системы. Восстановление после сбоев.


Источники ошибок кроются в дефектах элементов, либо в

неблагоприятном физическом воздействии окружающей среды.

Дефекты – отклонения физических параметров компонентов системы за

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

выработкой ресурса и проявляющиеся как внезапный или постепенный выход

из строя компонентов. Для устранения постоянного отказа нужно обнаружить

факт отказа, осуществить поиск отказавшего элемента и заменить его.

Постоянные отказы характеризуются средним временем Tотк наработки на

отказ, а степень приспособленности МПС к обнаружению и устранению

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

временем Tрем ремонта (восстановления).

Производственные дефекты – это неисправные комплектующие изделия,

установленные в системе при изготовлении.

Физические неисправности, связанные с воздействием среды, – это

перемежающиеся (кратковременные) отказы или сбои, приводящие к


искажению данных при передаче, обработке и хранении. Восстановление

работоспособности МПС после сбоя заключается в восстановлении

правильности данных, искаженных сбоем. Перемежающиеся отказы

характеризуются средним временем Tсб наработки на один сбой и кратностью l

сбоев.

Причиной субъективных, или внесенных, неисправностей являются

ошибки проектирования, неправильный монтаж элементов или неправильные

действия оператора.

Проектные неисправности вызваны недостатками схем аппаратуры,

программ и конструкций, а также средств разработки и эксплуатации –

компиляторов, ассемблеров, программ автоматизации проектирования,

инструкций по эксплуатации, процедур и средств контроля и т.п. Эти

недостатки могут быть внесены в систему на различных стадиях разработки

МПС при структурном проектировании, разработке алгоритмов, написании

программ, трансляции в машинный код, детальном логическом и техническом

проектировании, а также при последующих модификациях аппаратного и

программного обеспечения.

Интерактивные неисправности возникают, если в процессе эксплуатации

или технического обслуживания оператор вводит в систему данные,

нарушающие правильное функционирование системы. Это может быть связано

с неточным вводом данных или следствием непонимания инструкции для

оператора.

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

физических тем, что после обнаружения, локализации и коррекции больше не

возникают.





оставить комментарий
страница8/8
Дата02.10.2011
Размер0.79 Mb.
ТипДокументы, Образовательные материалы
Добавить документ в свой блог или на сайт

страницы: 1   2   3   4   5   6   7   8
хорошо
  1
отлично
  1
Ваша оценка:
Разместите кнопку на своём сайте или блоге:
rudocs.exdat.com

Загрузка...
База данных защищена авторским правом ©exdat 2000-2017
При копировании материала укажите ссылку
обратиться к администрации
Анализ
Справочники
Сценарии
Рефераты
Курсовые работы
Авторефераты
Программы
Методички
Документы
Понятия

опубликовать
Загрузка...
Документы

Рейтинг@Mail.ru
наверх