Трактовка понятий функционального программирования (ФП) в языке Кантор, связь с объектно-ориентированным программированием (ООП).
ООП, ФП и СУБД
- Классы — это функции от состояния , объекты — само состояние.
- Переменная (объект) — функция, реализованная памятью.
- Свойство — функция, имеющая реализацию либо кодом, либо памятью, либо и кодом, и памятью.
- Всё это похоже на СУБД:
- Представление → функция.
- Таблица → объект → переменная.
- Материализованное представление → представление и таблица одновременно → свойство.
Функциональное программирование
- Переменная — это функция, реализованная памятью. Понятие переменной в Канторе относится к разделу ФП.
- Кортеж — это функция с несколькими out-аргументами.
Понятия ООП, выраженные через ФП
- Объект — это абстракция состояния. Объекты хранят состояние и могут его изменять в течение жизни. Задача объектов — хранить состояние между вызовами функций.
- Для связи с внешним миром объекты имеют свойства. Читаемые свойства могут участвовать в функциональных вызовах, записываемые — только в процедурах. Свойства-переменные доступны на чтение и запись, являясь агрегированными объектами.
- Каждое свойство определяется именем и набором параметров — сигнатурой (прототипом). Имя или параметры могут отсутствовать (быть null). Безымянное свойство является аналогом свойства по умолчанию в других языках программирования, а беспараметрическое свойство — командой или процедурой. Свойство без имени и параметров — сам объект — this.
- Класс — это функция от состояния, определяемая как набор свойств. Задача класса — обеспечение согласованности состояния объекта.
Реализация в компиляторе
- Язык имеет синтаксические средства для описания, как будет использоваться объект (чтение, запись, мутация, not null и пр.). Это работает для всех объектов без исключения (без «дырявых абстракций»), давая возможность строить граф достижимости.
- Частичные вычисления нужны для избавления от сборки мусора при сохранении автоматического управления памятью. Машина частичных вычислений (суперкомпилятор?) строит код на основе графов достижимости.
Ссылки
См. также
Комментариев нет :
Отправить комментарий
Выбрав в выпадающем списке пункт «Имя/URL», можно оставить комментарий от своего имени без предварительной регистрации.
Примечание. Отправлять комментарии могут только участники этого блога.