
Sergey
17.09.2017
20:10:10

illiatshurotshka❄️
17.09.2017
20:10:36
не выйдет

Sergey
17.09.2017
20:10:46

illiatshurotshka❄️
17.09.2017
20:10:52
не хочу

Google

Sergei
17.09.2017
20:11:02
да и в Lua насколько я помню
вот есть поведение и состояние у каждого экземпляра функции (js, lua)
function counter() {
let count = 0;
return function() {
count = count + 1;
return count;
}
}
c1 = counter();
c2 = counter();
console.log(c1()); //1
console.log(c1()); //2
console.log(c2()); //1

illiatshurotshka❄️
17.09.2017
20:11:29
опять же это замыкания

Sergey
17.09.2017
20:11:36
это состояние + поведение
= объект

illiatshurotshka❄️
17.09.2017
20:11:52
но это разные концепции

Sergey
17.09.2017
20:12:08
ну на самом деле не особо то и разные
https://www.youtube.com/watch?v=RdE-d_EhzmA
вот у этого чела были неплохие реплики на эту тему

Sergei
17.09.2017
20:13:15

Sergey
17.09.2017
20:16:25
OOP это:
- все есть объект. ОБъект это "что-то". Хочешь - объект это замыкание. В эрланге это по сути микротред. Хочешь - еще чего. Это не важно. Это просто совокупность состояния и поведения.
- объекты обмениваются сообщениями между собой что бы просить что-то сделать/посчитать/уточнить
- объекты должно быть легко подменять. То есть иметь возможность поменять поведение системы за счет "переконфигурации". Late binding короч
ну это я так понимаю
внутри объекта все вполне может жить по правилам функциональной чистоты и т.д.

Google

Sergey
17.09.2017
20:16:57
опять же - Erlang хороший пример тру ООП языка

Yan
17.09.2017
20:20:07
В видео OOP is dead
Интересно, сколько будут хоронить ООП

Sergey
17.09.2017
20:20:50
ну или разберись что такое OODD

Yan
17.09.2017
20:21:18

Sergey
17.09.2017
20:21:35

Yan
17.09.2017
20:21:46
Ща гляну

Sergey
17.09.2017
20:28:41
Object-Oriented Design and Development

Yan
17.09.2017
20:28:55
Ясно, как это относится к смерти ООП?

Sergey
17.09.2017
20:29:23
ну посмотри видос полностью и может быть поймешь
идею убили давно, раз ты считаешь что "функция это не объект"

Yan
17.09.2017
20:29:38
Ты не можешь ответить?

Sergey
17.09.2017
20:30:04
идея ООП умерла тогда когда "объект" начали отождествлять только с "инстанс класса"
это намного более широкая концепция а ее подают настолько примитивно что проще просто забить и возвращаться к структурному программированию (что собственно все и делают на самом то деле, классы и т.д. были до ООП)

Yan
17.09.2017
20:32:15

Sergey
17.09.2017
20:33:04
Конкретика будет?
я привел тебе пример - посмотри на erlang. Ты можешь воспринимать "объектом" там микротред, весь стэйт приватный, взаимодействие "объектов" посредствам обмена сообщений
вполне "конкретно"

Yan
17.09.2017
20:33:30

Google

Sergey
17.09.2017
20:33:51
у меня нет цели "заставить тебя что-то там осознать". Если тебе интересно - сам погуглишь
если нет - ну ок

Yan
17.09.2017
20:34:29

Sergey
17.09.2017
20:34:45

Yan
17.09.2017
20:35:24

Sergey
17.09.2017
20:35:37

Sergei
17.09.2017
20:35:40
вы бы определились, что считать "объектом", а что - нет. наверное много вопросов бы отпало, и все дружно вернулись к изначальной битве "является ли Java функциональным языком?"

Yan
17.09.2017
20:36:42
ну то есть ты не можешь)
Чувак, ты тут распинаешься о том, о сем, об умершем ООП, о более широких концепциях, конкретики нет, а потом спрашиваешь меня что такое объект.

Sergei
17.09.2017
20:36:48
Обьект это сущность

Sergey
17.09.2017
20:37:10
ибо судя по всему у тебя чуть другой вижен "что такое объект". И это корень проблемы во взаимопонимании который следует устранить

