Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тезисы_лек_30.doc
Скачиваний:
55
Добавлен:
06.11.2018
Размер:
3.42 Mб
Скачать

Парадигмы программирования

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

В программировании под парадигмой принято понимать обобщение о том, как должна быть организована работа программы.

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

Структурное программирование

Некоторые представители: Fortran, Pascal, C.

Директивная программа предписывает, как достичь результата, пошагово описывая действия. Поэтому такое программирование является достаточно легким для понимания.

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

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

Функциональное и логическое программирование

Представители функциональных языков: List, Haskell.

Представитель логических языков: Prolog.

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

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

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

Объектно-ориентированное программирование

Представители объектно-ориентированных языков: С++, Java, Python.

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

ООП призвано решать более сложные и объемные задачи по сравнению с директивным программированием.

В основе ООП лежат такие понятия как наследование, полиморфизм и инкапсуляция.

Инкапсуляция предполагает, что малозначащие детали объекта скрыты. Объект, получая какую-либо команду, сам «знает» как ее обработать исходя из того, к какому классу он принадлежит.

Все объекты являются экземплярами классов, которые по отношению друг к другу могут выступать в роли родитель-потомок. Дочерние классы наследуют свойства родительского. В случае, когда 100% наследование не требуется, выручает так называемый полиморфизм, который предполагает переопределение методов родительского класса в дочерних классах.

Системы программирования. Интерпретация и компиляция

 

Системы программирования – это комплексы программ и прочих средств, предназначенных для разработки и их эксплуатации на конкретном языке программирования для конкретного вида ЭВМ.

Система программирования обычно включает:

        некоторую версию языка программирования;

        транслятор программ, представленный на этом языке;

        встроенный текстовый редактор для создания текста программы;

        соответствующую документацию;

        вспомогательные средства для отладки и выполнения программ (библиотеки подпрограмм, программы-отладчики и т.д.).

Назначение любой системы программирования – выполнение работ двух видов:

1)      создание исходной программы, т.е. написание текста программы, ввод ее в ЭВМ, отладка программы и др.;

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

Основной инструмент для работы с исходной программой – транслятор. Транслятором называется программа, обеспечивающая перевод исходной программы пользователя на внутренний язык ЭВМ (язык машинных кодов). Транслятор работает под управлением операционной системы, которая обеспечивает связь с устройствами и блоками ЭВМ. Выделяют два вида трансляторов: интерпретаторы и компиляторы.

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

В отличие от интерпретатора компилятор осуществляет перевод на машинный язык всей исходной программы.

При прохождении программы через компилятор можно выделить три этапа:

1)      ввод исходной программы с помощью текстового редактора;

2)      компиляция и редактирование программы с целью получения объектной программы, т.е. программы, переведенной в машинный код;

3)      запуск объектной программы.

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

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

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

Примером компилятора является Turbo Pascal, интерпретатора - Basic.

 

Вопросы для самоконтроля

  1. Какие вы знаете языки программирования?

  2. Что такое парадигмы программирования?

  3. Назовите концепции программирования.

Литература

  1. Джермейн К., Программирование на IBM/360, пер. с англ., 2 изд., М., 1973;

  2. American Standard FORTRAN. Approved March 7, 1966, N. Y., 1966.

  3. Калдербенк В. Дж. Курс программирования на фортране-IV. — М.: Энергия, 1976.

  4. Бриг 3. С., Капилевич Д. В., Котик С. Ю., Цегельский В. И. Фортран ЕС ЭВМ. —М.: Статистика, 1978.