
code4aman
26.04.2018
05:51:10

Sergey
26.04.2018
05:52:29
термин ООП придумал Кей, а термин "объекты" был до, задолго до

Bohdan
26.04.2018
05:53:06

Google

Sergey
26.04.2018
05:53:20
трушный компилятор который компилить C++ напрямую без трансляции в промежуточные языки написали сильно позже
(чел который потом сделал Dlang)
а то что smalltalk многое взял от simula по началу - это факт. Я там выше видео выкладывал - там раскрывается вопрос что как вышло и т.д. и какие языки повлияли на smalltalk. тут правда еще нюанс что есть смолтаки первые которые клевые и которые привели к actor model и есть последние (которые smalltalk 80 и который начал век стогнации ООП)
> It was probably in 1967 when someone asked me what I was doing, and I said: "It's object-oriented programming".
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
ну и опять же - то что Кей подразумевал под ООП становится чуть логичнее с учетом того что у него на тот момент была степень по малекулярной биологии и он воспринимал объекты как клетки или как компьютеры в сети (он тусил рядом с ARPAnet что сильно повлияло)


code4aman
26.04.2018
06:04:02
? Я озвучил не свое личное мнение.
Просто там выше ругали ооп за то, что к нему отношения не имеет, а тут обратный случай, любить ооп за то, что ооп не является.
И да, полный игнор истории

Sergey
26.04.2018
06:04:35
мы если что весь этот чат создали что бы разобраться в истории вопроса))

Google

Sergey
26.04.2018
06:05:26
если тебе интересно к какому мнению мы пришли - Алан понятия не имел что такое ООП когда ввел название а понимание к нему пришло когда уже было поздно)
ну или он на пару с Тругве не умели в короткие имена

code4aman
26.04.2018
06:06:23

Sergey
26.04.2018
06:08:16
и смотреть в поисках вдохновения в этом случае надо на языки типа prolog, planner, ometa и всякие хаскели

Миша
26.04.2018
07:03:03
Хотел спросить по поводу трейтов в пхп. Стоит ли их использовать? Мне кажется юзать их опасная практика.

Denis
26.04.2018
07:09:27
ну если есть понимание что трейты это тупо ctrl +c/v то стоит)

Maksim
26.04.2018
07:11:09
нету в них ничего опасного. Ровно как и полезного по большей части

Dmitriy
26.04.2018
07:11:21


Sergey
26.04.2018
07:11:41
Хотел спросить по поводу трейтов в пхп. Стоит ли их использовать? Мне кажется юзать их опасная практика.
не стоит их использовать. Во всяком случае в новых проектах. Трейты вполне себе могут быть неплохим инструментом для рефакторинга как временная мера но не более того. Ключевое слово - временная мера.
еще один пример разумного использования трейтов - дефолтная реализация интерфейсов. Пример - EntityManagerInterface из доктрины. Если ты хочешь предоставить возможность разработчику удобно делать декораторы - трейт который делает проброс всех вызовов этого интерфейса в некий wrappedInstance это более чем нормально.
Не тупо) принцип DRY и SR сохранен, в отличии копипасты
не сохранен, так как это все еще копипаста. Тот факт что ты кусок кода в другой файл вынес никак не меняет связанности и т.д. Наоборот, у тебя ситуация становится еще сложнее в силу того что проблема не видна но она есть.

Dmitry
26.04.2018
07:12:56

Sergey
26.04.2018
07:13:05
вот если бы "трейты" были не как в php а как в Scala или там категории из objective-c или еще чего - то это были бы уже больше миксины и тут можно было бы по другому говорить.

Dmitry
26.04.2018
07:13:26

Maksim
26.04.2018
07:13:32
Вопрос подхода в общем) если у тебя какой-нить безобидный aware trait - пол беды) а если ты, как в ларавеле, обмазался в трейты с логикой, то упс) формально, конечные классы станут чище в плане кол-ва буковок, но какой в этом смысл...)

Dmitriy
26.04.2018
07:13:44

Sergey
26.04.2018
07:14:18
и пофигу что это все просто манипуляции с цифрами

Maksim
26.04.2018
07:14:42

Sergey
26.04.2018
07:14:53

Google

Dmitriy
26.04.2018
07:15:02
нет ни одного класса больше в 100 строк - так это можно сделать и без трейтов)

Maksim
26.04.2018
07:15:06
и на парфюме можно сэкономить, ага)

Sergey
26.04.2018
07:15:27

Maksim
26.04.2018
07:15:41

Dmitriy
26.04.2018
07:15:48
ахаха)

Maksim
26.04.2018
07:15:51
а в классах да, чистота и благодать)

Sergey
26.04.2018
07:16:29
ну или там другой хороший пример разделения - паршиал классы но без package-level области видимости ничего хорошего от этого ты не получишь
php обречен

Maksim
26.04.2018
07:16:53
эм, не совсем) да и в целом лучше в чатик по пыху свалить)

Dmitriy
26.04.2018
07:18:36
ой, перепутал) одни и те же лица)

Maksim
26.04.2018
07:18:50
тут не любят признаваться в том, что пишут на пхп)

Denis
26.04.2018
07:19:46
клуб анонимных пхпшников

Bohdan
26.04.2018
07:19:58

Миша
26.04.2018
07:42:36
всем спасибо за ваше мнение, пойду переписывать проект на джаву, ну нафиг этот пхп)

Like
26.04.2018
07:42:45

Sergey
26.04.2018
07:44:46

Like
26.04.2018
07:44:54

Vitaly
26.04.2018
07:45:31
А трейты, которые не завязаны на реализации класса, к которому подрубаются - тоже плохо?

Denis
26.04.2018
07:45:34

Google

Like
26.04.2018
07:45:47

Sergey
26.04.2018
07:53:56

Vitaly
26.04.2018
07:57:07

Bohdan
26.04.2018
07:58:42
ну в руби все интереснее, насколько помню

Миша
26.04.2018
07:58:55

Sergey
26.04.2018
07:59:07
основное различие - в какой момент происходит подмешивание кода, ну то есть по сути в руби подмешивается именно поведение а не код
и это важное различие которое сильно все меняет

Vitaly
26.04.2018
08:01:35
Ну в руби вообще они там в рантайме все подмешивают и классы собирают, интерфейсов нет, вообще не могу понять, как у них получается какую-то архитектуру строить)

Sergey
26.04.2018
08:02:39
есть мнение что если ты выстраиваешь архитектуру по тем же принципам, по кторым это будет в рантайме работать, когнетивная нагрузка требуется существенно меньше так как уменьшается этот семантический разрыв между "что у меня написано" и "че там в рантайме будет"
хотя в неумелых руках думаю можно знатно себе ногу отстрелить

Bohdan
26.04.2018
08:04:20
ребяты, дайте пример

Vitaly
26.04.2018
08:04:33
ну ребята иногда жалуются, что охреневаешь с того, откуда там какое-то поведение появилось и пока разбираешься, приходится через миллионы декораторов проходить

Bohdan
26.04.2018
08:04:41
любую тупую разницу между "архитектура по рантайму" и "архитектура по компайл тайму"

Vitaly
26.04.2018
08:04:44
И ide ничего не подсвечивает(
я бы кстати тоже хотел немного поразвернутее мысль, если можно, почему в рубях в рантайме - ок, а в пыхе - нет

Sergey
26.04.2018
08:11:49
в пыхе это просто копипаста, вледальцы кода не трейты а те кто их юзают
в рубях владельцы являются именно сами модули
и клиентский код может назначить какое-то поведение какому-то объекту, то поведение которое ему необходимо
добавить сверху аннотации для типов и уже не так стремно

Google

Sergey
26.04.2018
08:13:39
а без них да, остается только уповать что "мы все взрослые люди")

Bohdan
26.04.2018
08:14:53
а, вродь дошло
прям на ходу навесить трейт/миксин на полученный объект?
и все приколы с динамикой отсюда же?

Sergey
26.04.2018
08:15:08
да, тип того. open/close типа

Bohdan
26.04.2018
08:15:23
миленько и непредсказуемо, пожалуй
хотя на то это и динамика

Sergey
26.04.2018
08:15:59
повторюсь - у тебя есть возможность типами все покрыть в руби.... но я пока не видел этого в реальных проектах.... надо заехать к знакомым рубистом на пиво

Vitaly
26.04.2018
08:16:40
Но вообще теперь вроде понял, чем у рубистов отличается, спасибо

Sergey
26.04.2018
08:19:03
и именно по этой причине у нас до сих пор нет тайпхинтов для пропертей или дженериков - огромный оверхэд на рантайм чеки
хотя по хорошему типы тебе нужны только в компайл тайме, рантайм сам разберется)
ну и имея информацию о типах в компайлтайме ты можешь хоть прокси на все сгенерить и декораторы которые будут верифаить типы в рантайме
просто это можно на юзерленд перевесить и упростить виртуальную машину

Odaxelangia
26.04.2018
09:10:01
Окно?
Уххх....
Ждём пингвина

Aleh
26.04.2018
09:20:21

Миша
26.04.2018
09:20:34
А как нормально реализовать биндинги интерфейсов? Любая моя реализация нарушает солид. В том плане что мне надо "на лету" менять реализации.