Wild Russian GameDev Mentor
98 subscribers
116 photos
5 videos
60 links
Обучаю созданию игр на Unity и программированию на C#.

Запись на занятия – сообщения канала
Лайвкодинг/игры – twitch.tv/ko1ba5er
Бустануть канал – t.me/boost/WRGDM

Please, be patient, я не умею пользоваться отложкой.
Download Telegram
10 стамбульских кошечек для вас😻😽
🥰7🤔11
This media is not supported in your browser
VIEW IN TELEGRAM
🤣3
КАК ПРАВИЛЬНО шКОДИТЬ, ЧТОБЫ ПРЕДКИ УЛЫБАЛИСЬ ТЕБЕ

Вот ты выучил язык программирования👅, начинаешь вливаться в комьюнити, а все вокруг только и говорят про какие-то паттерны и принципы программирования🧐. Давайте разбираться.

📯Паттерны

Шаблон проектирования – повторяемая архитектурная конструкция для решения типовой проблемы.

Например, часто возникает задача уведомления объекта🔔 об изменении в другом объекте. И мы не чешем репу🤔, как изобрести такую штуку с сиденьем и двумя колесами, а пишем Observer🔭. Разумеется, немного подпилив под себя.

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

Есть еще Антипаттерны💩 (Монолит🗿, например) – тест на вшивость, если узнал себя, то пишешь говно – и ненастоящие паттерны (Например, АбСтРаКтНаЯ фабрика🤮) – впариваемые инфоцыганами, чтобы сделать "ТОП-88 Паттернов проектирования". И есть еще GRASP, которые придумали древние шизы🍄, и они должны быть утеряны в анналах истории🗿...

📯Принципы

Это заповеди, выбитые на скрижалях Всеотцами программирования😀 типа Боба Мартина. Самые популярные из них: SOLID🔗, KISS💋, DRY👣...

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

Но, в остальном, это звучит как "не клади все яйца в одну корзину"👌 или "береженного Бог бережет"😇 – чисто житейская мудрость пращуров, добытая горьким опытом✝️.

Стоит следовать им на крепкую четверку4️⃣, не больше, а со временем они сами впитаются в голову🧠.

❤️ – Подробный разбор паттернов
🔥 – Подробный разбор SOLID
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥53
This media is not supported in your browser
VIEW IN TELEGRAM
🔥3🤣3
Wild Russian GameDev Mentor
Video message
Господи, турки не умеют делать алкоголь...
Берите у них только Efes, как раз он везде есть. Что вино как будто водой разбавлено, что вместо шотов налили рвотное🤮
🤮3🤣3
Wild Russian GameDev Mentor
Video message
Забейте, второго места не существует...
😭4
This media is not supported in your browser
VIEW IN TELEGRAM
😭2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🌭4🔥3
ОБОЗНАЧЕНИЯ КРУПНОЙ О (BIG O NOTATION)

Когда мы только начинаем вырастать над уровнем "написать Hello, world!"👋, пора начинать задумываться над эффективностью алгоритмов🤔. Но как ее оценить, если время выполнения зависит от многих факторов, не связанных с кодом: от компьютера, от параллельно запущенных программ, от использованного языка?🤔

Здесь нам на помощь🆘 приходит
📯Нотация Big O

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


Простая проходка🚶‍♂️ по коллекции будет O(n), и рост времени тут в линейной зависимости от количества элементов в массиве (x2 элементов = x2 времени)📐 . А вот если засунуть эту проходку в еще один цикл, то будет уже O(n²). (Примеры на коде в описании). Это квадратичная функция🟥, это плохо, такого мы стараемся избегать.👎

Таким образом, Big O позволяет нам определить, насколько сильно наш алгоритм поперхнется😮‍💨, если мы всунем в него огромный поток ценных данных📊. А это очень полезная информация, если мы планируем масштабировать систему🤯.


📯Как этим пользоваться

Берем наш цикл и вытаскиваем из него количество итераций🔃. Обозначаем их как n. Затем избавляемся от всех констант🗑.


Так, O(2n - 1) легким движением руки🧙‍♀️ превращается в O(n). Вы можете возмутиться, мол, как же так, ведь два цикла - больше, чем один цикл😱!!!

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


То есть, сравнивать жопу с пальцем смысла нет, уяснили🧠? Но что мы можем сравнить - так это то, что в обоих случаях при х2 данных будет х2 времени. Значит, по Big O два эти алгоритма одинаковые.🪞 Смиритесь.

📯Зачем этим пользоваться?

С помощью Big O можно легко оценить, насколько алгоритм говно💩
Например, пузырьковая сортировка будет O(n²) – это в n раз хуже допустимого🤡


То есть, теперь у нас появилась линейка, которой мы можем померить кривизну рук разработчика, очень удобно👍

😱 – У меня от пляжных кружочков до сих пор на лице Big O
🤓 – Да кому нужны эти метрики, если и так сойдет?)))

За примерами на коде в комменты⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
😱3🔥1🥰1👌1🤓1
МЯГКИЕ СПОСОБНОСТИ (СОФТ СКИЛЛЫ)

📯Программирование больше не тайное учение

Давно прошло то золотое🌧 время, когда программистами могли стать только суровые задроты🤓 в вонючих свитерах с оленями🦌. Эпоха гениев, не тронутых женщиной, закончилась👁.


Во-первых, порог входа пробил днище. Теперь не нужно дрючить байтики, а можно клепать No-Code говнище💩, и все равно будет работать. И, что самое страшное, будет работать хорошо👍. По крайней мере достаточно хорошо, чтобы брать за это деньги🤑.

