Re[20]: Мнение: объектно-ориентированное программирование — катастрофа на трилли
От: meadow_meal  
Дата: 13.09.19 14:57
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Рассмотрим две программы которые спрашивают у пользователя два числа и выдают результатом их сумму. Одна программа написана на функциональном языке, а другая на императивном. Принципиальная разница между ними следующая: программа написанная на функциональном языке не помнит своего предыдущего состояния и на два заданных числа всегда выдаёт их сумму, а программа написанная на императивном языке может помнить что было раньше и выдавать сумму всех когда либо поданных на ввод чисел, а не только двух последних.


Почему? Вот типичная функциональная программа (псевдокод)

main(State) = main(step(State))

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

При этом с точки зрения языка и системы типов, State — иммутабельный тип данных (а функции main и step чисты), но это не мешает состоянию алгоритма меняться на каждой итерации.

Точно так же решается и задача с буфером. Очередь буфера иммутабельна с точки зрения языка, но меняется с точки зрения алгоритма.

Прошу прощения, что вклиниваюсь в беседу, долго пытался понять, что вы имеете в виду, но не смог.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.