Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Функциональное программирование. От до середины 50-х годов XX в

Читайте также:
  1. I. Программирование на CF Pascal
  2. PPUZKK 4230-программирование и прогнозирование урожаев зерновых культур и картофеля
  3. PPUZKK 4230-программирование и прогнозирование урожаев зерновых культур и картофеля
  4. VII.Модульное программирование.
  5. Алгоритмизация и программирование
  6. Введение в программирование для Windows
  7. Введение в программирование на языке Pascal Работа с величинами. Ввод-вывод Выражения. Линейные алгоритмы
  8. Виды, типы и функциональное устройство мультиплексоров и селекторов
  9. Виды, типы и функциональное устройство шифраторов и дешифраторов.
  10. Виртуальные методы. Функциональное назначение. Примеры применения.

 

От до середины 50-х годов XX в. до середины 60-х годов XX в.

 

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

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

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

 

В некоторых языках программирования (например, в Pascal ) функции и процедуры (подпрограммы, не возвращающие значения) чётко разграничены синтаксисом языка. В других — например, в языке C, — процедуры являются частным случаем (подмножеством) функций, возвращающими значение типа void — пустое значение.

 

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

 

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

 

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

 

 

Достоинства такого подхода:

· существенно снижение трудоемкости разработки программ за счет появления средств оперирования подпрограммами;

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

Недостатки:

· возрастание вероятности искажения глобальных данных какой-либо подпрограммой при увеличении их количества;

· ограниченные возможности программиста отслеживать процессы обработки данных.

 

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

 

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

 

 

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

 




Дата добавления: 2015-01-12; просмотров: 16 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав