Size: a a a

Yandex Team Leader meetup

2020 June 28

СА

Сергей Аксёнов... in Yandex Team Leader meetup
Bulat Ziganshin
т.е. проблема отсутствия фундаментального образования, благо что software engineering даже в вузах мало кто учит
Проблема в том, что все хотят быть Гуглом, Амазоном или Фейсбуком, будучи на самом деле в лучшем случае 1/50 Озона.
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
по моему, наоборот, дело в том что для вхождения в айти не надо иметь фундаментальных знаний, так что таких людей много
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
а потом они дорастают до сеньорских позиций и начинают изобретать собственный велосипед
источник

AY

Anatoly Yumashev in Yandex Team Leader meetup
Сергей Аксёнов
Мы в iFunny уже много лет практикуем DDD и чистую архитектуру, при этом мы highload - 2 миллиона DAU, 20k RPS в пике только в PHP-монолит, 500к строк кода, фейспалмим каждый раз, когда кто-то начинает рассказывать, как они пилят на миклоселвисы свой огромный монолит в 50к строк.

https://www.youtube.com/watch?v=9xoP9GCUoDU - вот наш доклад о том, как мы это сделали сами и рекомендуем всем желающим.
ага. похоже на правду.

но все же доклад от айспринга мне понравился больше.

за счет того что там идет акцент на событийке. о том что домены (модули, компоненты) общаются друг с другом посредством событий.

а в данном докладе видно что сделали упор на DDD, а EDA куда то спрятали.

опять же говоря про мой опыт и мысли Алана Кея - ключевая идея расширяемых систем это не думать о том как устроены модули, а думать о том как модули будут взаимодействовать друг с другом. Конкретно речь про обмен сообщениями. Это самое важное в таких делах.

и вот мне это откликается. исходя из моей практики. и по этому понравился доклад айсприг где как раз сделан акцент не только на DDD но и на EDA.
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
когда мне стало не хватать гибкости в связи между частями программы, я вспомнил как это удобно делается в луа, и запилил микробиблиотечку, которая возволяет передать при вызове произвольный набор параметров - всё парсится в рантайме. и собственно получил на этой конкретной границе между модулями преимущества дин. языков, о которых говорит Анатолий
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
и заметьте, это ещё в 80-х было сделано в ObjC, почему он и стал якорным языком для NextSTEP
источник

AY

Anatoly Yumashev in Yandex Team Leader meetup
Bulat Ziganshin
и заметьте, это ещё в 80-х было сделано в ObjC, почему он и стал якорным языком для NextSTEP
ага, я тоже копал в эту сторону.

в 80е годы идеология ООП разбилась на 2 лагеря: те кто говорили что ООП это модули и сообщения и те кто говорили что ООП это классы, их иерархия и экземпляры классов.

далее C разбился на 2 ветки: C++ пошел по пути классов, а ObjC пошел по пути сообщений.

далее майкрософту было выгодно чтобы именно его решения выбирали программисты, они купили образование и заставили всех программистов думать что ООП это про классы.

до сих пор Алан Кей и Дэвид Уэст говорят о том что это ошибка. Что классы, Си++ и Ява ничего общего с ООП не имеют в базе. Но комплекс Утенка имеет огромную силу и поменять мышление программистов почти не реально )
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
и эту идею можно дальше расширять - например вместо фиксированного связывания сделать шину событий. основная часть посылает сообщение "Спросить подтверждение у пользователя", а GUI-часть вешается на его обработку. я подозреваю, что Dependency Inversion подобное делает, но я его так и не изучил :)
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
только не надо эти детские бредни про 80-е. я там был, и C++ был более востребован из-за отсутствия накладных расходов на дин. сообщения
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
zortech c++ - 88-й, turbo c++ - 90-й, ms c++ - 92-й
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
нам реально нужен был С++ чтобы не тратить время на посылку сообщений при каждом вызове метода
источник

AY

Anatoly Yumashev in Yandex Team Leader meetup
Bulat Ziganshin
только не надо эти детские бредни про 80-е. я там был, и C++ был более востребован из-за отсутствия накладных расходов на дин. сообщения
тут лишь речь о том что ООП имеет не единственную версию реализации.

я вообще за классы. все норм. и Си++ ок и все хорошо.

беда лишь в том что это однобокое толкование ООП.

а вторая идеология выпала из повестки дня. но именно она является ключем к построению HighExtensible систем
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
вообще, стат. классы были как раз с 67-го, были в Эйфеле 80-х, а смолток - это такой экспериментальный язык
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
она не выпала, компонентное программирование всегда было таким розовым пони - о нём много говорили, но без него можно было обойтись и обходились
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
были всякие кобры, эрланги, компонентные паскали
источник

AY

Anatoly Yumashev in Yandex Team Leader meetup
Bulat Ziganshin
она не выпала, компонентное программирование всегда было таким розовым пони - о нём много говорили, но без него можно было обойтись и обходились
можно и нужно обходиться без него, если на то нет причин.

например в микросервисах это не нужно. в малых командах это не нужно.

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

AY

Anatoly Yumashev in Yandex Team Leader meetup
Вообще если почитать Алана Кея, то он говорил что ООП нужно для больших и расширяемых систем. Он тогда решал задачи для команд из сотен и тысяч программистов.

Он ничего не говорил про микросервисы или маленькие команды )
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
во всяком случае, никто не стал бы менять язык только ради этого, а из существующих он был только в ObjC. ну и дальше враиации - дин.языки имеют это автоматом, в шарпе есть делегаты, есть некий DI, который тоже каись в этой плоскости
источник

AY

Anatoly Yumashev in Yandex Team Leader meetup
Классы же отлично ложатся на маленькие команды и начинающих программистов.

Возможно это одна из причин почему они в итоге вышли в лидеры как понимание ООП.
источник

BZ

Bulat Ziganshin in Yandex Team Leader meetup
затем в ста. языках появились типы Anything, так что теперь message bus или просто message passing можно сделать кажись во всех - плюсы, шарп и ява
источник