Курс лекций 20 часов





НазваниеКурс лекций 20 часов
страница3/21
Дата публикации21.09.2013
Размер1.37 Mb.
ТипЛекция
100-bal.ru > Информатика > Лекция
1   2   3   4   5   6   7   8   9   ...   21

3. Понятие парадигмы программирования


Парадигмы программирования – это лишь различные инструменты, которые можно использовать при программировании. Каждый из этих инструментов по-своему хорош. Но это не значит, что они "эффективно универсальны". То есть, на самом деле, различные методики программирования дают разный выигрыш для решения задач разных классов. Этот выигрыш можно мерить по двум параметрам:

  • эффективность программного обеспечения на современных ЭВМ

  • общие затраты на разработку программного обеспечения

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

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

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

Для описания синтаксиса будут использованы грамматики в расширенной форме Бекуса-Науэра. В правой части таких грамматик допускается использование следующих "регулярных операций":

A B - последовательно А, за тем В.
A | B - альтернатива. Читается: "A или B".
A* - произвольное количество повторений (в том числе - 0 раз) А. Читается: "последовательность А".
A # B - эквивалентно A ( B A )*. Читается: "последовательность А через В".

Терминальные символы выделяются подчеркиванием.

4. Императивное программирование


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

Одна из характерных черт императивного программирования - наличие переменных с операцией "разрушающего присвоения". То есть, была переменная А, было у нее значение Х. Алгоритм предписывает на очередном шаге присвоить переменной А значение Y. То значение, которое было у А, будет "навсегда забыто". Вот что на практике означает "переход между состояниями под управлением функции переходов".

Синтаксис описания алгоритмов в простейшем языке, поддерживающем императивную модель программирования, мог бы быть таким:

Оператор ::= Простой оператор | Структурный оператор
Простой оператор ::= Оператор присваивания | Оператор вызова | Оператор возврата
Структурный оператор ::= Оператор последовательного исполнения | Оператор ветвления | Оператор цикла
Оператор присванивания ::= Переменная := Выражение ;
Оператор вызова ::= Имя подпрограммы ( Список параметров ) ;
Оператор возврата ::= return [ Выражение ] ;
Оператор последовательного исполнения ::= begin Оператор* end
Оператор ветвления ::= if Выражение then Оператор* (elseif Выражение then Оператор*)* [ else Оператор* ] end
Оператор цикла ::= while Выражение do Оператор* end

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

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

Императивное программирование наиболее пригодно для реализации небольших подзадач, где очень важна скорость исполнения на современных компьютерах. Кроме этого, работа с внешними устройствами, как правило, описывается в терминах последовательного исполнения операций ("открыть кран, набрать воды"), что делает такие задачи идеальными кандидатами на императивную реализацию.
1   2   3   4   5   6   7   8   9   ...   21

Похожие:

Курс лекций 20 часов iconКурс лекций по дисциплине «Уголовно-исполнительное право» для специальности 030503 Правоведение
Данный курс лекций рассчитан на 50 часов для базового уровня профессионального образования и един для всех форм обучения
Курс лекций 20 часов iconЭкономическая теория
Курс состоит из 39 часов лекций, 20 часов семинаров и 52 часов самостоятельной работы студентов, которая включает подготовку к семинарским...
Курс лекций 20 часов iconКурс лекций по «экологии» нгпи. 40 часов лекций + зачет и экзамен
Агаджанян Н. А., Никитюк Б. А., Полунин Н. Н. Экология человека и интегративная антропология. — М. — Астрахань, 1996. — 224 с
Курс лекций 20 часов iconСамостоятельная работа обучающихся 34 часа Аудиторная работа по дисциплине...
Учебно-методический комплекс дисциплины обсужден и утвержден на заседании кафедры зарубежной филологии
Курс лекций 20 часов iconПрограмма курса физики для студентов геологического факультета (вечернее...
Курс рассчитан на 60 лекционных часов: 1 семестр 10 лекций по 4 часа, 2 семестр 10 лекций по 2 часа. Два экзамена
Курс лекций 20 часов iconПрограмма элективного курса «Биотехнология вчера и сегодня»
Курс интегрированный, затрагивает вопросы, находящиеся на стыке биологии с другими науками, прежде всего с медициной, химией, географией....
Курс лекций 20 часов iconРабочая программа ♫ Тематика и планы семинарских занятий ♫
Элективный курс «История западноевропейской музыки» читается студентам-культурологам IV года обучения. Программа предусматривает...
Курс лекций 20 часов iconПрограмма курса
Курс расcчитан на 100 академических часов (1 акад час ~ 45 мин): 17 лекций(17*2=34часа) и 11 практических занятий(11*6=66 часов)....
Курс лекций 20 часов iconДисциплина "Логистика" входит в состав цикла специальных дисциплин....
Курс лекций ориентирован на современные экономические условия и складывающиеся рыночные отношения в Российской Федерации
Курс лекций 20 часов iconПрограмма дисциплины «менеджмент» для студентов специальности ( направления)...
Учебная дисциплина «Менеджмент» входит в раздел «Профессиональный цикл. Базовая (общепрофессиональная) часть» фгос по направлениям...
Курс лекций 20 часов iconРассмотрен и рекомендован к утверждению
Данный курс лекций рассчитан на 50 часов для базового уровня профессионального образования и един для всех форм обучения
Курс лекций 20 часов iconВ. Н. Майсак 2011 год
Данный курс лекций рассчитан на 50 часов для базового уровня профессионального образования и един для всех форм обучения
Курс лекций 20 часов iconПедиатрический факультет
Федерации для педиатрических факультетов высших медицинских учебных заведений, офтальмология преподается в 8-9 семестре обучения...
Курс лекций 20 часов iconУчебно-методический комплекс «Уголовно-исполнительное право»
Данный курс лекций рассчитан на 50 часов для базового уровня профессионального образования и един для всех форм обучения
Курс лекций 20 часов iconКурс лекций по истории и философии науки утверждено Редакционно-издательским...
Глотова В. В. Краткий курс лекций по истории и философии науки: учеб пособие / В. В. Глотова. Воронеж: фгбоу впо «Воронежский государственный...
Курс лекций 20 часов iconРабочая программа по офтальмологии кафедры офтальмологии педиатрического факультета
Федерации для педиатрических факультетов высших медицинских учебных заведений, офтальмология преподается в 8-9 семестре обучения...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск