
Sergey
20.12.2017
21:29:35

Maksim
20.12.2017
21:29:56
просто для стартового понимания

Sergey
20.12.2017
21:30:53
язык программирования?

Google

Sergey
20.12.2017
21:31:01
ну и английский или онли рашен?

Maksim
20.12.2017
21:31:30
смотри какую-нить благословенную джаву (гг)
язык если русский есть - великолепно. Если нет - английский тоже сойдёт

Sergey
20.12.2017
21:32:35
https://www.youtube.com/watch?v=-gGLSxmw3jo
тогда держи Немчинского

Maksim
20.12.2017
21:32:56
прекрасно, благодарю

melancholiac
20.12.2017
21:33:53
стойкое убеждение что ооп это просто структура данных + таблица диспетчеризации сообщений это хорошо или плохо?

Sergey
20.12.2017
21:34:13

melancholiac
20.12.2017
21:34:25

Maksim
20.12.2017
21:34:27
стойкое убеждение - всегда плохо

melancholiac
20.12.2017
21:34:30
не, не пишу ооп
просто мб я идею неверно понял

Sergey
20.12.2017
21:34:50

melancholiac
20.12.2017
21:34:56

Google

Maksim
20.12.2017
21:35:20
откуда тогда стойкое убеждение?)


Sergey
20.12.2017
21:36:44
просто мб я идею неверно понял
тут стоит уточнить про какое мы ООП.
1. есть ООП распространенное в массах - это то что началось с языка Simmula и про то что у тебя есть объекты, представленные данными и поведением
2. есть ООП которое придумал Алан Кей и которое хрен его знает что такое. У него "объекты" это не инстансы классов а скорее модули, которые обмениваются сообщениями друг с другом, где структура рантайма децентрализована (нет main рутины), что-то оооочень похожее на actor model (последнее по сути были сформулировано под влиянием smalltalk72 вроде)
то что ты описал - это с точки зрения компилятора в целом корректно. структура данных и табличка диспетчеризации.
тебе как программисту это не особо погоду делает (если только ты не компилятор пишешь)
а вот введение таких штук как "данные и поведение инкапсулированные в одной штуке и штука эта объект" - это уже интереснее. Тут можно и про полиморфизм начать говорить и про information expert и как декомпозицию строить
но в целом этот чат и был создан что бы приблизиться к понимаю "что такое ООП". ХОтя @f3ath мог бы просто Алану написать письмо


da horsie
20.12.2017
21:41:04
этот чат был создан чтобы научить меня в декомпозицию и grasp/solid. А письму Кею кто угодно может написать

Sergey
20.12.2017
21:41:14

Maksim
20.12.2017
21:41:26
ещё бы ответить на вопрос: а кому он нужен, этот идеально выведенный ооп)

da horsie
20.12.2017
21:42:03

melancholiac
20.12.2017
21:42:11

da horsie
20.12.2017
21:43:19

Sergey
20.12.2017
21:43:23
ну и популярная нынче мода на микросервисы - являеся своего рода подтверждением удобства концепции. Но только большинство как не умели в декомпозицию так и не умеют
ну мол ты не можешь сломать всю систему если изменения изолированы в пределах одного модуля и у тебя минимальные связи между модулями)

melancholiac
20.12.2017
21:45:14
декомпозиция это разбиение системы на изолированные сущности (классы)?

da horsie
20.12.2017
21:45:24

Sergey
20.12.2017
21:45:41

da horsie
20.12.2017
21:45:50
классы, функции, сервисы, слои

Sergey
20.12.2017
21:46:04
и повторюсь - Алан кей говорит что "объект это не не совсем инстанс класса"

Google

Sergey
20.12.2017
21:46:09
сча цитату приведу

melancholiac
20.12.2017
21:46:23
последний вопрос
профит ооп для "микромира" это полиморфизм, а для "макромира" это изолированность?

Maksim
20.12.2017
21:46:59
странные вопросы от человека, который ни на чём и ни что не пишет

melancholiac
20.12.2017
21:47:45

Sergey
20.12.2017
21:48:30

da horsie
20.12.2017
21:48:38
т.е. полиморфизм как средстводостижения IoC

Maksim
20.12.2017
21:49:30
почему?
потому, что для изучения вопроса, имхо, нужна хоть какая-то практика. Иначе там триллион слов, которые сливаются в общем потоке.

Sergey
20.12.2017
21:49:56

Bohdan
20.12.2017
21:50:22
читаю вас и слышу, как хрустят шаблоны...

Maksim
20.12.2017
21:50:51


Sergey
20.12.2017
21:51:13
> The basic misunderstanding here is between what I meant as objects and what the term has been turned into. The main one was that the intent was to have the interior of objects be a system of objects. I.e. "objects" and "modules" are the same thing. This harmonizes with the compositional ideas above.
Another misunderstanding was the idea of objects as "data types" or as "operators" (both of which can be done by virtue of an object being semantically a whole computer). But we really thought about objects as "loci of goal satisfactions" and that the best messages would be to request goals and the best objects would be those who can satisfy "large goals".
The universality of objects could be used to make every part, with the aim to get stronger semantically as more comprehensive objects were made. Some of the precursor ideas here were "systems theory" (Bertalanfy, Alexander, etc.), programming as "constraint solving" (Sketchpad), etc.
In practice, we did a lot less during the Parc period because of some of the resource constraints of the 70s. Still, it was clear that composition was almost always better than inheritances, and that recursive systems of name spaces was better than the more "Lisp-like" architecture we used for references, etc.


Bohdan
20.12.2017
21:51:23
либо другая крайность - две недели париться над тем, как сделать "правильно", а потом отгребать за проваленные сроки

da horsie
20.12.2017
21:51:41
но это можно и без ООП делать)
можно, я ж не спорю. это я у дяди Боба подслушал, что основная ценность полиморфизма (в обывательском понимании ООП) заключается в IoC

Bohdan
20.12.2017
21:51:44
я вообще о классической универской формулировке про три кита ООП

Sergey
20.12.2017
21:51:55

melancholiac
20.12.2017
21:52:27
приведу пример как я это понимаю
в микромире ооп например позволяет реализовывать иерархию числовых типов данных, когда и комплексные и вещественные и целые поддерживают операцию с одним названием и смыслом (суммирование, умножение)
а в макромире можно разбить очень большую и комплексную систему с большим количесвтом связей на сообщающиеся кластера (модули)

Bohdan
20.12.2017
21:52:44

Maksim
20.12.2017
21:52:45

Google

Sergey
20.12.2017
21:52:59


da horsie
20.12.2017
21:54:54

Bohdan
20.12.2017
21:55:08

Maksim
20.12.2017
21:55:09
ну вопрос в кол-ве книжек) маст хэв набор за спиной есть. А всякую наркомань, которая выписывает идеальный мир - не доводилось :)

Sergey
20.12.2017
21:55:28

melancholiac
20.12.2017
21:55:31

Maksim
20.12.2017
21:56:11

Bohdan
20.12.2017
21:56:29

Maksim
20.12.2017
21:58:12
это рекурсивный намек)
да тут частенько Сергей чё-нить задвинет и ощущаешь себя полным кретином) явно где-то что-то ещё не дочитал)

Bohdan
20.12.2017
21:58:37
радоваться надо наоборот - есть, что еще дочитать, и для определения этого не нужно лезть в дебри)

Maksim
20.12.2017
21:58:57
радуемся потихоньку)
и продолжаем говнокодить)

Bohdan
20.12.2017
21:59:37
ну ведь уже понимаем, что говнокодим - так и до рефакторинга недалеко

Maksim
20.12.2017
22:00:00
рефакторинг - процесс перманентный)


Sergey
20.12.2017
22:02:26
не понял тебя. я (но это не точно) не столько о противоречиях сколько о том как одни и те же принципы бывают полезны на разных уровнях
1. всегда стоит разделять статический мир (компайл тайм, исходники, код) и рантайм. Можно на тему семантического разрыва почитать. И смысл в том что бы снизить различия того как код читается и как он выполняется.
2. по поводу иерархии типов - это вопрос абстракции данных. Это тема не привязана к ООП опять же и больше про предсказуемость и поведение, про контракты. Это в целом работает на любом уровне, то есть нет разделения на микро и макро. Просто на каком-то уровне ты можешь забить, ибо "достаточно маленькая штука, а что внутри никого не парит".
3. зависимости.... вот тут то о чем @f3ath говорит - инверсия зависимостей, когда у тебя направление зависимостей в коде отличается от реальных зависимостей в рантайме. Или late binding. Вот эта штука позволяет очень интересные вещи.
4. в любом случае весь вопрос в том что бы проще было вносить изменения. Изменения проще вносить когда эффект изменений не распространяется далеко. А это можно сделать только уменьшая количество зависимостей и контролируя их, а так же изолируя работу с данными.
Просто представь себе систему как сеть маленький компьютеров, каждый из которых хранит какие-то данные (и доступа к ним напрямую нет), и которые что-то с этими данными делают. Ты можешь по сети отправлять сообщения мол "надо что-то пересчитать" и нужный компьютер тебе это сделает. Если тебе надо "заменить" компьтер с бухгалтерским учетом - ты просто выкидываешь старый и заменяешь на новый. Системе в целом пофигу, до тех пор пока не меняется поведение этого комьютера (протокол если хочешь) с точки зрения других.
давай разделять эти понятия

Google

Maksim
20.12.2017
22:03:06

Bohdan
20.12.2017
22:03:13


melancholiac
20.12.2017
22:04:03
1. всегда стоит разделять статический мир (компайл тайм, исходники, код) и рантайм. Можно на тему семантического разрыва почитать. И смысл в том что бы снизить различия того как код читается и как он выполняется.
2. по поводу иерархии типов - это вопрос абстракции данных. Это тема не привязана к ООП опять же и больше про предсказуемость и поведение, про контракты. Это в целом работает на любом уровне, то есть нет разделения на микро и макро. Просто на каком-то уровне ты можешь забить, ибо "достаточно маленькая штука, а что внутри никого не парит".
3. зависимости.... вот тут то о чем @f3ath говорит - инверсия зависимостей, когда у тебя направление зависимостей в коде отличается от реальных зависимостей в рантайме. Или late binding. Вот эта штука позволяет очень интересные вещи.
4. в любом случае весь вопрос в том что бы проще было вносить изменения. Изменения проще вносить когда эффект изменений не распространяется далеко. А это можно сделать только уменьшая количество зависимостей и контролируя их, а так же изолируя работу с данными.
Просто представь себе систему как сеть маленький компьютеров, каждый из которых хранит какие-то данные (и доступа к ним напрямую нет), и которые что-то с этими данными делают. Ты можешь по сети отправлять сообщения мол "надо что-то пересчитать" и нужный компьютер тебе это сделает. Если тебе надо "заменить" компьтер с бухгалтерским учетом - ты просто выкидываешь старый и заменяешь на новый. Системе в целом пофигу, до тех пор пока не меняется поведение этого комьютера (протокол если хочешь) с точки зрения других.
о, спасибо за ответ
и всему чати тоже


da horsie
20.12.2017
22:05:14
полезный чат получился, ага

Maksim
20.12.2017
22:05:46
тут много раз уже проскакивала идея запиннить список макулатуры

Bohdan
20.12.2017
22:06:02

da horsie
20.12.2017
22:06:10

Bohdan
20.12.2017
22:06:10
гит для кого сделан?)
я много раз спрашивал, теперь запомнил)

Maksim
20.12.2017
22:06:29
оу... а как я профакапил его, спасибо

Bohdan
20.12.2017
22:06:39
структурировать бы его получше, но на это надо время

da horsie
20.12.2017
22:06:56
дык открывайте пулреквесты

Sergey
20.12.2017
22:07:43

da horsie
20.12.2017
22:07:54
проблема со списком в том, что начинаешь читать что-то одно и можно увязнуть на год

Maksim
20.12.2017
22:08:40

da horsie
20.12.2017
22:08:41
одних только c2 и фаулера хватит чтоб на пару месяцев упороться чтением

Артур Евгеньевич
20.12.2017
22:08:55
Давайте устроим флешмоб, завтра каждый по пулреквесту(А коняш разгребать всё будет))

Sergey
20.12.2017
22:09:08
вот на днях посмотрел докладик Уди (любимый персонаж @zloyuser ) - и как-то все вроде то же что и раньше но совсем по другому и от тогоа немного теперь сложнее...

Bohdan
20.12.2017
22:09:11

Sergey
20.12.2017
22:09:25

Bohdan
20.12.2017
22:09:28