@oop_ru

Страница 622 из 785
code4aman
26.04.2018
05:51:10
вывод - термин бесполезен так как изначальный смысл утерян безвозвратно. Отсуда можно продолжить мысль - нет смысла форсить ООП потому что каждый под этими буквами понимает что угодно.
Ещё есть мнение, что ООП придумал Страуструп, а Кей вообще мимо проходил, мол он, дурачок, свой message passing за ООП принял, а теперь пытается узурпировать этот термин, тогда как Бьерн не подвел богов и явил плюсы! От взрослого и опытного человека это слышал ?

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

Google
Sergey
26.04.2018
05:53:20
трушный компилятор который компилить C++ напрямую без трансляции в промежуточные языки написали сильно позже

(чел который потом сделал Dlang)

Ещё есть мнение, что ООП придумал Страуструп, а Кей вообще мимо проходил, мол он, дурачок, свой message passing за ООП принял, а теперь пытается узурпировать этот термин, тогда как Бьерн не подвел богов и явил плюсы! От взрослого и опытного человека это слышал ?
ну и по таймингу не сходится. Термин ООП Кей типа придумал в 69-ом вроде, а Страуступ свое творение начал делать только в 79-ом. Да и в целом Страуступу было на момент возникновения ООП и языков типа smalltalk всего 19-20 лет. Так что не сходится чето

а то что 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
? Я озвучил не свое личное мнение. Просто там выше ругали ооп за то, что к нему отношения не имеет, а тут обратный случай, любить ооп за то, что ооп не является.

И да, полный игнор истории

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

ну или он на пару с Тругве не умели в короткие имена

code4aman
26.04.2018
06:06:23
где тут?
В моём первом сообщении)

Sergey
26.04.2018
06:08:16
? Я озвучил не свое личное мнение. Просто там выше ругали ооп за то, что к нему отношения не имеет, а тут обратный случай, любить ооп за то, что ооп не является.
я думаю что проще будет избрать определение Мэйерса в плане того что такое ООП. А в этом ключе ООП это лишь императивная херня, вариант структурного программирования, ничего нового и ничем не отличается от того что было до ООП. Simula первый ОО язык и хуй с ним как говорится. С этой точки зрения ругань на ООП оправдана. Потому в целом подтверждая что ООП это то что мутил страуступ ты только подтверждаешь слова тех кто ООП ругает)

и смотреть в поисках вдохновения в этом случае надо на языки типа 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
ну если есть понимание что трейты это тупо ctrl +c/v то стоит)
Не тупо) принцип DRY и SR сохранен, в отличии копипасты

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

Не тупо) принцип DRY и SR сохранен, в отличии копипасты
не сохранен, так как это все еще копипаста. Тот факт что ты кусок кода в другой файл вынес никак не меняет связанности и т.д. Наоборот, у тебя ситуация становится еще сложнее в силу того что проблема не видна но она есть.

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

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

Dmitriy
26.04.2018
07:13:44
а SR там каким боком?
Ну да) тупанул

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

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

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

Sergey
26.04.2018
07:15:27
нет ни одного класса больше в 100 строк - так это можно сделать и без трейтов)
именно, но если ты пишешь фреймворк - маловероятно. Либо будет слишком много абстракций.

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
php обречен
у теб там мазолей нет ещё?)

эм, не совсем) да и в целом лучше в чатик по пыху свалить)

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
всем спасибо за ваше мнение, пойду переписывать проект на джаву, ну нафиг этот пхп)

Sergey
26.04.2018
07:44:46
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
Через аннотации? Даже для рантайм штук?
нафиг тебе это в рантайме? php единственный язык который такой херней страдает

и именно по этой причине у нас до сих пор нет тайпхинтов для пропертей или дженериков - огромный оверхэд на рантайм чеки

хотя по хорошему типы тебе нужны только в компайл тайме, рантайм сам разберется)

ну и имея информацию о типах в компайлтайме ты можешь хоть прокси на все сгенерить и декораторы которые будут верифаить типы в рантайме

просто это можно на юзерленд перевесить и упростить виртуальную машину

Odaxelangia
26.04.2018
09:10:01
Окно?

Уххх....

Ждём пингвина

Aleh
26.04.2018
09:20:21
сигнатура конструктора ребенка часто тупо отличается от сигнатуры родителя
потому что интерфейс создания объекта не является частью интерфейса объекта?

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

Страница 622 из 785