Pull to refresh

Comments 8

Рекомендую взглянуть на newLISP. Там очень интересная реализация ООП с иммутабельными объектами. Разработчик назвал её Functional Object-Oriented Programming.
1) Иммутабельное ООП это нонсенс. Весь смысл ООП в хранении объектами состояния.
2) Документация на ваш newLISP только подтверждает моё тезис. Вот пример из официального референса:

(new Class 'Foo)
(define (Foo:modify obj val) (setf (obj 1) val))
(define (Foo:show obj) (default obj))

(set 'MyFoo:MyFoo (Foo 123)) => (Foo 123)

(:modify MyFoo 999) => 999
(:show MyFoo) => (Foo 999)

Как видите используется форма присваивания setf.

> 1) Иммутабельное ООП это нонсенс. Весь смысл ООП в хранении объектами состояния.

Откуда такая информация? Никто из основоположников ООП не говорил, что основная задача объекта — хранить _изменяемое_ состояние. А, как Вы выразились, «хранить состояние» может и иммутабельный объект.

> 2) Документация на ваш newLISP

Я к newLISP не имею никакого отношения :)

> только подтверждает моё тезис. Вот пример из официального референса:

В примере показано как можно изменять состояние объекта. Примером выше было показано как этого избежать.
>Откуда такая информация?

Например из SICP (это та самая книжка, для которой был придуман scheme). Так к этому как раз так и подвоядт, дескать вот у нас все было иммутабельно, давайте-ка попробуем мутабельнсть, бац и у нас получились объекты.

>Никто из основоположников ООП не говорил, что основная задача объекта — хранить _изменяемое_ состояние.

А откуда у вас такая информация?

> А, как Вы выразились, «хранить состояние» может и иммутабельный объект.

Может, только это уже скорее изобретательство функционального программирования в рамках ОО. Если не требуется иметь изменяемые состояния, то от ООП пропадает толк. Боюсь это тема целой главы SICP, советую почитать.
Спасибо вам. Открыл для себя книгу из разряда must read.
>> Никто из основоположников ООП не говорил, что основная задача объекта — хранить _изменяемое_ состояние.

> А откуда у вас такая информация?

Откуда информация о том, что кто-то чего-то не говорил? Конечно, мы этого никогда не узнаем, но ни в одном их труде я такого не встречал.

> Боюсь это тема целой главы SICP, советую почитать.

SICP написал Алан Кей? :D
SICP это по сути конспект лекций по введению в программирование в MIT. А этот ВУЗ заканчивали такие люди, как например Эндрю Таненбаум.

Повторюсь. Полностью иммутабельное ООП это нонсенс. Да бывает, что техника иммутабельных объектов полезна, я и сам часто ее применяю на java, но только в специальных случаях. Об этом интересно писали в журнале функциональное программирование, выпуск 1 (fprog.ru).

Объектное программирование (да и императивное вообще) это программирование путем явных изменений состояния. Не верите мне, спросите у вики. В любом пособии по функциональному программированию отсутствие состояний и декларативность как следствие — это основной тезис.
>это та самая книжка, для которой был придуман scheme
Не совсем, Steele и Sussman предумали scheme несколько раньше.
Sign up to leave a comment.

Articles