Yan
17.09.2017
20:38:58

Sergey
17.09.2017
20:39:13

Yan
17.09.2017
20:39:30

Sergey
17.09.2017
20:39:31
точнее по другому, какое отношение классы имеют к объектам?

Yan
17.09.2017
20:39:51
Я уже написал

Sergey
17.09.2017
20:40:01
ну мол в моем разумении классы это сущности существующие в компайл тайме а объекты, стэйт и т.д. - в рантйаем
соответственно следует убрать слово "класс" из твоего определения.

Google

Yan
17.09.2017
20:40:47
И наследование заодно убери

Sergey
17.09.2017
20:40:48
далее, "состояние и поведение". Можно ли считать объектом некую сущность у которой нет состояния?

Yan
17.09.2017
20:41:15
Смотря что по-твоему состояние

Sergey
17.09.2017
20:41:34

Sergei
17.09.2017
20:41:43
Как я думаю, главное семантика, а обьекты, классы, функции как они пишутся в чём разница, разные языки, это технические штуки, а семантика это как бы выше что ли, вот например книга и блокнот, в блокноте страницы перелистываются вертикально к примеру, в книге горизонтально, в книге уже что то написано, но в блокното тоже, т.е. расчерчены линии, как книга состоит из бумаги так и блокнот, вещи вроде бы разные но похожие. Так же и "стейт" у функции, отличие методов и функций и т.д.

Sergey
17.09.2017
20:42:04

Yan
17.09.2017
20:42:27

Sergey
17.09.2017
20:42:44
Как я думаю, главное семантика, а обьекты, классы, функции как они пишутся в чём разница, разные языки, это технические штуки, а семантика это как бы выше что ли, вот например книга и блокнот, в блокноте страницы перелистываются вертикально к примеру, в книге горизонтально, в книге уже что то написано, но в блокното тоже, т.е. расчерчены линии, как книга состоит из бумаги так и блокнот, вещи вроде бы разные но похожие. Так же и "стейт" у функции, отличие методов и функций и т.д.
да, важна семантика а не конкретная реализация в конкретном языке

Yan
17.09.2017
20:43:14
Я имею ввиду реализуй в функциях наследование, подобное наследованию в классах
А не как это в ядре языка

Sergey
17.09.2017
20:43:43
ну и опять же. та же композиция/аргегация
p.s. наследование не нужно для ООП

Yan
17.09.2017
20:44:17
Мы сейчас обо всем, и о языках тоже, иначе можно говорить вообще о машинном коде, ведь все к этому сводится

Sergey
17.09.2017
20:44:35
потому что ты в кучу ложишь какие-то концепции типа "наследование" и почему-то считаешь это важным

Yan
17.09.2017
20:45:19
Ты возьми функцию и проведи параллель с объектом, как утверждал, а не о реализации того или иного абстрактно, не привязываясь к языку

Google

Sergey
17.09.2017
20:45:35
монады очень похожи на объекты по своей сути
они "инкапсулируют" в себе какой-то стэйт
и предоставляют некое поведение

Yan
17.09.2017
20:46:27

Sergey
17.09.2017
20:46:40
а что тебе еще нужно? все остальное - просто функции
если у тебя нет стэйта, что тебе еще надо?)
и я повторюсь - какой-нибудь сервис предоставляющий поведение но не хранящий никакого стэйта - это объект или нет?

Yan
17.09.2017
20:47:47
Ясно, ну молодец, прям продемонстрировал аналогичность функции и объекта)

Sergey
17.09.2017
20:47:52
любимый всеми UserManager или еще какая-нибудь подобная хрень

Yan
17.09.2017
20:48:10

Sergey
17.09.2017
20:48:46
а что это тогда?

Yan
17.09.2017
20:49:05
Это сервис, представляющий поведение

Sergey
17.09.2017
20:49:16
почему это не объект?
это поведение "инкапсулированное в классе"

Yan
17.09.2017
20:49:36
Не улавливаешь мысль?

Sergey
17.09.2017
20:49:46
ты на вопрос ответь
если это не объект, что это?

Yan
17.09.2017
20:50:05
Ты же сам ответил, не хранит стейта

Sergey
17.09.2017
20:50:08
не придумывай новых терминов вроде "сервис предоставляющий поведение"