Специальная математика. Соловьев А.Е. - 96 стр.

UptoLike

Составители: 

Рубрика: 

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

Процедурные языки можно считать машинно-зависимыми, поскольку они ориентированы
на архитектуру машины Фон Неймана: память - процессор.

С точки зрения реализации, функциональному программированию присущи: представление
программы в виде списковой структуры и вычисление в режиме интерпретации. (Поэтому
тот же Э. Дейкстра назвал функциональное программирование самым извращенным
использованием машины Фон-Неймана).

Пример: Пусть имеется оператор присваивания
 y := (a+b) * c
и пусть ему соответствует функциональная запись
(приравнять у (умножить (сложить a b) с))

Списковая структура, представляющая эту функцию, будет:



     приравнять    у


                                умножить                    с



                                              сложить       а            b


                                   сумма



Вычисление - это трансформация списка в режиме интерпретации. Вначале вычисляется
функция сложения и ссылка на эту функцию заменяется ссылкой на полученную сумму.
Затем вычисляется произведение и т.д.

  Плюсы функционального программирования: большая гибкость, возможны и
естественны параллельные вычисления. Нет "спрятанных состояний", а следовательно, нет
побочных эффектов.
 Минусы функционального программирования: Режим интерпретации в десятки раз
снижает скорость вычисления; из-за необходимости хранить списковую структуры
нерационально используется память.

                                       — 96 —