ВУЗ:
Составители:
Рубрика:
главное, что в процедурном программировании термин переменная используется для
обозначения изменяемой константы, не имеющей ничего общего с понятием переменной в
традиционной математике.
Процедурное программирование - это "сплошные побочные эффекты".
Самой простой и фундаментальной иллюстрацией служит оператор присваивания:
Х := Х + 1, где правый Х - это (относительный) адрес в памяти, где находится предыдущее
значение Х … Или типичная процедура работы с массивом (матрицей) - в "вольном
переводе" на математический язык, здесь "функция" меняет свой аргумент, который
становится значением "функции".
Вместо циклов процедурного программирования (как раз отслеживающих значения
изменяемых констант) в функциональном программировании используется рекурсия.
Процедурные языки можно считать машинно-зависимыми, поскольку они ориентированы
на архитектуру машины Фон Неймана: память - процессор.
С точки зрения реализации, функциональному программированию присущи: представление
программы в виде списковой структуры и вычисление в режиме интерпретации. (Поэтому
тот же Э. Дейкстра назвал функциональное программирование самым извращенным
использованием машины Фон-Неймана).
Пример: Пусть имеется оператор присваивания
y := (a+b) * c
и пусть ему соответствует функциональная запись
(приравнять у (умножить (сложить a b) с))
Списковая структура, представляющая эту функцию, будет:
приравнять у
умножить с
сложить а b
сумма
Вычисление - это трансформация списка в режиме интерпретации. Вначале вычисляется
функция сложения и ссылка на эту функцию заменяется ссылкой на полученную сумму.
Затем вычисляется произведение и т.д.
Плюсы функционального программирования: большая гибкость, возможны и
естественны параллельные вычисления. Нет "спрятанных состояний", а следовательно, нет
побочных эффектов.
Минусы функционального программирования: Режим интерпретации в десятки раз
снижает скорость вычисления; из-за необходимости хранить списковую структуры
нерационально используется память.
— 96 —
главное, что в процедурном программировании термин переменная используется для обозначения изменяемой константы, не имеющей ничего общего с понятием переменной в традиционной математике. Процедурное программирование - это "сплошные побочные эффекты". Самой простой и фундаментальной иллюстрацией служит оператор присваивания: Х := Х + 1, где правый Х - это (относительный) адрес в памяти, где находится предыдущее значение Х … Или типичная процедура работы с массивом (матрицей) - в "вольном переводе" на математический язык, здесь "функция" меняет свой аргумент, который становится значением "функции". Вместо циклов процедурного программирования (как раз отслеживающих значения изменяемых констант) в функциональном программировании используется рекурсия. Процедурные языки можно считать машинно-зависимыми, поскольку они ориентированы на архитектуру машины Фон Неймана: память - процессор. С точки зрения реализации, функциональному программированию присущи: представление программы в виде списковой структуры и вычисление в режиме интерпретации. (Поэтому тот же Э. Дейкстра назвал функциональное программирование самым извращенным использованием машины Фон-Неймана). Пример: Пусть имеется оператор присваивания y := (a+b) * c и пусть ему соответствует функциональная запись (приравнять у (умножить (сложить a b) с)) Списковая структура, представляющая эту функцию, будет: приравнять у умножить с сложить а b сумма Вычисление - это трансформация списка в режиме интерпретации. Вначале вычисляется функция сложения и ссылка на эту функцию заменяется ссылкой на полученную сумму. Затем вычисляется произведение и т.д. Плюсы функционального программирования: большая гибкость, возможны и естественны параллельные вычисления. Нет "спрятанных состояний", а следовательно, нет побочных эффектов. Минусы функционального программирования: Режим интерпретации в десятки раз снижает скорость вычисления; из-за необходимости хранить списковую структуры нерационально используется память. — 96 —
Страницы
- « первая
- ‹ предыдущая
- …
- 94
- 95
- 96
- 97
- 98
- …
- следующая ›
- последняя »