Раньше, чтобы написать игру, тебе нужно было досконально знать устройство компьютера👩‍💻, изобрести собственный движок, отрисовывать каждый кадр, а затем все это уместить в 12 бит памяти мощнейшего компьютера того времени🩴. И все это за респект, потому что компьютеры есть только в универах и в ЦУПе🛰. Разумеется, таким будут заниматься только отбросившие все человеческое👀.


📯Для чего тебе может понадобится говорить с людьми

Во-первых, любое современное ПО делается в кооперации🫶🫶.


Для того, чтобы сделать что-то качественное, тебе нужен художник, звукарь, программист, сценарист, гейм-дизайнер, тестировщик👨‍🎨🎧🧑‍💻✍️👎... Допустим, часть из этих ролей совмещается, но чем их больше в одном индюке🦃, тем хуже качество исполнения каждой. А уж если мы говорим, о чем-то большем, чем инди-поделка, то любой коллектив среднячков >> один гений🧙‍♀️.

Во-вторых, тебе понадобится продавать себя и свои продукты💵.


Навыки общения помогут тебе как договориться на более высокую зарплату, так и продать стартап толстосуму-инвестору🤑.

Представь, что ты супер-крутой мега-программист🌚. Как об этом узнает весь мир, если ты двух слов связать не можешь🤔? То-то и оно...


📯Ну вот я интроверт, не люблю общаться с людьми, что мне теперь делать?

Я тоже. А вот, работаю с людьми. Хотя лет шесть назад до слез боялся позвонить по телефону😭. Кстати, это правда.

Да и никто не говорит, что надо любить общаться с людьми. Надо уметь👍. Сомневаюсь, что есть люди, которые обожают ездить в автобусе или убирать квартиру. Может, найдутся любители платить налоги? Но это все мы терпим🫡.

Помните, что кринж мертв🤦‍♂️, любой позор переживаем, и ничего катастрофического не будет, если вы скажете что-то не то🥴. В рамках УК РФ, разумеется...


Если совсем никак, попробуйте обратиться к психологу💉 – эта темка реально многих захилила💊.

_____________________________________

И выйди уже из комнаты,
Соверши уже, блять, ошибку!
Солнце не будет лишним,
Если ты куришь шибко.

_____________________________________


🪕 – Мама, пожалуйста, не надо крика!
Просто я хикка, просто я хикка...
😱 – ААААААА, ЖЕНЩИНА!!!!!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
😱632
SOLIDное программирование #1

Вы захотели принципов🤩 (так было решено здесь). А значит, теперь мы подробнее рассмотрим шесть самых попсовых правил, из-за которых все срутся в интернете👊.

Оглавление:
S – Single Responsibility 📍
O – Open-Closed
L – Liskov Substitution
I – Interface Segregation
D – Dependency Inversion
(Bonus) DRY – Don`t repeat yourself

📯S – Single Responsibility Principle

– каждый объект должен иметь одну ответственность☝️, и эта ответственность должна быть полностью инкапсулирована в класс📦. Я дальше буду говорить про классы, но то же самое относится и к методам.


На мой взгляд, самый ясный☀️ из принципов. По-простому, ответственность – это то, за что отвечает данный класс😱. То есть, никаких побочных квестов, никаких дополнительных функций у класса не должно быть, кроме его главного предназначения⚔️.

Пример:
Вот у нас есть радио с часами📻. Неправильно будет запихнуть обе этих ответственности в один класс. А нужно либо класс Часы положить в класс Радио📻, либо создать два равноважных класса.


📯Зачем?

Во-первых, тогда Ось изменений🔄линия, пронзающая🏹 все классы, которые придется затронуть при необходимости некоторых изменений (в том числе, исправлений❤️‍🩹) – будет затрагивать неSRP-класс в меньшем количестве случаев↘️. А, помятуя о священном правиле "Работает – не трогай😇", мы хотим, чтобы эта Ось затрагивала как можно меньше классов.
Во-вторых, если нам понадобится сделать Радио📻 без Часов, мы сможем поступить в соответствии с DRY – взять тот же класс Радио📻, а не писать новый, и не использовать Радио С Часами📻, игнорируя половину его функционала.

📯Окей, тогда отдельный класс под каждый метод – не прогадаешь?

Так же, как мы ограничили максимальное🤚 число ответственностей на класс, мы также должны ограничить максимальное число классов на ответственность🤤.


Это значит, что мы не размазываем ответственность по всему коду, а концентрируем ее в одном классе👍.

Пример:
Вот у нас есть Отчет📎. Будем ли мы хранить в разных классах его заголовок, комментарий и данные🫠? Нет (вдруг правда не знаете🤷‍♀️).


_____________________________________

Напоследок, подсказка💡: если вам хочется в названии класса поставить With/And – это звоночек📞


🪕 – Про ответственность я знаю только, то как ее перекладывать😁
🔥 – Поскорее бы вторую часть🤤🤤🤤
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥31🍌1
This media is not supported in your browser
VIEW IN TELEGRAM
Ура, товарищи!!!!🎉🎉
Сегодня на стриме я смог заставить кого-то чему-то научиться!!!🧠🤓
Хоть и пришлось упростить систему до 1.5 нейронов, зато работает же!🤓
Это значит, что мои попытки вкатиться в нейросети не безнадежны
Через недельку будем писать красивый вывод в инспекторе, а завтра утром напишу, что произошло за ночь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉52🔥1