Шаблоны разработки. Вводная лекция

  Рет қаралды 79,452

Sergey Nemchinskiy

Sergey Nemchinskiy

Күн бұрын

Пікірлер: 51
@АлексейИванов-ч3ы6к
@АлексейИванов-ч3ы6к 2 жыл бұрын
Единственный нормальный объяснятель паттернов на ютубе!
@mr_DorianGray
@mr_DorianGray 10 жыл бұрын
Понравилось, с юмором ) Был опыт просмотра видео профессиональных программистов ..бу-бу-бу ... бу-бу-бу ... через 10 минут начинаю засыпать. Чтобы преподавать - тоже нужен талант )
@hameltomor
@hameltomor 10 жыл бұрын
***** Где Вы преподаете? Я хочу на ваши лекции!! )) Случайно не Одесса?))
@global_silence2623
@global_silence2623 6 жыл бұрын
Очень много нового на канале вашем узнаю, спасибо) Вообще я думал, что настоящие тру программисты должны знать все паттерны. Всегда думал, как их все запихать в голову. А оказывается не обязательно их все знать.
@insbhor
@insbhor 4 жыл бұрын
Хорошо объясняете, фундаментально
@Alex11Fox
@Alex11Fox 5 жыл бұрын
Блин, да тут просто клондайк знаний про Джаву!! Всё есть, от начала Java Core до проектировании. И не надо на курсы там идти, всё тут есть))
@alexander_brun
@alexander_brun 3 жыл бұрын
true programmer hairstyle
@sergeyshestakov4936
@sergeyshestakov4936 Жыл бұрын
Спасибо
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Спасибо!
@dmytrodemydenko
@dmytrodemydenko 6 жыл бұрын
очень толково
@hello_world_zz
@hello_world_zz 6 жыл бұрын
Спасибо, классно!
@Gusto20000
@Gusto20000 3 жыл бұрын
На PHP самый понятный пример синглтонов - никакой магии, как написано так и работает, вообще песня!
@tr233
@tr233 6 жыл бұрын
Java Design Patterns A Tutorial всем рекомендую эту книжку прочитать
@xfgweb
@xfgweb 7 жыл бұрын
Сергей можете рассказать о cqrs + event sourcing ? И что делать с логом событий если перепроектировали агрегат.
@DomiNoR777
@DomiNoR777 5 жыл бұрын
на сколько информация актуальна в 2019? Наткнулся на канал, а тут кладезь информации, но как понял уже не первой свежести( Что делать? Уделять силы и время на просмотры или лучше поискать что-то новое?
@MichioSempai
@MichioSempai 5 жыл бұрын
Это общие практики они актуальны и по сей день. К тому же если вы пойдете на уже существующей проект то он будет написан либо по этим паттернам либо как бог на душу положет.
@AnaRxistBoD
@AnaRxistBoD 5 жыл бұрын
Как человек, который недавно проходил собеседование на джуна, скажу, что одним из ключевых вопросов были шаблоны проектирования и необходимость использования синглтонов в конкретном живом коде приложения. Так что актуальность присутствует.
@wanes101
@wanes101 10 жыл бұрын
Я подумал, а если даже и знать больше паттернов чем 9 и использовать несколько их в проекте и при этом просто все документировать, то я думаю, что вполне можно будет определить это решение так или не так сделано, этот коммент к 42-43 минуте. Т.е. просто структурировать как математику или химию
@aleksandrsavvopulo5473
@aleksandrsavvopulo5473 7 жыл бұрын
Меня удивило описание синглтона, когда говорите, что это паттерн для ограничения количества экземпляров, и приводите в пример пул соединений. Википедия говорит, что все таки именно один экземпляр должен быть. "In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object. ".
@homo-ergaster
@homo-ergaster 6 жыл бұрын
Ну какая разница один или пять. Сколько хочешь - столько ограничиваешь не меняя архитектуру. Обычно, действительно, один. А в википедии столько херни написано, что даже страшно представить.
@0imax
@0imax 3 жыл бұрын
@@homo-ergaster Большая разница. Реализация синглтона с единственным экземпляром имеет минимальное отношение к ООП, так как контроль "единственности" базируется на особенностях конкретного языка. Сделать то же самое для 2+ экземпляров таким же методом не получится.
@homo-ergaster
@homo-ergaster 3 жыл бұрын
@@0imax Он базируется на особенностях языка только если в язык (или фреймворк) встроена поддержка синглтона. Если она не встроена, реализация везде одинаковая: приватный конструктор, статический метод getInstance и статическая переменная хранящая либо единственный экземпляр синглтона, либо коллекцию/массив с несколькими экземплярами.
@0imax
@0imax 3 жыл бұрын
​@@homo-ergaster Реализация в принципе везде одинаковая: приватный конструктор, приватное поле и getInstance. Проблема в "если". Паттерн, несмотря на свою ООП-шность, на деле оказывается достаточно низкоуровневым. Практика показывает, что этот шаблон сильно зависит от языка и без хитростей не везде адекватно реализуется, либо решение для единственного объекта не подходит для решения со списком объектов, т.к. для такого варианта нет поддержки со стороны языка, а без неё получается либо коряво, либо ненадёжно. Это, кстати, отличает синглтон от других шаблонов, которые не особенно привязаны к языку и реализуются в целом без костылей.
@homo-ergaster
@homo-ergaster 3 жыл бұрын
@@0imax Вот честно, на Java, С# и PHP какой-то существенной разницы в реализации не узрел. В каком языке будут проблемы со стандартной реализацией честно говоря не знаю.
@dzen1234
@dzen1234 7 жыл бұрын
В DLLке в init() вызываешь getInstance. В Exeшке - делаешь класс для инициализации, и от него статический объект.Статики создаются перед main(). Вот и все проблемы с параллельным доступом к первому созданию синглтона в C++.
@0imax
@0imax 6 жыл бұрын
А без длл-ки никак? И что делать, если объектов не 1, а n? Когда объект один, я просто делаю его руками в самом начале мейна и не заморачиваюсь))
@kaynsolo
@kaynsolo 6 жыл бұрын
Like!
@gen7891
@gen7891 7 жыл бұрын
Блин, почитай про синглтон мейрса на плюсах. Там тоже по принципу явы.
@0imax
@0imax 3 жыл бұрын
Он давно отошёл от плюсов, чтобы читать по ним что-то :) А учитывая, что лекция очень старая, неудивительно, что про синглтон Мейерса никто не знает.
@MiHunter88
@MiHunter88 8 жыл бұрын
А про SOLID хотя бы упоминание в курсе есть? Если нет, то почему?
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Жыл бұрын
упоминание точно есть на последних минутах в "Шаблоны разработки. ООП и основы UML"
@voxdevis9080
@voxdevis9080 5 ай бұрын
а сам плейлист я чего-то не нашел
@syracuse4612
@syracuse4612 Жыл бұрын
php 8😎😎😎
@cheekibreeki9315
@cheekibreeki9315 4 жыл бұрын
32:32
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 9 жыл бұрын
Интересно. Правда когда я начинал программировать, паттернов еще не было. Мне кажется паттерны это следствие другого принципа. По статистике, любая исполняемая программа 70% времени выполнения ( и более) тратит на перемещение данных и менее 30% на вычисление. Отсюда следует полный запрет на дублирование обрабатываемой информации (а за конструкторы копирования вообще надо руки и ноги отрывать имхо). Насколько я помню, вывод лога в один файл из разных потоков приводит к искусственной синхронизации и блокировке выполнения. Как вариант, порождающий поток должен создавать лог-объект для каждого потока со своим лог-файлом а каждую запись дополнять системным временем чтобы потом обеспечить возможность определения очередности. В противном случае, можно при изменении уровня отладки получить крах системы из за исчезновения лог-синхронизации в методах. Хотя в Java и так полно скрытых блокировок, которые приводят к низкой производительности на многоядерных системах.
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 9 жыл бұрын
***** Преждевременной оптимизации при отсутствии дублирования данных не бывает, по определению - это и есть максимальная оптимизация. Про красоту решений - у вас колени в ногах гнутся только в одну сторону или назад тоже? А ведь если бы они гнулись во все стороны то гибкость была намного больше. Также и в программировании - гибкость нужна только там, где она необходима (чтобы не дублировать данные и алгоритмы которые тоже информация). Лишняя гибкость = уродство и отсеивается эволюцией имхо.
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 9 жыл бұрын
***** Послушаю обязательно, спасибо. Просто у вас есть фраза, что программист определяет сам какой паттерн применить. Мне же кажется, что применить можно только тот, который соответствует входным данным. Если не знаешь, какой паттерн применить - пытай постановщика задачи, он дал слишком мало входной информации.
@ВикторГиль-ф2ф
@ВикторГиль-ф2ф 9 жыл бұрын
***** Входная информация является определяющей в программировании. ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C Классы, шаблоны хороши только для человека. Они существуют только в вашем воображении т.к. после компилятора, для компьютера выполняющего вашу программу, классов не существует . Своего рода попытка заставить плохих программистов писать оптимальный код (довольно плохая). Раньше проекты (процедурное программирование) всегда давали какой-то результат. Сейчас, благодаря классам и шаблонам ( и паттернам) проекты умирают на стадии разработки. Возьмите операционные системы ( достаточно сложные программы). Нет ни одной операционной системы, написанной с помощью ООП. Как вы думаете почему?
@MrBilbotronic
@MrBilbotronic 9 жыл бұрын
Извини конечно, но ты ничерта не понимаешь в паттернах, да и судя по твоим размышлениям - в прогаммировании тоже.
@MrBilbotronic
@MrBilbotronic 9 жыл бұрын
+Виктор Гиль это старый подход, до появления ООП, и это относится к функцинальному программированию. Виктор вы отстали в технологиях.
@thegod3500
@thegod3500 8 жыл бұрын
Эта проблема фигня. Есть не одно решение для с++11 и выше
@thegod3500
@thegod3500 8 жыл бұрын
stackoverflow.com/questions/8102125/is-local-static-variable-initialization-thread-safe-in-c11
@thegod3500
@thegod3500 8 жыл бұрын
en.cppreference.com/w/cpp/thread/call_once
@0imax
@0imax 6 жыл бұрын
А если объектов надо не 1, а некоторое заранее неизвестное количество, и инициализировать их надо не заранее, а по мере необходимости?
@dzen1234
@dzen1234 7 жыл бұрын
Хидер -> Хэдер.
@vadimtopunov15
@vadimtopunov15 3 жыл бұрын
дурацкая привычка смеяться в тему и без темы
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil 2 жыл бұрын
Попробуйте прочитать такого качества лекции публично и мы посмотрим что у вас там будет в тему и не в тему
Надо ли учить шаблоны проектирования
11:48
EngineerSpock - IT & программирование
Рет қаралды 9 М.
Война Семей - ВСЕ СЕРИИ, 1 сезон (серии 1-20)
7:40:31
Семейные Сериалы
Рет қаралды 1,6 МЛН
Маусымашар-2023 / Гала-концерт / АТУ қоштасу
1:27:35
Jaidarman OFFICIAL / JCI
Рет қаралды 390 М.
JISOO - ‘꽃(FLOWER)’ M/V
3:05
BLACKPINK
Рет қаралды 137 МЛН
Шаблоны разработки ПО. Шаблоны GRASP
1:05:12
Sergey Nemchinskiy
Рет қаралды 31 М.
Ошибки начинающих программистов
14:41
Oldest Junior
Рет қаралды 63 М.
Евгений Борисов - Power of Gradle
1:19:56
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 93 М.
Шаблоны разработки ПО. Вводная лекция
1:09:44
Sergey Nemchinskiy
Рет қаралды 18 М.
Управление Миром Лекции ФСБ ( Ефимов )
2:01:38
Valery Kudryavtsev (1337 Sp34kage)
Рет қаралды 10 МЛН
Шаблоны разработки. ООП и основы UML
59:13
Sergey Nemchinskiy
Рет қаралды 78 М.
Можно ли стать программистом в 40+ лет?
14:45
Sergey Nemchinskiy
Рет қаралды 398 М.
Война Семей - ВСЕ СЕРИИ, 1 сезон (серии 1-20)
7:40:31
Семейные Сериалы
Рет қаралды 1,6 МЛН