Size: a a a

2020 May 13

DS

Doge Shibu in rust_offtopic
Т-34 85
@Psilon @gitkpp @DogeShibu вопрос: в ФП есть данные (состояние)? Как же тогда ООП ляжет на декларативщину?
Есть, конечно. Почему им там не быть?
источник

NL

Nick Linker in rust_offtopic
Т-34 85
@Psilon @gitkpp @DogeShibu вопрос: в ФП есть данные (состояние)? Как же тогда ООП ляжет на декларативщину?
Я не являюсь ни одним из них, но знаю ответ.

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

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

p

polunin.ai in rust_offtopic
Nick Linker
Я не являюсь ни одним из них, но знаю ответ.

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

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

NL

Nick Linker in rust_offtopic
polunin.ai
фп полностью иммутабельно, а значит там нет состояния
дас ист брэд
источник

Т8

Т-34 85 in rust_offtopic
Nick Linker
Я не являюсь ни одним из них, но знаю ответ.

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

Таким образом можно сэмулировать изменяемый граф объектов из ООП, машину Тьюринга и любые вычислимые функции (но никто не обещает, что это будет дёшево в вычислительном плане, в Хаскеле применяется множество приёмов для достижения практической эффективности).
Ээ, это получится объект, в котором все поля иммутабельны? И тогда, получается, что модифицировать одно поле невозможно, методы будут полностью новые объекты создавать?

Окей, согласен, можно натянуть.
источник

Т8

Т-34 85 in rust_offtopic
Alex Zhukovsky
новички сразу рождаются со знаниями, ведь мир из объектов состоит, а ООПэ - ИНТУИТИВНА
Тогда поправлю себя. Ооп, может, и не интуитивно, но императивное точно интуитивно
источник

Т8

Т-34 85 in rust_offtopic
Только математика портит, ибо складывается впечатление, что она похожа на то, что ты пытаешься сделать в императивной парадигме
источник

NL

Nick Linker in rust_offtopic
Т-34 85
Ээ, это получится объект, в котором все поля иммутабельны? И тогда, получается, что модифицировать одно поле невозможно, методы будут полностью новые объекты создавать?

Окей, согласен, можно натянуть.
У меня была вводная лекция про ФП для студентов (которые в-основном питонисты)
https://nlinker.github.io/presentations/07_why-do-we-need-fp/index-ru.html

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

G

Gymmasssorla in rust_offtopic
Nick Linker
У меня была вводная лекция про ФП для студентов (которые в-основном питонисты)
https://nlinker.github.io/presentations/07_why-do-we-need-fp/index-ru.html

Я утверждаю, что применять элементы ФП можно даже в таком насквозь императивном языке как питон и получать определённые преимущества. Но конечно, действительно удобно это делается только в подходящих для этого языках.
Ооооочень расплывчато, можно и поподробней было бы
источник

Т8

Т-34 85 in rust_offtopic
Nick Linker
У меня была вводная лекция про ФП для студентов (которые в-основном питонисты)
https://nlinker.github.io/presentations/07_why-do-we-need-fp/index-ru.html

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

VS

Victor Sapiens in rust_offtopic
Victor Sapiens
Полиморфизм в плане объектов это когда ты принимаешь один из типов входящий в сумму типов и он имеет поведение характерное для суммы типов.  Т. Е. Ты говоришь что тебе нужен вот конкретный тип, а тебе отдают любой тип в сумму типов которого входит тип который ты запросил. Т. Е тот тип который является просто = твой тип + ещё какие-то типы. Ну и да. Переопределение - override это выставление приоритета одной функции в сумме типе над другой.  Ты объединяешь (складываешь, конкатенируешь) 2 класса в один и говоришь что вот этот метод будет главным и будет вызываться он в не точно такая же его копия из жругого класса.
Ну и в продолжении - класс это такой по сути модуль. Неймспейс. В миниатюре.
источник

Т8

Т-34 85 in rust_offtopic
Или просто ничего не мутировать сознательно
источник

Т8

Т-34 85 in rust_offtopic
Victor Sapiens
Ну и в продолжении - класс это такой по сути модуль. Неймспейс. В миниатюре.
Профессор, давай разработаем императивную арифметику для школьников и детсадовцев?
источник

Т8

Т-34 85 in rust_offtopic
Правда, я пока не представляю, как это будет выглядеть
источник

VS

Victor Sapiens in rust_offtopic
Т-34 85
Профессор, давай разработаем императивную арифметику для школьников и детсадовцев?
Нихт! 😁
источник

Т8

Т-34 85 in rust_offtopic
Victor Sapiens
Нихт! 😁
Вредина! Ладно, тогда попробую уломать @p0lunin
источник

p

polunin.ai in rust_offtopic
Т-34 85
Профессор, давай разработаем императивную арифметику для школьников и детсадовцев?
это как
источник

Т8

Т-34 85 in rust_offtopic
polunin.ai
это как
Так, чтобы школьникам не пришлось рассказывать про коробочки при знакомстве с императивным языком. А чтоб он сам сообразил
источник

p

polunin.ai in rust_offtopic
Т-34 85
Так, чтобы школьникам не пришлось рассказывать про коробочки при знакомстве с императивным языком. А чтоб он сам сообразил
переменные они и в математике переменные, как и функции
условные и циклические операторы нужно объяснять на теории алгоритмов перед программированием на ЯП
источник

NL

Nick Linker in rust_offtopic
Т-34 85
Так, чтобы школьникам не пришлось рассказывать про коробочки при знакомстве с императивным языком. А чтоб он сам сообразил
Тут человек уже сделал процессор из бумаги: https://youtu.be/WHaad3MpdpE?t=1492

Только нужно следовать правилам перемещения ленточек, а так довольно доступно 😊
источник