Михаил Непряхин: Так всем. Привет Напишите как. Видно, Слышно
Михаил Непряхин: плюсики Поставьте пожалуйста,
Михаил Непряхин: Окей
Михаил Непряхин: Так значит посмотрим посмотреть надо на физбас
Михаил Непряхин: кто сделал
Михаил Непряхин: вацин
Михаил Непряхин: кто не сделал
Михаил Непряхин: а на
Михаил Непряхин: все равно стоит один Раз, его написать
Михаил Непряхин: потому что
Михаил Непряхин: иногда бывает спрашивают то есть как бы могут спросить одно время это Была самая популярная задача ночью по всем язы по любым языкам на любых языках ее спрашивали на бэкенде
Михаил Непряхин: за рубежом
Михаил Непряхин: вот и у нас тоже активно спрашивали можно пару лет назад Сейчас уже редко бывает Но Иногда можно встретить
Михаил Непряхин: потому что здесь как бы и цикл эти иф и свич можно заюзать
Михаил Непряхин: так Но вот такой вариант решения ну как рабочий ну наверное этот первомудренный По большому счету конечно надо просто с помощью цикла
Михаил Непряхин: ну перемены. Можно Не юзать сразу подставить Сюда Так Сейчас найдем какой-нибудь вариант который я скажу Что Прям
Михаил Непряхин: хороший
Михаил Непряхин: я так пролистал посмотрел,
Михаил Непряхин: ну, вот вот вот по сути эторованный вариант вот как, бы
Михаил Непряхин: так
Михаил Непряхин: вот так его так и можете писать
Михаил Непряхин: ну в общем в чем смысл да нас просто цикл.
Михаил Непряхин: Вот Мы здесь перебираем сотни числа и
Михаил Непряхин: важно помнить что и
Михаил Непряхин: вот ну так в жизни Ну, Максимум где использоваться Ну, либо Это когда нам, надо
Михаил Непряхин: Какой-нибудь шар найти, типа У нас есть Количество шардов и Мы Там Берем остаток поделяя Отделения
Михаил Непряхин: либо ну типа кошмар да Там такой же принцип
Михаил Непряхин: и и
Михаил Непряхин: Это использует когда Мы хотим, допустим влог вывести каждый допустим Там тысячнуютерацию цикла
Михаил Непряхин: так Сошевляем есть Еще варианте как с оптимизацией
Михаил Непряхин: Ты же видел. Что. Ты написал
Михаил Непряхин: так ну вот Из перемены я бы не стал. Лизать
Михаил Непряхин: но круто смотреть значит в Чем здесь крутизна в отдельной функции написан для того чтобы вообще было еще Усложнение на эту задачу написать тесты
Михаил Непряхин: типа вы пишете физбас
Михаил Непряхин: если, вы его не пишете сразу о функции. То вам придется его Еще функции. Потом вывести
Михаил Непряхин: вот и для того чтобы написать тесты
Михаил Непряхин: мне нужна функция Карточек
Михаил Непряхин: ну вряд ли Сейчас прямо кто-то вам Скажет это
Михаил Непряхин: Не писать потому. Что и Так достаточно много задач
Михаил Непряхин: аа Просто погошки То есть Там они реально сложные и обычно все Время уходит То есть ну. Одна задача Точно плотно слайс
Михаил Непряхин: и Одна Или Парочка задач на гурутины каналы
Михаил Непряхин: и могут еще что-нибудь Там про интерфейс и про указателей спросить
Михаил Непряхин: короче
Михаил Непряхин: да наверное здесь
Михаил Непряхин: вот короче Есть еще вариант с оптимизацией
Михаил Непряхин: Это задача
Михаил Непряхин: что, на самом, деле Можно Остаток Отделения от Пятнадцати взять и Это было то Же самое что
Михаил Непряхин: нукач запись когда Мы сперва попробуем От этого взять потом сперва Тройки и тонны Пятерки
Михаил Непряхин: А тоже Прикольная Штука
Михаил Непряхин: Можете запомнить как Писать
Михаил Непряхин: короче это можно с фифа можно со свечом Ну я бы со свечом писал потому что элзыв
Михаил Непряхин: Но в Гошке почти Никогда Не используется то есть вот это вот это стопроцентно Всегда свич пишется
Михаил Непряхин: мистер дом
Михаил Непряхин: Боже мой
Михаил Непряхин: ну, в общем
Михаил Непряхин: вы поняли
Михаил Непряхин: ну, максимально просто вот простой вариант
Михаил Непряхин: так
Михаил Непряхин: так ван Давайте Перейдем
Михаил Непряхин: продолжим продолжим Разбираться в Базовых типах.
Михаил Непряхин: Так кто угол. Торча Не пошел
Михаил Непряхин: да проходите гултур без задача
Михаил Непряхин: просто Базовый сент таксист и городе. На Канал Тоже, можете не смотреть
Михаил Непряхин: так,
Михаил Непряхин: Нам короче сегодня говорим.
Михаил Непряхин: О чем говорим,
Михаил Непряхин: в функциях к объектам первого Класса об анонимных функциях оказателях но я думаю все до своей сегодня не Дойдем Что есть отдельная большая тема.
Михаил Непряхин: А значит гоу функциональный язык ну в том плане что он
Михаил Непряхин: как бы можно писать функциональные парадигме на гол
Михаил Непряхин: да и
Михаил Непряхин: я даже Один знаю человека который и
Михаил Непряхин: пишет все проекты в функциональном стиле
Михаил Непряхин: а что такое функциональный стиль
Михаил Непряхин: это ну как бы что минимально необходимо для того чтобы
Михаил Непряхин: а писать в национальном стиле
Михаил Непряхин: нужно чтобы
Михаил Непряхин: функция
Михаил Непряхин: во-первых принимала функцию
Михаил Непряхин: То есть вот Эд фанк
Михаил Непряхин: это функция
Михаил Непряхин: вот Мы смотрите говорим. Тайп
Михаил Непряхин: ну, как То Же самое как Мы объявляем какие-то простые типы
Михаил Непряхин: типа Мы можем взять и сделать аа атынь Там свой и кастомный Тип
Михаил Непряхин: А можем Вместо типа Ну обычного. Целучительного типа
Михаил Непряхин: указать что тип это Функция
Михаил Непряхин: то есть указываем прям сигнатуру функции
Михаил Непряхин: и мы говорим о том что наша. Функция фу
Михаил Непряхин: принимает на вход. В другую функцию
Михаил Непряхин: и и
Михаил Непряхин: так же наша Функция может вернуть
Михаил Непряхин: функции
Михаил Непряхин: и ну собственно все этого достаточно для того чтобы писать что угодно Использовать разные Дикие паттерны и творить максимальную Дичь ну то Есть, вот У нас инкриминимент фанк это тоже Функция но это функция вот она с такого типа то есть тип называется инкриент фанк
Михаил Непряхин: и и
Михаил Непряхин: а типом является Сигнатура функций то есть вот Это все это тип такой
Михаил Непряхин: и Мы здесь возвращаем дело в Ритерн
Михаил Непряхин: говорим. Что Мы возвращаем Функцию
Михаил Непряхин: ну в нашем случае Она немы функционирует
Михаил Непряхин: сигнатура, Она Должна соответствовать Этой и
Михаил Непряхин: в теле Этой функции Мы еще вызываем вот эту Функцию которую приняли и здесь прописываем Что вот У нее Один аргумент икс а второй Один
Михаил Непряхин: вот и значит я встречал, Проект, написанный полностью в таком, стиле
Михаил Непряхин: жизнь полнейшая
Михаил Непряхин: и ну. Просто как бы Теряется смысл
Михаил Непряхин: того Что У нас Нормальный язык Со строгой эстетической типизацией
Михаил Непряхин: и Теряется смысл того Что
Михаил Непряхин: У нас Сигнатура, Функций как Мы в прошлый Раз, говорили несет очень много смысла
Михаил Непряхин: если вы начинаете принимать функции. И отдавать функции.
Михаил Непряхин: Смотря в эту синатуру у вас Нет никакой информации для того чтобы понять что здесь происходит вы должны э вот эту сигнатуру посмотреть
Михаил Непряхин: а Проект который я Видел. Он и
Михаил Непряхин: Но когда типа все обернуто и в итоге у нас есть один большой объект который он как бы типа собирается Из этих Объектов.
Михаил Непряхин: Значит зачем вообще это в гошке нужно
Михаил Непряхин: это
Михаил Непряхин: а инструмент
Михаил Непряхин: который редко бывает нужен
Михаил Непряхин: Но тем не менее Иногда это нужно и это удобно
Михаил Непряхин: и Поэтому к этому. Надо относиться к этой возможности надо относиться как бы, так как как к эмбдингу да типа как Мы в прошлом уроке Мы разбирали мэмэдинг и Композицию Что Композицию мы используем Всегда, а эмбдинг
Михаил Непряхин: в тех случаях когда это нужно и когда по другому нельзя ну Или когда Можно оно будет очень сложно а вот тут как бы такой изящный выход из какой то ситуации
Михаил Непряхин: и то же самое
Михаил Непряхин: когда, мы начинаем типизировать так вот функции, и их использовать
Михаил Непряхин: это Должна быть какая-то Ситуация, в которой По-другому Написать будет слишком сложно
Михаил Непряхин: ну то есть например, какие-нибудь обработчики хендлеры для сервера то есть вот там, это используется
Михаил Непряхин: и по большому счету все
Михаил Непряхин: Поэтому и
Михаил Непряхин: в таком. Стиле писать не, рекомендуется но возможности, какие есть конечно надо понимать
Михаил Непряхин: значит как Еще По-другому называется когда мы Объявляем нашу функцию наш тип как функцию
Михаил Непряхин: значит вот аргумент который здесь принимается
Михаил Непряхин: он называется аргумент первого Класса,
Михаил Непряхин: и когда Мы передаем здесь число То Мы говорим Что Мы передаем вот число
Михаил Непряхин: как Объект первого Класса,
Михаил Непряхин: Когда Мы Передаем Функцию То это называется Что Мы Используем Функцию как Объект первого Класса, Или по английски Фест класс фанкшн
Михаил Непряхин: просто Для информации для того чтобы Если чуть-чуть где-то встретились То это вот оно и есть То есть пес, класфанкшн или функция как объект первого Класса, это имеется в виду когда у нас функция выступает Типом
Михаил Непряхин: которая либо в аргументах мы принимаем его либо мы возвращаем если мы возвращаем функцию то это тоже
Михаил Непряхин: называется что Мы возвращаем функцию как объект первого класса
Михаил Непряхин: шерсткласс факшн
Михаил Непряхин: это и
Михаил Непряхин: далее. Ну смотрите что значит нам удовлетворить этому типу
Михаил Непряхин: ээ нам. Нужно Использовать полностью вот Эту сигнатуру
Михаил Непряхин: и вот Я беру и пишу кастовную, функцию с Этим святой сигнатурой, и теперь эта функция она удовлетворяет вот этому. Типу,
Михаил Непряхин: То есть это по Сути как бы как какое-то Ммм ограничение какое-то да продикатный Тип То есть что Мы типа вот обязан Эту сигнатуру удовлетворить и может что-то как-то типа на интерфейс походе да Можно сказать
Михаил Непряхин: то же самое вот здесь Есть У меня допустим вот такой тип который и
Михаил Непряхин: тип является функцией и эта функция она принимает инт и отдает инт
Михаил Непряхин: и чтобы мне удовлетворить Этой функции допустим я вижу что вот какая-то функция принимает вот Эту функцию и чтобы мне Эту функцию создать мне нужен тип
Михаил Непряхин: ну и
Михаил Непряхин: а главное Чтобы сигнатура. Это совпадала значит Мы принимаем Инт возвращаем Инт все Мы будем Удовлетворить Эти. Функции
Михаил Непряхин: а и
Михаил Непряхин: так значит
Михаил Непряхин: тут. Надо поговорить о том как вообще функция
Михаил Непряхин: представлена в памяти
Михаил Непряхин: то Есть вот когда мы объявляем функцию
Михаил Непряхин: мы говорим что вот наши функции, будут вот с Таким типом
Михаил Непряхин: а Это, вот эта функция да то же самое можно было бы сделать вот так вот
Михаил Непряхин: то есть Мы бы сделали вот так вот
Михаил Непряхин: это было бы один в один и то же самое, что и как бы аляс то есть это как бы ясно на тут. На ту сигнатуру
Михаил Непряхин: сегодня я встретился в асфальт сам Сесть для звонка
Михаил Непряхин: Ммм
Михаил Непряхин: да и
Михаил Непряхин: значит
Михаил Непряхин: я здесь Делаю проверку что функция равновл. То есть вот этого меша зеркалью я здесь равно Не использую За то есть я ее Не объявляю я просто объявил, через вар и это значит там Внутри Будет зероэлью
Михаил Непряхин: что Же Является, зеровелью
Михаил Непряхин: от функции как объект первого Класса, нил
Михаил Непряхин: Почему ни
Михаил Непряхин: потому. Что функция как объект первого Класса, это указатель
Михаил Непряхин: обычный указатель просто тонкий обычный указатель и ну, Тут вот
Михаил Непряхин: вот можно проверить сколько занимает восемь байдент
Михаил Непряхин: потому, что это просто указатель
Михаил Непряхин: Давайте подумаем как функция вот Таким Образом объявлена представлена в памяти
Михаил Непряхин: Давайте так какие Есть соображения то, Есть как и
Михаил Непряхин: вот когда Мы объявляем вот Таким образом функцию
Михаил Непряхин: то Что У нас Э Куда У нас указывает этот указатель то Есть Мы поняли Что. Указатель объект куча
Михаил Непряхин: Ну да может быть в кучу а может быть Просто в Текстовой Области. Бинарника
Михаил Непряхин: Ну вот и памяти Жене
Михаил Непряхин: колстек
Михаил Непряхин: Не понимаю тут сложно тут наверное проще этот вопрос будет задать. На анонимные функции но Пока простая функция то есть смотрите Если
Михаил Непряхин: и Если Я прямо в тексте программы объявляю какую-то функцию то Ей даже и на кучу не надо быть ну потому что как бы она у нас и так в тексте программы записана
Михаил Непряхин: вот и Поэтому когда я говорю что это у меня указатель
Михаил Непряхин: я на самом деле не знаю как там она будет представлена либо этот указатель будет прямо, вот в текстовую область памяти и вот на эту функцию либо он все-таки скопирует ее и поместит в кучу тут как бы вопрос но смысл в том что
Михаил Непряхин: надо понимать Что это указатель
Михаил Непряхин: то есть вот нас стековая область астек
Михаил Непряхин: и куча
Михаил Непряхин: когда Мы делаем вот объявляем там вар,
Михаил Непряхин: э Мы получаем указатель он восемь боит
Михаил Непряхин: и он указывает
Михаил Непряхин: ну либо в кучу либо
Михаил Непряхин: в Текстовую область ээ памяти то есть которая была изначально ну нам, вот по сути без разницы хоть какую-то кучу хоть текст ну только в тексте она как бы там топором ее не вырубишь а есть кучу может горбачев коллектор собрать только в этом Разница
Михаил Непряхин: вот и собственно говоря ну мы тупо вот на нее указываем
Михаил Непряхин: и она Там у нас где то объявлена но Там принимает инт возвращает инт
Михаил Непряхин: и собственно говоря когда мы потом Будем
Михаил Непряхин: вот мы сделали
Михаил Непряхин: вар
Михаил Непряхин: фэн и вот эту сигнатуру функции, записали
Михаил Непряхин: чтоб ее вызвать
Михаил Непряхин: надо было сделать аф и круглые скобки то есть, вот это вот вызов функций,
Михаил Непряхин: ту которую мы объявили
Михаил Непряхин: ну и соответственно по указателю
Михаил Непряхин: достанется то место, в памяти где вот эта вот функция Находится подставится. Здесь значение Которое Мы Сюда Подставим ну и в общем-то результат Мы Получим Там равно Мы Получим результат который я Сработал То Есть здесь в Принципе Ммм не то чтобы сильно сложно
Михаил Непряхин: просто надо понимать Что
Михаил Непряхин: когда вот таким образом объявляется
Михаил Непряхин: функция Это, указатель это понято
Михаил Непряхин: письмо до этого свадьба смотрели свой толстый указатель он сослит хаши из трех полей то есть там кроме указателя еще есть длина и Емкость.
Михаил Непряхин: А
Михаил Непряхин: м обычная функция Это просто Обычный указатель восемь Бай
Михаил Непряхин: так значит вот Мы говорим Что вот У нас эта функция Так с таким-то типом равна
Михаил Непряхин: просто Вот Я как бы указываю Что Вот Это Это Моя функция
Михаил Непряхин: то есть смотрите если Я Так Вот Сделаю то я вызову Эту Функцию то есть это вызов функции,
Михаил Непряхин: а без кобочек я говорю Что вот в Этой перемены Сейчас находится указатель на функцию
Михаил Непряхин: можно Тип не указывать э Типы увидятся автоматически то есть как бы тут видно но издешка подсказывает какого типа это Функция
Михаил Непряхин: вот ну допустим если нам надо там где-то борт да если нам где-то надо будет. Ее Использовать а там Тип Указан утром такой то в Принципе тоже не обязательно именно этого типа делать оно
Михаил Непряхин: в и
Михаил Непряхин: все равно как бы это
Михаил Непряхин: произойдет Кастинг, типа и как бы все будет Работать и так То есть тут похоже на что-то похожее на утиную типизацию
Михаил Непряхин: если сигнатура удовлетворяет То типа нельзя Создавать То есть это скорее просто аллея Там какое-то сокращенное название
Михаил Непряхин: но и То даже если вы начинаете где То использовать функцию
Михаил Непряхин: ааа
Михаил Непряхин: либо это какая-то должна быть Вот прямо одна функция и она вот вот очень много раз повторяется Поэтому вытак я вам сделаю аляс но по-хорошему лучше Не, скрывать его если, у вас функция принимает функцию вот как, здесь
Михаил Непряхин: ну вот сделайте вот так вот пусть она вот так вот явном виде это ну обычно такого страшного Не бывает но Там что нибудь
Михаил Непряхин: какой-нибудь и
Михаил Непряхин: так ну сказал ожидаться азов если, посмотреть сколько размер на стек это восемь бай
Михаил Непряхин: ну вот Мы вызываем Мы создали нашу Функцию вот Мы подставляем сюда три-четыре результат получили печата а Там она внутри, это она просто что Она Там складывает Допросы Складного значения
Михаил Непряхин: ну. То Же самое с инклементом создали Функцию Передали аргумент получили Результат
Михаил Непряхин: Там Она просто инкриминирует Передали Один значит у меня Там счет у меня просто плюс один да ну, будет два соответственно
Михаил Непряхин: так, и ну, да вот этот пример Что, Мы можем эту функцию туда передать
Михаил Непряхин: и получить Другую функцию то есть тут я оборачиваю По сути ну
Михаил Непряхин: конвертируй получается из одной функции в Другую
Михаил Непряхин: а это функционирует на той функции, вот ну короче это такой антипатий как бы это лучше, не использовать только по назначению очень редко иногда по Сути показываем Вопросы, чтобы вы узнали что такое бывает в продуктовом Кодексе
Михаил Непряхин: не надо описать не используется вообще
Михаил Непряхин: дальше значит анонимная функция
Михаил Непряхин: а вот здесь же поинтереснее
Михаил Непряхин: анонимная функция ну собственно мы просто объявляем функцию без аляса то есть вот мы
Михаил Непряхин: а объявили и
Михаил Непряхин: в теле сразу ну всю Функцию вместе с тем прописываем ну а дальше Мы можем ее использовать точно Так же как Там когда Мы складывали то есть мы принимаем Два аргумента возвращаем просто складываем
Михаил Непряхин: а
Михаил Непряхин: это обычная функция и смотрите чтобы сделать синхронную функцию
Михаил Непряхин: а параллельную синхронную функцию параллельно если у нас больше одного ядра доступна так она Синхронная будет в Любом Случае просто любая Синхронная в одном номере либо Синхронная по всем Ядрам Что Есть доступности
Михаил Непряхин: а просто добавляет ключевое слово гоу и вот в этом месте у нас появляется
Михаил Непряхин: параллелизм конкурентность Так сказать
Михаил Непряхин: а мы когда встречаем вот эту вот инструкцию Гоу
Михаил Непряхин: ну Мы про это позже Поговорим как, это под капотом как, это все Планируется то Есть этому прямо эта. Тема, лекция будет там Посвящена ну смысл в том Что оно начинает работать как бы рядышком параллельно. Как Будто бы если он с другими языками сравнивает как будто бы в другом потоке
Михаил Непряхин: и им
Михаил Непряхин: самое Интересное Замыкание
Михаил Непряхин: ну кто-то не разделяет, Когда Говорят, анонимные функции кто-то прямо одинаково использует что замыкание что анонимная функция ну просто для грамотности, для правильности, если. У нас
Михаил Непряхин: функция
Михаил Непряхин: из колпа ничего не берет
Михаил Непряхин: то это анонимная функция вот как здесь то есть она Без сай Дефектов она только вот то что в аргументах передается вот только
Михаил Непряхин: это влияет на то Что функция отдаст то есть это
Михаил Непряхин: чистая так называемая чистая функция
Михаил Непряхин: вот если у нас есть сайт-эффекты если функция Не чистая если у нас Есть в Сколково вот как здесь какая-то перемена например, сам
Михаил Непряхин: и тут, Мы объявляем
Михаил Непряхин: анонимную Функцию в Которой используется вот эта вот Внешняя Переменная то такая функция называется замыканием
Михаил Непряхин: и и
Михаил Непряхин: важный момент
Михаил Непряхин: переменная захватывается, по указателю
Михаил Непряхин: Этого здесь не видно это происходит не явно но вот здесь вот Есть указатель что следующая тема. По указатель Поговорим он просто смысл в том что если вот здесь Внутри функции перемены будут меняться
Михаил Непряхин: кто она изменится. И здесь то есть она извне тоже изменится.
Михаил Непряхин: То есть замыкание так работает что оно замыкает все по указателям все что вы внутри функции, допустим есть еще какая то перемена
Михаил Непряхин: перемена аи
Михаил Непряхин: и вы внутри функции, говорите что, ай
Михаил Непряхин: он бравну хвал
Михаил Непряхин: когда вы здесь потом проверите
Михаил Непряхин: ну ее надо вызвать конечно вот функцию функцию надо будет, вызвать вот переменная ай
Михаил Непряхин: а будет, равна
Михаил Непряхин: хахво
Михаил Непряхин: после первого вызова,
Михаил Непряхин: значит ну вот Мы сделали нашу наивную Функцию наше Замыкание, и чтобы его Вызвать Мы соответственно вот используем
Михаил Непряхин: а
Михаил Непряхин: на скобки и Таким образом Мы ее вызываем то есть здесь она у нас просто объявлена она у нас есть мы на нее получили указатель а здесь мы уже ее вызываем
Михаил Непряхин: и и
Михаил Непряхин: еще из особенностей смотрите вот когда анонимную функцию ну то есть это как бы частый патрон она начнет параллельно. Там запустить
Михаил Непряхин: Мы мало того что ну вот так вот это синтаксизм объявление функции,
Михаил Непряхин: и в конце
Михаил Непряхин: а скобочки то есть мы ее тут же и вызываем
Михаил Непряхин: То есть как бы если Это Не синхронные функции То в Этом обычно Нет смысла То есть Это почти Всегда Используется только с этими синронными функциями но с Ключом своем гол.
Михаил Непряхин: Вот это вот внутри
Михаил Непряхин: это как Будто, бы
Михаил Непряхин: Мы ну сделали вот так вот
Михаил Непряхин: а потом вызываем
Михаил Непряхин: только ну как бы сахар сахар вот над этим ну тут, на самом деле сахар такой как бы по-другому и ты не напишешь а ну Нет можно можно нас смотреть значит
Михаил Непряхин: Мы говорим про фэн
Михаил Непряхин: фрэн Это Наша, Функция
Михаил Непряхин: А дальше Голову.
Михаил Непряхин: Вот Вот Так Вот
Михаил Непряхин: То, Есть короче вот чтобы вот Это вот не писать вот так вот
Михаил Непряхин: сокращенная запись
Михаил Непряхин: которую все используют
Михаил Непряхин: ну да вот она так и выглядит
Михаил Непряхин: что, Мы сразу же Здесь вызываем сгу и сразу вызываем вот эти вот
Михаил Непряхин: копки
Михаил Непряхин: и Если у нас Здесь аргумент ну например, Там
Михаил Непряхин: иксинт
Михаил Непряхин: а то Мы его можем вот сюда вот и передать то есть вот в этом случае если бы у нас был икс
Михаил Непряхин: вар икс инт
Михаил Непряхин: вот Мы боевого Так вот Передали
Михаил Непряхин: и вот эта функция вызвалась. Бы с аргументамикс
Михаил Непряхин: То в этом случае Мы его Передаем вот Неожиданно Но вот сюда
Михаил Непряхин: и это вот тоже, как бы так это немножко смущает но просто надо понимать что вот это вот вместо вот этого мы можем записать вот так вот то есть это такой сахар
Михаил Непряхин: но гурутины часто запускаются просто Без аргументов
Михаил Непряхин: и более того если, вам нужна этот аргумент Этой переменной извне но вы же просто берете и захватываете по
Михаил Непряхин: по указателю все счастливые сюда
Михаил Непряхин: так пропишете то Она и так здесь напечатается потому что она захватится не явно по указателю
Михаил Непряхин: короче очень важный момент да как бы, Зафиксируете что вот замыкания
Михаил Непряхин: Внутри себя захватывают переменные по указателю
Михаил Непряхин: так Сейчас есть какие-то Вопросы, задайте и еще это нарисуем
Михаил Непряхин: так а ссылка на функции эстетики наверное
Михаил Непряхин: а
Михаил Непряхин: ссылка на функции ну да конечно конечно и
Михаил Непряхин: значит как бы
Михаил Непряхин: смотрите у нас все на стеке
Михаил Непряхин: почти Всегда Кроме указателей если. Вы видите указатель со звездочкой ну это почти седа куча опять. Же не Всегда не Всегда иногда но показатель может Указывать истекана стек
Михаил Непряхин: такое Тоже, бывает вот но как. Правило звездочка Это значит что у нас в Стекке этот поинтер у Которого, восемь, бай
Михаил Непряхин: то есть как, по размеру целого числа винт Твой симбат им шестьдесят четыре, восемь байден, указатель восемь бай вот а вот те данные на Которые он оказывает вот оно будет в куче
Михаил Непряхин: как правило
Михаил Непряхин: так если анонимная функция Использует фунт из глобальных. Склопа она Тоже по Еде Замыкание ну, да не ну, если анонимная функция ее примет
Михаил Непряхин: как аргумент
Михаил Непряхин: то Нет
Михаил Непряхин: а если, она его примет вот как бы внутри вот здесь вот она будет, замыканием
Михаил Непряхин: то есть, если, вы что-то передали в функцию
Михаил Непряхин: а давайте Сейчас. Еще Зафиксируем Опять же гошенники как бы это используют терминологию Поэтому
Михаил Непряхин: про это важно понимать о чем идет, речь,
Михаил Непряхин: значит допустим темлит говорит ты вот написал функцию
Михаил Непряхин: но Она нечистая
Михаил Непряхин: напиши. Типа чистую функцию что такое чистая функция эта функция без Еще интернет без сайд
Михаил Непряхин: Эффектов
Михаил Непряхин: что такое Сайт эффекты
Михаил Непряхин: то есть у нас есть либо глобальная переменная но глобальные перемены еще плохо да глобальные перемены мы не используем но вдруг да но есть глобальные перемены
Михаил Непряхин: либо есть и
Михаил Непряхин: на уровне пакета я Имею, в виду, либо есть локальная перемена вот на уровне допустим той функции в которой мы Сейчас находимся
Михаил Непряхин: и и
Михаил Непряхин: вот мы дальше работаем с нашей, функцией,
Михаил Непряхин: ну в случае глобальной перемены у нас функция может быть и просто тоже на этом же уровне Сколпе ну Допустим вот у нас есть Анонимная функция да вот мы ее с ней начинаем работать. Мы там ее объявили
Михаил Непряхин: и мы берем и Внутри используем эту Локальную или Глобальную перемену
Михаил Непряхин: иные Таким образом
Михаил Непряхин: получили сайт дефект
Михаил Непряхин: то есть если, вот эта переменная поменяется
Михаил Непряхин: или Допустим глобальную перемены мы Там используем
Михаил Непряхин: если, еще хуже да то вообще прямо очень Плохо
Михаил Непряхин: а если, вот эта вот переменная поменяется У нас Результат работы Функций, поменяется
Михаил Непряхин: это значит что наша функция она зависит от сай Дефектов то есть она зависит от переменных Которые есть в сколково выше
Михаил Непряхин: и это значит наша функция Не чистая потому Что У нее Поведение Не детерминированное оно зависит от внешних вот этих вот Условий
Михаил Непряхин: Поэтому нужно Писать Стремиться Писать чистые функции Которые Не зависят от каких-то Там локальных Или глобальных перемен если вам нужно что то получить, в функцию как ее получать а в аргументах
Михаил Непряхин: у вас есть аргументы,
Михаил Непряхин: вот вот вы его вот здесь когда получаете что То в аргументах
Михаил Непряхин: вы результат работы вашей функции зависит только от аргументов ни от каких там локальных глобальных переменных результат функций Не зависит
Михаил Непряхин: и вы можете без Проблем вашу функцию там таинственные на нее написать как бы работа функций становится более предсказуемой более надежной более стабильной
Михаил Непряхин: и вот если у вас весь, проект написан и
Михаил Непряхин: ну опять же говорит глобальные перемены Мы вообще не используем ну кроме Там ошибок То есть просто используется ошибка как глобальные перемены и все То есть как бы про глобальные перемены можете, вообще забыть про какие-то флаги глобальные перемены там Которые Переключаются даже фитчу Флаку, допустим вот у вас есть фитча флагдам
Михаил Непряхин: что такое фитнес флаг фитча флаг это когда вы сделали какую-то фичу.
Михаил Непряхин: И Еще не готова другая система которая зависит от Этой фичи принимать ну
Михаил Непряхин: короче говоря вы пока. Не хотите, ее включать вы ее хотите, закрыть под ив то есть вы просто закрываете подлив
Михаил Непряхин: и потом когда нужно ее включить вы этот ив
Михаил Непряхин: открываете с помощью перемен их окружения обычно просто в переменах окружения применяется переменная и у вас в иф открывается фитча становится доступно вы как бы ее так динамически можете включать выключать да как бы хорошая! Практика и все такое
Михаил Непряхин: но эту фичу, можно сделать вот этот флаг включения можно сделать глобальной переменной
Михаил Непряхин: а можно через аргументы функции передать
Михаил Непряхин: ну Там какой то конфликт на томбот
Михаил Непряхин: конфик и Там вот это вот включение
Михаил Непряхин: какой способ выбрать естественно через аргументы
Михаил Непряхин: то есть сам Ради уж как бы привыкать я к тому что
Михаил Непряхин: м
Михаил Непряхин: как я сказал до этого что вот функция как объект первого Класса, это эээ инструмент это микроскоп для Забивания, вот только вот решения, каких то узких. Задач, то же самое здесь значит Замыкание
Михаил Непряхин: Это, очень редко используем инструмент там где без этого было бы либо очень сложный. Код либо Но как то По Другому совсем нельзя
Михаил Непряхин: по большому счету мы это стараемся избегать и не используем но просто такое есть мы это понимаем мы это знаем
Михаил Непряхин: потому что когда что-то вы берете из окружения
Михаил Непряхин: но вы Не можете контролировать все окружение вы запоминаете что ли Будете Вот там у меня функция она берет Что из окружения
Михаил Непряхин: надо понимать а в каком значении Эти перемены а Там Мы загрузили Сейчас конфликт он вот такой ли сякой зачем это надо не надо от Этого зависеть когда У вас есть функция и все что делает эта функция все с Чем Она работает все Передается в аргументах
Михаил Непряхин: вы
Михаил Непряхин: примените полный Контроль вы просто читаете тему, Функций и вам не надо задумываться О том Что Что То Там извне берется Поэтому даже конфиги в фичурфаке чего угодно все все все все передаем через аргументы
Михаил Непряхин: так
Михаил Непряхин: а Куда используется нюансыпература. Разводка
Михаил Непряхин: ээ ну? По обычно это вот вот это классический пример а все остальное Прям редкость.
Михаил Непряхин: Если Анонимная функция использует Функцию из глобального сколопа она тоже тогда так
Михаил Непряхин: а Если Объект аргумент
Михаил Непряхин: но Если я не. Очень понял. Вопрос а Если Объект аргумент ну да оно нормально да мы Объекты как Аргументы принимаем то есть весь, смысл в том что просто вот здесь допустим у нас есть какой-то ну Объектов Нет гошки объекты они доста называют Структурой объектами вот У нас есть структура какая-то
Михаил Непряхин: тоже соответственно У нас есть структура
Михаил Непряхин: Вот ну и Мы Берем Эту структуру
Михаил Непряхин: ну вот это я анонимную структуру сделал Так Тоже можно вот мы ее принимаем ну Как бы все нормально
Михаил Непряхин: Так по обращению к глобальным константам из функции, Не, Является эффект константом Нет
Михаил Непряхин: и к ошибкам Тоже, Нет то есть у нас как бы из глобального и
Михаил Непряхин: единственные глобальные перемены Которые мы Используем это ошибки
Михаил Непряхин: и то я вам покажу Способ как их делать константами и
Михаил Непряхин: конечно если бы они были константами барабауджа но мы их используем как константы по Сути так все аргументы. Функции Передаются по значению Не считая пандекс
Михаил Непряхин: так Это хороший вопрос а
Михаил Непряхин: Которое Мы кстати Не озвучивали да
Михаил Непряхин: Давайте поговорим про это
Михаил Непряхин: значит вот У нас есть
Михаил Непряхин: функция
Михаил Непряхин: а на
Михаил Непряхин: принимают какие то аргументы значит вопрос
Михаил Непряхин: как
Михаил Непряхин: Принимаются аргументы функцию по значению
Михаил Непряхин: по указателю по ссылке
Михаил Непряхин: значит Давайте поговорим об этом Что вообще есть есть
Михаил Непряхин: значение увелью
Михаил Непряхин: есть
Михаил Непряхин: указатель поинтер
Михаил Непряхин: есть сынка
Михаил Непряхин: Блин Как Же Там, ссылка то греф референдум
Михаил Непряхин: есть Еще
Михаил Непряхин: не знаю, как Там, на английском Ну типа
Михаил Непряхин: может быть линк Или Как Там, короче есть Языки где еще есть ссылка не как референс а вот прям другая ссылка вот Давайте поговорим значит об, этом значит вот первый, вариант не Уверен, как называется
Михаил Непряхин: Этакая. Это ссылки но по русски была сынка значит это когда мы в коде
Михаил Непряхин: вот у нас есть какие то переменные
Михаил Непряхин: и мы их используем как сынки
Михаил Непряхин: и они по Сути это
Михаил Непряхин: допустим есть переменная и мы используем в коде то есть этого скотт и мы используем по коду ссылки
Михаил Непряхин: и по сути это в памяти представлено как просто одно, и то же то есть это просто все одно, и То же и вот такого
Михаил Непряхин: в гол Нет
Михаил Непряхин: То есть Сынок в Голову. Нет
Михаил Непряхин: а дальше про референдум
Михаил Непряхин: значит референдум
Михаил Непряхин: это понятие Которое власти То есть ссылки власти называют референдумами
Михаил Непряхин: и что Это такое Это поинтер
Михаил Непряхин: То есть в памяти он представлен как указатель
Михаил Непряхин: но с гарантиями что он не может быть нил
Михаил Непряхин: и ну вот в Этом вся Разница то есть вот в Расте как бы Пошли дальше эволюционно и придумали Что Ну Как я вам Говорил Что пойнтер Он Же может быть Разменован да
Михаил Непряхин: и У нас ни. Упоинтер ресепшена Это Топ Один Топ- Два ошибки при когда Мы Работаем с гошкой
Михаил Непряхин: власти Пошли дальше и Придумали такой Тип
Михаил Непряхин: Которые Не может Быть Ним как. Бы типа исправили ошибку, на миллион долларов, но ценой катастрофического усложнения Кода, и Поэтому от этого там борачи бора у чекер и вот это вот все Заимствования,
Михаил Непряхин: это вот весь акт потому что добавились вот эти вот референсы и как бы слава богу что их в го нет потому что но они
Михаил Непряхин: может безопасности и добавляют но с этим неудобно работать и как Будто такой ценой как это сделано власти мне это не нравится. И когда Говорят, ругают прорасты то в основном Говорят, про этот про эти ссылки
Михаил Непряхин: Дальше значит Что есть в гол, в гусе всего есть Два варианта как мы можем принять
Михаил Непряхин: как на стыке, будет представлен тип либо его значение
Михаил Непряхин: это и
Михаил Непряхин: а и
Михаил Непряхин: ну, там фло ты вот эти все
Михаил Непряхин: Или указатель
Михаил Непряхин: это функция тонкий указатель это слайс толстый указатель Там интерфейс Мапа вся страна
Михаил Непряхин: и Они Могут быть Нилами
Михаил Непряхин: и и
Михаил Непряхин: в памяти на стеке это представлено ну. Указатель как восемь бай
Михаил Непряхин: ну. Собственно как какие инт им тоже восемь бай
Михаил Непряхин: и и
Михаил Непряхин: сымок Нет
Михаил Непряхин: Поэтому когда кто то говорит
Михаил Непряхин: про указатели как Просынки
Михаил Непряхин: с одной стороны Это неправильно и Раньше очень часто исправляли и на цебесах тоже типа короче был такой маркер что если вы путаете указатель и Сынку то Это говорит о Том что вы тебе вообще не в Курсе вот этого
Михаил Непряхин: потому Что Кое-какая. Ссылка Нет в гоу ссылок и Говорить Ссылка про указатель неправильно потому Что
Михаил Непряхин: а значит Еще Раз чем отличается указатель от сроки
Михаил Непряхин: указатель в цике. Представлен восьми байтами Которые указывают в кучу на реальное значение
Михаил Непряхин: а с сынка
Михаил Непряхин: это а
Михаил Непряхин: Допустим вот у, нас Есть Ссылка на инт
Михаил Непряхин: и везде Где сынка просто Будет вот этот инт
Михаил Непряхин: как бы ссылки Нет в ронтайме ее Нет в памяти Ссылка это просто
Михаил Непряхин: э типа тоже самое. Значение просто как бы
Михаил Непряхин: такая и
Михаил Непряхин: но врать ссылки но вот эти референсы они действительно точно такие же как поинтер
Михаил Непряхин: и вот
Михаил Непряхин: но Говорят, Всымочный тип вот когда играет Сымочный тип это ок ну типа Еще пропоинтеры Говорят, что это Сумочный тип и тогда вот ну, эта. Формулировка еще ничего но это не Ссылка это именно, указатель
Михаил Непряхин: так вот в Голову. Все значения Всегда, копируются вот когда вот мы в аргумент функции, передаем что то
Михаил Непряхин: происходит копирование
Михаил Непряхин: и еще Говорят что все значения ну как бы все аргументы в Гоу они передаются по значению
Михаил Непряхин: но как бы Значением
Михаил Непряхин: иногда может быть указатель
Михаил Непряхин: и этот указатель просто скопируется допустим передаем инд вот здесь у нас ин
Михаил Непряхин: ну он Сюда скопируется
Михаил Непряхин: был насинт вот Копия Инта
Михаил Непряхин: Аа был у нас бул, Тоже, будет Копия була
Михаил Непряхин: а если у нас передается слайс Вот Мы с вас передаем и Там
Михаил Непряхин: ну сосать на плохой пример с функцией например, а потом Мы Функцию передаем
Михаил Непряхин: был наш указатель на Функцию
Михаил Непряхин: и Мы его сюда передаем что случится он скопируется То есть указатель это просто число
Михаил Непряхин: ну. Номер ячейки в памяти Да и Мы просто он занимает восемь бай на стыке
Михаил Непряхин: и мы просто берем и копируем его сюда
Михаил Непряхин: и у нас здесь получается вот этот указатель восемь байденц таких копия
Михаил Непряхин: и Поэтому как бы, просто запомнить Что в гоу вообще Всегда, все копируется
Михаил Непряхин: просто иногда может скопироваться указатель
Михаил Непряхин: который будет, Указывать куда-то на кучу и
Михаил Непряхин: есть либо значение либо указатели
Михаил Непряхин: указатель указывает почти Всегда в кучу можем считать грубое что указатель это
Михаил Непряхин: а значит восемь бай
Михаил Непряхин: адрес ячейки памяти в куче
Михаил Непряхин: и Все-все
Михаил Непряхин: в аргументы функции приходит через копирование
Михаил Непряхин: вот с слайсом тут, особый случай может ослабить эта структура она Тоже копируется Но Внутри она имеет. Указатель Но про Это Мы прям Это отдельно очень Подробно говорим поговорим Тоже на Пальцах
Михаил Непряхин: Так Давайте Сделаем перерыв и на вопросы, отвечу
Михаил Непряхин: и можете задать Еще вопрос если бы че то было непонятно
Михаил Непряхин: так Давайте напишите про
Михаил Непряхин: про разницу значения самки, указатель вообще как, будто. Это вот это более-менее понятно, чего Ты рассказывал
Михаил Непряхин: Или это пока сложно,
Михаил Непряхин: так
Михаил Непряхин: вот короче отвечая на вопрос на этот вот что все аргументы функций продаются по значению нечто пойндр
Михаил Непряхин: вообще все передается по значению да как бы ответ такой что все передается по значению Все Копируется
Михаил Непряхин: и указатели. Тоже
Михаил Непряхин: с звука Это хаш
Михаил Непряхин: Нет
Михаил Непряхин: Нет Срок Это не хаш
Михаил Непряхин: а пайтон с рук указывает на объект в памяти
Михаил Непряхин: ну То Есть так объекты хранятся в кучу ссылка является Целым Числом Представляющим адрес компьютерной памяти То Же самое Все как Будто бы никакой разницы между ссылкой в падник, да
Михаил Непряхин: то есть вот это вот Описание указателя
Михаил Непряхин: и так как в других языках как бы и
Михаил Непряхин: Тип называется сумочный Тип
Михаил Непряхин: сокращен гринград сынка
Михаил Непряхин: но и
Михаил Непряхин: когда вы говорите сынка
Михаил Непряхин: то Об этом Можно по Разному думать оно вызывает вопросы, что Засылка
Михаил Непряхин: и Тем Более когда
Михаил Непряхин: Ну, короче лучшее
Михаил Непряхин: говорить Всегда указатель потому Что Ну, в го как бы Есть указатели сымок нет Есть указатели
Михаил Непряхин: указатель Это Сумочный тип но он указатель
Михаил Непряхин: но вот по Сути То что вы описали так как в пайтоне То же самое
Михаил Непряхин: так Пролинг я очень понял Нужен например,
Михаил Непряхин: и Не, помню в каком Там Языке горчат То ли
Михаил Непряхин: вот все есть около. Ссылки Или Нет в плюсах есть ссылки Или Нет вот короче не знаю с каким, языком где эта тема есть что как бы там сынка это просто, как бы алиас на как бы такое
Михаил Непряхин: такая Мягкая. Ссылка которая есть только вот как бы она здесь пока Программа, не запущена когда Программа, запустилась это все просто становится как бы копиями, это одно, и то же если она меняется где-то то Она везде меняется
Михаил Непряхин: то есть как бы это такая сущность которая
Михаил Непряхин: но вот в Голову. Такого Нет и Поэтому как бы
Михаил Непряхин: У нас Нет каких-то структур, которых Нет воронтайми У нас все равно все Представлено чем-то
Михаил Непряхин: и Поэтому как бы
Михаил Непряхин: конечно суть в том Что просто
Михаил Непряхин: Не, надо Называть указателей ссылка вот и все скажите говорите указатель и это будет как бы и профессиональнее и вас. Всегда и поймут и Вопросы, не будут возникать потому. Что типа
Михаил Непряхин: можно конечно поинтер перевести. Как ссылка но ведь, и для ссылок очень много слов и референдум. Как Бы ильинки там Еще Есть все эти
Михаил Непряхин: что там Еще есть, Еще что-то Подобное какие-то слова
Михаил Непряхин: а просылка Не очень понятна но напрямую в голландии короче да. Может просто запомнить что в Гоу нетсылок
Михаил Непряхин: для больших структур, дорогая операция, получается м интересный вопрос
Михаил Непряхин: вот сразу же ход мысли да смотрите значит
Михаил Непряхин: Раз, у нас в аргументах все копируется
Михаил Непряхин: то ведь Получается если структура будет большой то операция будет дорогой
Михаил Непряхин: по факту
Михаил Непряхин: она будет
Михаил Непряхин: как бы по памяти Действительно дорогой потому что Ну это Будет находиться на стекле и стекло больше
Михаил Непряхин: Но она Будет быстрее эта опираться потому что если вы хотите, скорость
Михаил Непряхин: То вы работаете без указателей
Михаил Непряхин: когда У вас Появляются указатели?
Михаил Непряхин: У вас Появляются ну? Во-первых надо провоцировать Раз, указатель значит в куче
Михаил Непряхин: надо провоцировать эту память она конечно там очень оптимально все сделана но все равно это долго это не просто взять на стыке там положить да и
Михаил Непряхин: ну не в этом проблема а проблема в том Что у нас горбачев лектор есть который эти указатели трекают
Михаил Непряхин: и потом их собирает а там есть топ за ворот и все остальное Поэтому чем вы Если У вас Нет Проблем. С Хранением памяти То есть. Там ваши объекты они Не очень большие вы в память Не упираетесь
Михаил Непряхин: То вообще Нет смысла а Там экономить и Там обязательно Использовать указатели. Только из Этой экономии
Михаил Непряхин: и в целом такая история что просто надо понимать что
Михаил Непряхин: вы почти Всегда, можете работать со значениями
Михаил Непряхин: и только Иногда очень редко с указателями просто когда люди приходят из других языков? Они по привычке как бы на типа Всегда, работают Указателями
Михаил Непряхин: и когда объявляют какую нибудь структуру Делают. Ее автоматом указателем
Михаил Непряхин: и соответственно Делают. Локацию в коробочку-лекторы ну во-первых Делают. Локацию в куче А потом горбушка лектор слез его собирает и если У вас много циклов то у вас большая нагрузка на горбушка лектор и если б вы просто бы, эту структуру сделали не по значению ой не по указателю по значению
Михаил Непряхин: да она бы здесь копировалась с Функцией функции, но это такие копейки я Там проводил тесты когда ну типа вот Порог когда уже надо делать, указатель он просто очень большой и по Сути можно запомнить что какая бы Ни была у вас структура
Михаил Непряхин: ну, в Принципе можно почти Всегда, ее Передавать просто по значению Но То есть копировать каждый Раз с Функцией функции
Михаил Непряхин: и только если У вас какой-то массив который типа там уже
Михаил Непряхин: больше. Мегабайта и
Михаил Непряхин: эээ
Михаил Непряхин: концептуал
Михаил Непряхин: ну вот здесь Опять же используется референдум вот да вот видите как Бы Алиас
Михаил Непряхин: да
Михаил Непряхин: вот
Михаил Непряхин: короче говоря
Михаил Непряхин: важно понимать что да вот поинтер это значение это вэлью но это вэлью адреса в памяти где то ну либо в кучу ребятки чаще всего в кучу
Михаил Непряхин: вот и если вы используете сын кино какие нибудь на других языках бывает у вас здесь нету копирования Но У вас очень много Проблем из этого возникает а когда вы работаете с указателем вы сразу же избегаете Э
Михаил Непряхин: целого класса. Ошибок
Михаил Непряхин: Потому что
Михаил Непряхин: неспоставимая вам До этого рассказал историю про чистые функции, сай дефекты
Михаил Непряхин: понимаете а
Михаил Непряхин: сынка
Михаил Непряхин: она похожа вот на какую-то глобальную либо вокальную переменную То есть Это То Что может где-то Измениться и У вас тоже поменяется
Михаил Непряхин: а указатель
Михаил Непряхин: Он Где бы Ни Был Он Всегда точно указывает на одно, и То же место, То Есть ну, что указатель Это вот значение Это адрес ячейки памяти
Михаил Непряхин: и Поэтому
Михаил Непряхин: М-м почему как бы вообще как бы ссылки-то вот возникли и потому, что вы Экономите вот наверное копирование вы его Не совершаете и где-то вы ускоряете можете, ускорить
Михаил Непряхин: вы можете там очень много Функций написать и не будете за это платить а в гоу эти восемь бай тем не менее вы скопируете когда будете вызывать функцию
Михаил Непряхин: и это как бы То место где его отголо чуть медленнее на самом деле фигнянтом это не так важно но зато
Михаил Непряхин: а вот это как бы улучшение благодаря которому Мы получаем опять же вот Эти, вот Чистые функции Без сай дефектов
Михаил Непряхин: яиц беганцев целый класс ошибок
Михаил Непряхин: Не говорится как же показатели так да Что имеете в виду по ту сторону водоворот
Михаил Непряхин: короче говоря когда
Михаил Непряхин: У Нас происходит сборка мусором
Михаил Непряхин: когда мы начинаем юзать указатели вот Сейчас по указателю Будем говорить как Раз значит когда мы начинаем Ездить указатели
Михаил Непряхин: и авоцировать объекты в кучу
Михаил Непряхин: То вот и
Михаил Непряхин: каждые сколько-то Там ми. Ми. Микросекунд Включается гарбочкой Лектор
Михаил Непряхин: и У Него есть несколько стадий
Михаил Непряхин: значит ну Там по-моему четыре стадии основные
Михаил Непряхин: и ну какие у него этапы есть во Первых просто он ищет вот эти вот указатели, то есть он проходит по всем. Объектам в кучу и просто смотрит есть
Михаил Непряхин: указатель кто то указывает на него или нет
Михаил Непряхин: Если указателя нет Ну Если указатель есть он помешает ага указатель есть
Михаил Непряхин: а на каком-то этапе то есть есть этап просто Разметки Что. Вот указатель есть этап когда он трекает Что. Ага указателей не стало
Михаил Непряхин: есть этап когда он должен
Михаил Непряхин: Сделать стоп это ворлд
Михаил Непряхин: то есть э,
Михаил Непряхин: остановить
Михаил Непряхин: аа остановить выполнение, вообще всего
Михаил Непряхин: и и
Михаил Непряхин: привести ну Вот как бы очистить
Михаил Непряхин: очистить кучу
Михаил Непряхин: и есть Еще этапы Еще какие-то этапы но короче смысл в том что что-то можно делать параллельно но в горбочкой лекторе есть этап когда вот мы обязаны полностью остановить программу
Михаил Непряхин: и такие синхронизированные
Михаил Непряхин: однопоточно почистить память вот вот этот стоп двор, то есть он тоже максимально оптимально Сделан видите как бы Не вся Работа гарвардская лектора она происходит вот в синхронном режиме но тем Не Менее какая-то часть происходит Есть метрики
Михаил Непряхин: Которые отслеживают Сколько. Ну. Там графаний можно сделать Сколько. Секунд Мы провели вот в этом стоп-золорде то Есть
Михаил Непряхин: Сколько секунд Программа, вообще не. Работала мне соответственно чем. У вас больше Объектов куча чем. У вас больше гармочка лектор дольше работает Тем у вас больше будет сто долларов, и это как бы как такой замкнутый круг
Михаил Непряхин: что чем больше Объектов тем больше нагрузка на карпочкой лектор то ли
Михаил Непряхин: Поэтому и
Михаил Непряхин: Вот и чаще всего конечно Там Программа, Она Не работает на Пределе своих возможностей Но если. Вдруг вам надо будет, Это Выжать то нужно будет э избегать локаций избегать
Михаил Непряхин: указатели
Михаил Непряхин: так какие же проблемы есть горбачев-ректор и в исполнении джаэля на голландии
Михаил Непряхин: он имеет всего лишь одну настройку которая По Сути отвечает за То
Михаил Непряхин: при заполнении
Михаил Непряхин: в процентах какого объема памяти коробочка лектор начнет работать
Михаил Непряхин: и из последних новостей вот в версии один двадцать Пять вы Сейчас которые актуально экспериментально добавили еще один бэк-энд для гарпочка лектора, То есть думаю стараются шас его Еще оптимизировать и Говорят о каких-то десятках процентов которые они тоже выжили
Михаил Непряхин: то есть в Принципе в гоу очень и производство просматривается что что-то сделано лишь бы как-нибудь чтобы оно работало
Михаил Непряхин: и Потом проходит время не ломая обратной совместимости что-то улучшается вот То же самое недавно с мамой было что-то они Там подтнили и постоянно постоянно планировщик тоже улучшают
Михаил Непряхин: но дипломатично Сейчас гоу он на уровне раста то есть это самый быстрый планировщик от кооперативной и многозадачности это не какой-то примитивный иван, клуб. Там из
Михаил Непряхин: тот наверное из шарпа Или из байдена который был Там пределан в конце ну когда уже язык, был сформирован его просто сбоку придерживали то же самое власти то есть голод единственный язык, который был изначально Продуман вот Так чтобы он
Михаил Непряхин: очень эффективно Утилизировал все ядра равномерно при этом делу и был вот синхронным из Коробки то Есть Без всякого дополнительного синтезиса просто все работает синхрона тоже целый урок это Мы Посвятим
Михаил Непряхин: разберемся досконально как это работает
Михаил Непряхин: Так. Указатели значит Что Мы можем делать
Михаил Непряхин: с Указателями
Михаил Непряхин: а Во-первых значит
Михаил Непряхин: если Вы видите тип со звездочкой это указать То любой тип перед которым видите Звездочку
Михаил Непряхин: это указатель
Михаил Непряхин: вот так. Вот это будет просто инт на стэке
Михаил Непряхин: а вот так вот это будет указатель на стеке а инт будет
Михаил Непряхин: куча и указатель будет Указывать на этот инт
Михаил Непряхин: дефолт на Зервелью Указателя тоже нел. Мы только что смотрели что у функции зеровой винил Ну потому что функция это указатель под капотом
Михаил Непряхин: а указатель зеровелью имеет нил это тоже небольшой Тюнинг, По Сравнению с плюсами силь когда под указателем может быть Мусор здесь мусора Не может быть здесь э будет либо ним либо какое-то Инициатизированное значение
Михаил Непряхин: и и
Михаил Непряхин: еще смотрите какая особенность Интересная
Михаил Непряхин: индексия
Михаил Непряхин: аа когда я вам вот показывал про функции
Михаил Непряхин: вот Мы объявляем функцию
Михаил Непряхин: смотрите здесь Нет звездочки
Михаил Непряхин: То, есть как бы это
Михаил Непряхин: просто, тип указывается, и все ну точно так же могли Бы вот фанку указать
Михаил Непряхин: А
Михаил Непряхин: просто указали Бы Панк
Михаил Непряхин: и вот здесь мы звездочки Не Видим хотя на самом деле Она
Михаил Непряхин: ну есть потому что функция это указатель в памяти
Михаил Непряхин: и таких типов еще несколько есть об этом тоже тут поговорим когда вроде бы и смотришь вроде бы Не указатель на самом деле указатель
Михаил Непряхин: но вгу как бы важно понимать вот мы Сейчас работаем с указателем Или нес указателем потому Что
Михаил Непряхин: если у нас есть указатель и значит Мы его передаем в любое место
Михаил Непряхин: и если Еще кто то владеет этим указателем он его меняет из другого из другого какого то места а у нас значение меняется
Михаил Непряхин: Поэтому как бы с указателями надо ну Во-первых надо проверять не ли он потому что. Он может быть не вам
Михаил Непряхин: и надо понимать что. Тоже могут быть сайт-эффекты если мы получили указатель а им, Еще кто-то владеет то тот кто может его поменять и мы получим сайт. Дефект
Михаил Непряхин: а как взять указатель от чего угодно значит мы Объявляем что угодно например, число
Михаил Непряхин: и синтаксис взятия указателя
Михаил Непряхин: это коммерсантъ
Михаил Непряхин: и у нас по Сути есть всего для работы с указателем вот два варианта синдроксиса
Михаил Непряхин: это звездочка по которой? Мы ну, которая участвует в Типе
Михаил Непряхин: и еще она участвует в операции Разименования
Михаил Непряхин: то есть как бы у звездочки Два назначения
Михаил Непряхин: а у персонажа одно это просто взять указательно что угодно
Михаил Непряхин: значит вот здесь мы берем указатель на икс
Михаил Непряхин: и теперь, в п у нас адрес переменной где Лежит икс
Михаил Непряхин: и вот это тот Случай когда видите у нас иксны стейки ап будет Указывать собственно тоже на стек то есть, они рядышком будут на стыке Лежать
Михаил Непряхин: а если Мы хотим, то есть, вот там она Сейчас внутри п
Михаил Непряхин: указатель на этот инт
Михаил Непряхин: Если Мы хотим, эээ достать Что Находится под указателем Мы Используем Звездочку для разименования Разименование указателя это значит Что Мы идем По адресу
Михаил Непряхин: Которые есть в Указателя и Берем То Что Там Находится и Помещаем
Михаил Непряхин: Это в переменную
Михаил Непряхин: если Мы посмотрим вот просто Что Там под указателем вот если, Мы сделаем при нтв
Михаил Непряхин: кто Там Будет вот это вот это адрес в памяти
Михаил Непряхин: и в Принципе даже Там посмотрев
Михаил Непряхин: адреса Там кто-то может даже понять в какой Области. Памяти Находится просто по Числам но вот Это кто на низком уровне хорошо. Разбирается то есть Понятно где примерно в каком Месте куча это Лежит, но это как бы так то есть по Сути это просто
Михаил Непряхин: число
Михаил Непряхин: адрес клетки где находится в памяти наше значение оно соответственно уникальное
Михаил Непряхин: и и
Михаил Непряхин: видите если Мы разименовываем
Михаил Непряхин: То Мы получаем вот это значение Которое Там Лежит
Михаил Непряхин: Так Давайте Нарисуем
Михаил Непряхин: так значит есть У нас допустим
Михаил Непряхин: опять. Же Давайте синдром!
Михаил Непряхин: А есть инт антон Лежит на а стекло
Михаил Непряхин: а
Михаил Непряхин: Мы Берем на него указатель
Михаил Непряхин: Через Э
Михаил Непряхин: Через интернет
Михаил Непряхин: и этот
Михаил Непряхин: и здесь у нас Будет то есть если. Здесь у нас реально Находится число
Михаил Непряхин: сорок два
Михаил Непряхин: то вот здесь у нас будет адрес
Михаил Непряхин: который указывает вот сюда вот
Михаил Непряхин: видите как бы куча Не, участвует мы указываем на собственно говоря на тот же самый стек
Михаил Непряхин: но часто в общем-то и мы можем Указывать в кучу то есть этот Же самый ин
Михаил Непряхин: он может и здесь провоцироваться. И спокойненько мы тоже, можем взять от него адрес и вот этот наш адрес будет указывать и в кучу и сюда сюда может указывать
Михаил Непряхин: а Если, Мы Хотим? Посмотреть то Есть Вот Мы работаем с этим Допустим Их Мы взяли
Михаил Непряхин: Вот Мы Сексом, работаем то Есть викс и викси у нас Лежит адрес
Михаил Непряхин: если. Мы с ним будем просто Работать как, есть то мы получим ну, по сути просто адрес мы с адресом ничего не можем сделать чтобы получить значение что, Там Внутри
Михаил Непряхин: нужно добавить звездочку киксу
Михаил Непряхин: и вот эта звездочка она означает, что, Мы перейдем по этому адресу и уже возьмем это значение и вот это уже будет звездочка икс это уже будет вот это значение
Михаил Непряхин: если мы хотим? Поменять то Мы Тоже. Просто пишем Звездочку Допустим сорок Два хотим? Заменить на восемь
Михаил Непряхин: Мы Тоже. Говорим что Звездочка икс все равно восемь и Вот тогда мы проходим по указателю и меняется Сорок. Два на восемь,
Михаил Непряхин: из Интересного
Михаил Непряхин: мы можем указать взять несколько Раз
Михаил Непряхин: Вот допустим взяли мэм.
Михаил Непряхин: Так значит Число равно восемь
Михаил Непряхин: Мы хотим, взять указатель но типа Назовем
Михаил Непряхин: указатель Мы Пишем коммерсантъ
Михаил Непряхин: от ай
Михаил Непряхин: полина тут конечно неудачно Получилось
Михаил Непряхин: эти сорок Два
Михаил Непряхин: громом персанта тай в п у нас указатель
Михаил Непряхин: на и
Михаил Непряхин: если Мы хотим, достать сорок Два то Мы должны сделать вот Так вот а у звезды шкап
Михаил Непряхин: мы можем взять еще Раз, указатель от указателя у нас в пэ так уже указатель мы еще Раз, делаем
Михаил Непряхин: а коммерсант отп
Михаил Непряхин: и у нас вот в этом
Михаил Непряхин: а в Этой переменной
Михаил Непряхин: получается, указатель вот на этот указатель
Михаил Непряхин: а этот указатель он указывает вот сюда
Михаил Непряхин: и если, мы сделаем один Раз звездочка пп то мы попадем сюда
Михаил Непряхин: и у нас здесь будет указатель
Михаил Непряхин: а если, мы хотим, прямо вот это вот получить то Мы должны сделать два раза звездочка пп
Михаил Непряхин: Мы можем отп еще Раз взять Указателей тогда три звездочки и
Михаил Непряхин: на Совбезах слава богу перестали Это Спрашивать Но такая Дикая ситуация, тоже бывает что вот много много звездочек показывает что У тебя будет Он короче Одна Звездочка
Михаил Непряхин: это один прыжок
Михаил Непряхин: По указателю
Михаил Непряхин: если Там будет если Вы три звездочки нарисуете а Там Реально указать Или Не будет То Ну, просто Ошибка Будет по-моему даже по-моему Эстетически Это проверится по-моему Программа, даже Не Скомпелируется
Михаил Непряхин: вот значит Берем викс Помещаем Сорок Два
Михаил Непряхин: тело имперсанта Икса в Ай у нас указатель
Михаил Непряхин: От? Этого Указателя Еще Раз, Берем указатель в джей указательно. И От? Этого джей Еще Раз, Берем указатель и в кей Сейчас указательно. Джи а в джи указатель Навелью
Михаил Непряхин: и чтобы если Мы посмотрим что в кей
Михаил Непряхин: в киеве указатель
Михаил Непряхин: что разименовываем к ней
Михаил Непряхин: Там опять, указатель
Михаил Непряхин: два раза разминовываем кей То есть два прыжка совершаем по указателю Там опять, указатель три раза
Михаил Непряхин: прыгаем по указателю одна звездочка Один прыжок По указателю
Михаил Непряхин: и наконец таки добираемся до того самого значения Внутри
Михаил Непряхин: Если, Мы его Сейчас хотим, поменять
Михаил Непряхин: на что-то другое
Михаил Непряхин: то мы делаем вот так вот
Михаил Непряхин: вот таким образом мы вот Это, значение поменяем на восемь
Михаил Непряхин: а так он даже не скомпелируется просто он Скажет типа что да Некуда прыгать. Там
Михаил Непряхин: то Есть Он тут Эстетически может проверить Что Это была ошибка на Этапе компиляции должны сконцентрироваться
Михаил Непряхин: и соответственно четыре может быть То есть можем
Михаил Непряхин: Еще взять От Этого маккея
Михаил Непряхин: Еще Один указатель и тогда. Чтобы Разименовать витя три раза он даже показывал что Нет Не дойдем еще четыре. Звездочки
Михаил Непряхин: То есть короче просто, читайте Звездочку как прыжок По указателю отпираться называться. Разименование
Михаил Непряхин: из-за чего часто бывают этички памяти утечки памяти это
Михаил Непряхин: просто, вот Мы не освобождаем память но это в гоу редко бывает то есть это прям тоже об этом поговорим отдельно
Михаил Непряхин: это редкое явление
Михаил Непряхин: напрофилированное профилирование сразу видно под что память течет довольно легко профилировать в Голову. Такие вещи на практике бывают Использования звезд как. Или только Для советов да практики не бывает Ну в продакшен коде у вас такого никогда не Будет
Михаил Непряхин: просто,
Михаил Непряхин: так как. Эта синтетика да ну то есть как бы так Нормально Люди не Делают то как бы Средний эстетический программист на гол, он вообще не понимает смысл звездочки что Это такое
Михаил Непряхин: а Звездочка Она видите Она в Трех местах принимает участие
Михаил Непряхин: в типе когда вы
Михаил Непряхин: используйте вот Этот, тип нравственный указатель указатель на инд Так и читается указательно Ин
Михаил Непряхин: второе место, Звездочка используется когда вы Хотите, прочитать вот как здесь Мы читаем Что Там под звездочкой кей один раз прыгаем По указателю
Михаил Непряхин: и третий вариант Использования когда Мы хотим, заменить изменить то Есть сперва допрыгать до этого места а потом То место поменять Что Там Находится
Михаил Непряхин: вот Звездочка Она вот такая сложная как Бы во вторых местах Используют Синтезисе с коммерсандом все просто амперсант просто берет указатель на чего угодно вот что Там будет, в Этой переменной если Мы сделаем персона. Мы возьмем указатель на него
Михаил Непряхин: вот Поэтому
Михаил Непряхин: с коммерсантом все проще
Михаил Непряхин: ну и вообще как бы так как в жизни с этим не так много приходится работать то на собеседник Тут Можно реально потеряться потому что что-нибудь такое вот Спросят и
Михаил Непряхин: важно понимать эти прыжки
Михаил Непряхин: Так а зачем эта матрешка с указателем в чем смысл Проигрывать этим просто показываю как это работает смысла особо Нет но работает вот Так
Михаил Непряхин: вдруг Промежуточный указатель Будет Или если попытаться, взять указатель на постоянный указатель вот Не упойнт Ресепшен потому что мы Не Можем Разменовать ним указатель
Михаил Непряхин: но в этом Случае если вы тут, где-то Не упрям укажете
Михаил Непряхин: он скорее всего Не Скомпелируется даже
Михаил Непряхин: я надеюсь что это только для приколов да это только для приколов на собеседниках и плюс хороший пример чтобы понять как это черт побери работает потому, что без вот без этого если вот я бы вам это не показал и круче Не доходит что звездочка это один прыжок по указателю
Михаил Непряхин: что-то Разве что такое разименование да кто-то взять указатель Перейти по нему, посмотреть что там
Михаил Непряхин: или заменить то что там было
Михаил Непряхин: а локации в бою будет разбирать
Михаил Непряхин: провокацию ну вообще как бы смотрите считайте так. Видите указатель
Михаил Непряхин: считайте что скорее всего свободная локация то есть, девяносто девять процентов вы будете Иметь дело с локацией Поэтому если не хотите. Локации и Не используйте указатели
Михаил Непряхин: а ну почти Всегда, Можно написать программу без указателей то есть видите как бы
Михаил Непряхин: если вы видите перед Собой указатель
Михаил Непряхин: во Первых вы Не, можете сказать он у вас уникальный или Нет
Михаил Непряхин: потому что ну кто вам даст гарантию вот у вас есть указатель икс а вдруг еще кто-то туда. Указывает вы Сейчас понадеялись на это значение Которое Там Оно взялось,
Михаил Непряхин: первый момент Второй момент он может быть нил а вдруг нил. Надо проверять или вы уверены что не ну не упомянутый рецепт Поэтому часто и бывает
Михаил Непряхин: вот третий момент авокации Видите указатель почти сто процентов. Его Провокация ну как вы так считаете
Михаил Непряхин: если возвращаете указатели. Функции сто процентов. Локаций
Михаил Непряхин: вот и
Михаил Непряхин: с указателем Просто сложнее работать потому Что
Михаил Непряхин: ну здесь вот надо понимать да надо понимать Что такое указатель
Михаил Непряхин: как Вы если Не понимаете то прямо-то Будет просто как непонятно что происходит
Михаил Непряхин: а если у вас вот значение ну все просто у вас значение здесь и Сейчас никто его поменять не может а ну немым быть не может оно точно в зеровелью если это Интона ноль в Крайнем случае то есть никакой паники не будет
Михаил Непряхин: и его никто не может поменять извне то есть если у вас перед Вами вэлью То, вот оно вот у вас оно скопировано откуда То, никто не может его там где то взять и поменять а у вас оно взяло и Изменилось
Михаил Непряхин: и Поэтому вот как бы Тоже указатель он изначально был как бы как инструмент
Михаил Непряхин: но так как люди приходят с других языков
Михаил Непряхин: а там они привыкли работать указателями ну потому что вот это вот мужик Пирум память Там Это Же дорого хотя на самом деле Нет вот и Поэтому Повсеместно когда объявляется какая-нибудь структура Она прямо, по дефолту делается указателем например,
Михаил Непряхин: здесь, вот юзер
Михаил Непряхин: вот видите вот так вот его создать вот это вот по Значению да вот можем взять от него указатель и вот в п уже будет указатель на него на юзера
Михаил Непряхин: но кошники почти все вот пишут вот так вот Всегда то, есть объявляется Ммм
Михаил Непряхин: ну структура сразу инициируется Значениями
Михаил Непряхин: и берется на нее указатель и в п у нас уже указатель
Михаил Непряхин: и так работают все новички
Михаил Непряхин: потому что Там дальше Мы будем разбираться Почему иногда вот указатель обязательно требуется например, когда вы Там с энтрофейцами имеете дело
Михаил Непряхин: и у вас Есть
Михаил Непряхин: указательный
Михаил Непряхин: ли север У Метода об Этом тоже Поговорим
Михаил Непряхин: и а
Михаил Непряхин: там обязательно надо Передавать указатель и Поэтому на всякий Случай чтобы этих ошибок не было берут Всегда просто и берут указатель
Михаил Непряхин: есть ли перед Вами код
Михаил Непряхин: который вот прям виде Сигнатуры и там
Михаил Непряхин: Структуры Передаются по значению
Михаил Непряхин: это уже сигнал того что человек думающий он понимает как это работает он опытный
Михаил Непряхин: короче говоря это такой уже флажок уже хороший знак Что человек тут разобрался он понимает как это работает и так Далее Поэтому вот как бы у меня задача чтобы вы такими людьми Стали думающими которые понимают зачем Нужен указатель
Михаил Непряхин: Где он Нужен Где Можно Без Него обойтись
Михаил Непряхин: и вот все такое
Михаил Непряхин: еще есть устаревший индекс Ну как как бы вы его можете стоять в библиотеках где нибудь и но Так никто в современном гой не пишет то есть ин ю
Михаил Непряхин: берет указатель на структуру то Есть просто возвращается
Михаил Непряхин: принимается Обычный, Тип возвращается указатель то Есть вот Это вот
Михаил Непряхин: то же самое что
Михаил Непряхин: а и
Михаил Непряхин: шам
Михаил Непряхин: вот то же самое что, вот это вот
Михаил Непряхин: вот это одно, и то же то есть это как бы типа сахар вот над этим но народ полюбил. Вот этот коммерсант и в Принципе как бы это классическое Создание структуры в голландии
Михаил Непряхин: По указателю
Михаил Непряхин: чем, Отличается нацист пойнтер от обыкновенного указателя
Михаил Непряхин: Но ван Цифр Ансель поинтер это то Что вот внутри таких Структур как
Михаил Непряхин: то Есть Ансамбль пойнтер он
Михаил Непряхин: Давайте так смотрите несмотря на То что указатель Это
Михаил Непряхин: довольно Опасная структура опасный тип Ну почему опасный потому что Может быть нил
Михаил Непряхин: да
Михаил Непряхин: Но вот когда вы Работаете с обычным указателем
Михаил Непряхин: ну вот как Здесь да
Михаил Непряхин: У нас Есть гарантия
Михаил Непряхин: Что Что
Михаил Непряхин: п
Михаил Непряхин: обязательно Инициатива как Минимум нилом То Есть Она не может быть каким-то мусором или
Михаил Непряхин: неинициализированной памятью
Михаил Непряхин: То есть там к ним Как минимум либо ним либо какое То значение
Михаил Непряхин: ан сейф Поинтер Это Ну как видно из Названия ансев Это небезопасный указатель
Михаил Непряхин: без Гарантий
Михаил Непряхин: То Есть там может быть что угодно там может быть мусор
Михаил Непряхин: То есть. Если вы используете обычный указатель там не может быть мусора и Не может быть неопределенного поведения как все или плюсах
Михаил Непряхин: когда вы используете и
Михаил Непряхин: ну вернее нет сейф По интернету
Михаил Непряхин: а
Михаил Непряхин: Не помню о сейф ненсейф там в структуре по-моему просто поинтер короче говоря это Структура которая нужна для низкого уровня оптимизации используется в библиотеках и Мы в Обычной Жизни с Ним Дела Никогда не имеем Это указатель без Гарантий Там может быть мусор
Михаил Непряхин: в однойной книжке советовали не пользоваться. Указателями если Разменивать статуну меньше Я вот проверял Я тоже проверял вот Я вам сказал что
Михаил Непряхин: и копирования быстрее безопаснее это факт то есть если у вас меньше одного мегабайта не придумывайте и
Михаил Непряхин: в фигня, это все Прям можете спокойненько Передавать по значению функцию Да это скопируется скопируется офигеть один мегабайт но это само Будет Быстрее Чем, если вы Будете Создавать указатель
Михаил Непряхин: на этот Один. Мегабайт и Передавать указатель из Функций функцию потому что потом ну во Первых на локации вы теряете это долго и на Сборке мусора вы теряете
Михаил Непряхин: вот так вот это факт есть линтер который типа ругается когда и
Михаил Непряхин: важно понимать
Михаил Непряхин: что до Мегабайта не паритесь передавать по значению
Михаил Непряхин: пустая структура Метров интереса Нет пустая структура Она ничего не видит
Михаил Непряхин: фронтами потому Что Она указывает на текст в Область памяти которая ноль вот про пустую структуру тоже поговорим где она применяется
Михаил Непряхин: так и Что Что здесь еще не рассказал
Михаил Непряхин: так передача функцию вот смотрите значит у нас есть да есть у нас функция
Михаил Непряхин: функция принимает указатель на тинт
Михаил Непряхин: и возвращают тоже указательный ин
Михаил Непряхин: так мы здесь разименовываем его
Михаил Непряхин: и ну то есть печатаем Это значение и опять, же возвращаем его же короче
Михаил Непряхин: аа говорим значит Что их с равен Тринадцати и по указателю передаем в эту функцию
Михаил Непряхин: и и
Михаил Непряхин: так Мы здесь проверяем на нил
Михаил Непряхин: ну это короче я тут, писал про то что вот значит мессадж какой
Михаил Непряхин: если вы видите
Михаил Непряхин: вот несмотря даже в тему, функции.
Михаил Непряхин: Что. Функция возвращает указатель
Михаил Непряхин: это значит что. Там может быть нил
Михаил Непряхин: вот просто имеете дело с указателем
Михаил Непряхин: вы должны понимать что может прийти нил
Михаил Непряхин: и часто на это забивают
Михаил Непряхин: и Поэтому и случается неуполненный ресепшн
Михаил Непряхин: Поэтому и
Михаил Непряхин: каждый Раз гошень вы будете проверять на него вы что-нибудь и каждый раз проявляет на него уж так никто не делает
Михаил Непряхин: ну вот если бы
Михаил Непряхин: эта функция Возвращала бы инд
Михаил Непряхин: То вам Это действие не нужно То есть как бы если вы работаете не с указателями а просто со значениями
Михаил Непряхин: Вы исключаете вас ошибок Не Упойнт ресепшен
Михаил Непряхин: Вы Можете. Официально Лениться и Не писать эту проверку на Нее потому что она Не нужна Там все равно зарабатываю никакой паники не будет
Михаил Непряхин: и это
Михаил Непряхин: хорошо.
Михаил Непряхин: Значит это первый момент
Михаил Непряхин: и и
Михаил Непряхин: вот здесь, вот сатну вот да если, вы здесь разменуете указатель и не проверили что он
Михаил Непряхин: даниил. То будет здесь ошибка разименования
Михаил Непряхин: и когда вы
Михаил Непряхин: видите функцию ну а может быть длинная да какая то, и вы видите что вам приходит указатель
Михаил Непряхин: а по-хорошему вот вы его должны здесь проверить
Михаил Непряхин: вы его должны проверить потому, что
Михаил Непряхин: кто вам может гарантировать что там ни нил, там может быть нил, если, там будет ним вот здесь при его разименовании вы получите неупланетный рецепт
Михаил Непряхин: то есть вот если вы не будете его разменовывать
Михаил Непряхин: то ну. Все Окей как бы ошибка происходит в момент разименования ну. То есть Что происходит
Михаил Непряхин: а вы говорите значит идим
Михаил Непряхин: а я знаю это указатель
Михаил Непряхин: сходи по нему разминай
Михаил Непряхин: и дай мне то Что Там Находится под ним логушка пытается это сделать
Михаил Непряхин: и Нет никакой проверки вронтами То, Есть вот вот вот у вас такая ситуация, Мы Эстетически это проверить Не, можем это происходит в ронтайме пока Мы не сходим по Нему и не проверим что Там
Михаил Непряхин: Мы и
Михаил Непряхин: а да проблема не то что ничего Не отменил, Мы получаем здесь ошибку опять, же
Михаил Непряхин: власти это исправили и власти такой ситуации быть Не может то есть, вот как бы раст он вот на
Михаил Непряхин: указателей Дал больше Гарантий но Какой ценой
Михаил Непряхин: катастрофической ценой Там вообще невозможно ничего быстро, написать Там скованно руками и ногами этим бором чакером Поэтому как бы вот в Голову. Здесь как бы Золотая середина
Михаил Непряхин: с Указателями, Что это указатель с Гарантиями Что Не может быть неопределенного поведения То есть вы ну как бы гол и язык безопасный вы Не можете
Михаил Непряхин: и из-за указателя Там и
Михаил Непряхин: а но видите мы платим Этой ценой тем что мы либо должны проверять на ним пойнтер
Михаил Непряхин: а ну вот вот Эту проверку Делать, либо иногда ловить паники если, Мы это Не делаем Но если, Вы просто Не Используете указатели а это Возможно,
Михаил Непряхин: То У вас исключается этот класс ошибок Вы Всегда можете ну вот здесь взять указатель если, возвращается кказатель вы Всегда, понимаете Что Там либо ноль либо Что то
Михаил Непряхин: этот ноль естественно. Мы можем напечатать можем им воспользоваться. Это ведь значение мы только снимом не можем работать
Михаил Непряхин: и все у нас хорошо
Михаил Непряхин: Если с винтами как вроде бы очевидно и все понятно, То вот со структурами
Михаил Непряхин: а уже Не так.
Михаил Непряхин: А потому что вы будете повсеместно
Михаил Непряхин: видеть э вот эту историю что люди почему-то а у меня там Юзер, уже
Михаил Непряхин: езда,
Михаил Непряхин: люди почему то упорно вот так вот повсеместно принимают в аргументах указатель но опять же под предлогом того что
Михаил Непряхин: я там типа экономлю чего-то там еще чего-то да ну, как бы, какие-то тараканы есть в голове соображения
Михаил Непряхин: вот но вы просто берете
Михаил Непряхин: и работаете вот так вот без указателя
Михаил Непряхин: и у вас почти Всегда, все хорошо,
Михаил Непряхин: а там где нужен указатель ну так и быть вы на него отдельно. Возьмете передадите Куда то где этот указатель Реально нужен
Михаил Непряхин: вот
Михаил Непряхин: в мгу если поттер указывает на структуру можно обращаться так
Михаил Непряхин: Окей без века перп
Михаил Непряхин: да потому Что тут еще прикол, в том Что когда У вас
Михаил Непряхин: вы работаете со Структурой по указателю
Михаил Непряхин: То У вас
Михаил Непряхин: а и
Михаил Непряхин: нету Явного Разименования, в структуре
Михаил Непряхин: То есть вот Если синдром
Михаил Непряхин: Сейчас найдем пожалуйста, минт
Михаил Непряхин: вот синтом нам надо обязательно эту Звездочку использовать
Михаил Непряхин: Со структурами оно Автоматически разименовывается и когда вы работаете, Со структурами У вас вот Этой звездочки Нет
Михаил Непряхин: Мы тоже еще на это посмотрим
Михаил Непряхин: как, когда будем разбираться разбираться с северами по указателю по значению
Михаил Непряхин: тоже большая тема и
Михаил Непряхин: беда в том что вот много где этот указатель опущен
Михаил Непряхин: например, вот у нас Есть папа
Михаил Непряхин: смотрим на
Михаил Непряхин: тип мапы вот это тип
Михаил Непряхин: реально это указатель в памяти это указатель у нас М Это указатель
Михаил Непряхин: и Раньше, вот здесь была Звездочка
Михаил Непряхин: Но Ее
Михаил Непряхин: упразднили Потому Что Ну, мама Это Всегда указатель чуть Теперь Эту Звездочку сделать Поэтому ее опустили и вот вы смотрите на Это а Это указатель а не видно Что Это указатель
Михаил Непряхин: То же самое про функцию когда вы Объявляете функцию звездочка есть а ее не видно
Михаил Непряхин: То же самое с свайсом вы смотрите на свайс разве видно Что Это указатель Нет не видно а Реально. Структура указать ну да там во франции в понятых правильно свайся а Реально. Структура с лайса она выглядит как указатель
Михаил Непряхин: и еще два поля леника пасе и реально это указатель то есть когда вы смотрите на это вы должны понимать что Там внутри указатель
Михаил Непряхин: аа то же самое с интерфейсом
Михаил Непряхин: а
Михаил Непряхин: со стренгой стринга это указатель но когда вы смотрите на тип стрингу э не видно Что Это указатель
Михаил Непряхин: с антрофейсом То же самое
Михаил Непряхин: с канавом
Михаил Непряхин: ну вот и из функции недавно рассказал
Михаил Непряхин: вот Поэтому вот эта вот тема в гоу Что является указателем а Что указателем Не является она важна
Михаил Непряхин: потому Что она как бы ну вот базовая то есть как бы вот там из каких-то Сложных. Тем Еще Которые в остались ну вот с Асфальтсом, Разобраться да Но она такая Как бы Не такая сложная ну Что ссылается есть в других языках академические массивы
Михаил Непряхин: а по Сути осталась разобраться только с и
Михаил Непряхин: и вот самая сложная тема топ один, в гоу Она именно связана с тем что Является указателем что Нет
Михаил Непряхин: как они себя ведут
Михаил Непряхин: а как типа устроена на низком Уровне
Михаил Непряхин: и вот у меня здесь есть шпаргалка как Раз для того Чтобы посмотреть и
Михаил Непряхин: у нас есть три толстых указателя это Слайсы там три поля
Михаил Непряхин: стринга
Михаил Непряхин: там два поля указатель и длина
Михаил Непряхин: интерфейс там два поля Это указатель назначения и указатель на таблицу Виртуальных методов
Михаил Непряхин: ну. Сам указатель понятно Это есть указатель
Михаил Непряхин: мапа это просто указатель намапу
Михаил Непряхин: канал это указательный канал
Михаил Непряхин: функция
Михаил Непряхин: это имеется в виду анонимная функция это указательную Функцию,
Михаил Непряхин: и
Михаил Непряхин: вот это вот
Михаил Непряхин: э прямо база которая как бы конечная не очень большая
Михаил Непряхин: но с ней надо разобраться один Раз, и просто ее понять и не возвращаться к этому
Михаил Непряхин: вот и мы еще будем разговаривать про структуры то есть вот мы Сейчас. Поговорили просто про простые типы
Михаил Непряхин: и также Поговорим про структуры с методами потому Что методы у структуры тоже бывают по указателю а и по значению и вот там прямо
Михаил Непряхин: песня какая Сложная тема потому что там тоже упраздняется вот эта звездочка
Михаил Непряхин: Так канал инфраструктуру когда мы структуру передаем функцию безуказателен структуры копируются
Михаил Непряхин: когда все таки необходимо Использовать указатели в параметрах функции. Когда это Обосновано когда структура Более одного негабайта и когда хочу ну да во-первых когда структура Более одного мегабайта
Михаил Непряхин: но такое бывает Очень редко Но вот Например, и когда хочу функции поменять значение структуры вне функций,
Михаил Непряхин: ну как бы да
Михаил Непряхин: Но Например, вот вы когда с мамой работаете
Михаил Непряхин: ну вот дома подойдем
Михаил Непряхин: Хашмапа
Михаил Непряхин: если вы Куда, то передали хэшмапу
Михаил Непряхин: вы просто понимаете Что. Хэшмапа это указательный кошмапу если вы куда-то передали этот указатель ну. Кто угодно его меняет и Ваша, кошма поменяется
Михаил Непряхин: и Ну, это Сайт. Эффект да Начнем с этого что У вас уже появляется вот это вот
Михаил Непряхин: вы должны контролировать кто еще владеет указателем
Михаил Непряхин: вы должны проверять на нил,
Михаил Непряхин: значит ну Давайте так подумаем когда нам нужно все-таки работать по указателю
Михаил Непряхин: Кроме больших. Структур,
Михаил Непряхин: когда мы имеем дело с интерфейсами вот как бы, эта тема с указательными типами Она появилась потому что у нас есть Интерфейсы то есть у нас в гол есть полиморфизм
Михаил Непряхин: и полиморфизм Реализован в гол Через интерфейсы
Михаил Непряхин: и для того чтобы Вызывать
Михаил Непряхин: Сейчас сложно Скажу. Но кто, Поймет тот примет кто, Нет еще отвечая на Вопрос для того чтобы
Михаил Непряхин: У структуры Вызвать
Михаил Непряхин: метод по указателю
Михаил Непряхин: нужно его обязательное авентрофейс передать по указателю
Михаил Непряхин: может если вы не передадите его по указатель То он не передаст компилятор не Даст
Михаил Непряхин: и вот Там возникают
Михаил Непряхин: указатели,
Михаил Непряхин: То есть в целом как бы
Михаил Непряхин: Мы понимаем что если нам нужно какие-то патроны реализовать Мы какой-то полиморфизм хотим? Зарезать Мы хотим? Интерфейс зарезать Там появятся указатели неизбежно джинерики когда Мы дженерики бомбьюзы Там указатели появятся неизбежно по-другому работать Не будут
Михаил Непряхин: вот
Михаил Непряхин: и когда мы
Михаил Непряхин: не умеем программировать не умеем писать программу как дерево
Михаил Непряхин: когда у нас появляются как бы такие
Михаил Непряхин: а
Михаил Непряхин: когда появляется несколько мест
Михаил Непряхин: Которые могут поменять эту переменную когда есть какой-то стейт то есть в целом когда Программа написана не совсем корректно но у нас как бы программисты Не то чтобы хорошо уметь Писать программу Поэтому такие программы У нас и появляются да
Михаил Непряхин: то есть Поэтому я вам и говорю Что Не нужно вот этот локальное Переменное глобальное Переменное куда-то там Передавать а когда вы работаете с указателем вы этим и занимаетесь То есть У вас появляются вот Эти, сайты
Михаил Непряхин: и если, вы Один на проекте
Михаил Непряхин: То вы конечно обычно можете все заранее там как-то архитектуру Продумать и Написать так чтобы У вас никогда Эти указатели Не Появились Можно Все без указательно Писать
Михаил Непряхин: Но когда У вас несколько Человек в Команде Или Вы Работаете с легой сикодом да даже Не с Вегасе просто когда в Команде несколько Человек работают
Михаил Непряхин: Ты Смотришь на Кот и понимаешь Что Ты Не. Можешь эээ сделать изменения кроме как: Использовать указатель и Ты его используешь
Михаил Непряхин: То есть Как. Бы указатель он Нужен для решения ну, как:
Михаил Непряхин: третья. Как костырь какой-то да То есть когда мы Не Можем По-другому мы Юзам указатель и там Появляются указатели
Михаил Непряхин: вот а но Если, мы можем. Без Указателей то Мы конечно же с радостью Работаем без Указателей Особенно, абсурдно. У новичков. Видеть сталингу как указатель потому Что блин стренгатый так указатель уже
Михаил Непряхин: ты толстый указатель просто там Внутри еще есть длина
Михаил Непряхин: или инд как указатель
Михаил Непряхин: но и
Михаил Непряхин: в Одном месте это используется у нас Там есть приколы с жесонами когда Мы делаем стерилизацию десериализацию с ресоном.
Михаил Непряхин: Для того чтобы Отличить
Михаил Непряхин: было значение Или Оно зеровелью вот у нас же в чем проблема это появляется что вот мы вот получаем ноль в джейсоне вот из джейсона ичусь он превращаем в структуру видим ноль
Михаил Непряхин: вопрос
Михаил Непряхин: Это нам, прислали ноль
Михаил Непряхин: или Это значение по умолчанию то Есть значения не было но у нас оно ноль
Михаил Непряхин: и вот чтобы это Победить приходится инты использовать по указателю но это единственное Место, где Использование интапа указателю как бы, ну оправдано потому Что он по другому никак
Михаил Непряхин: потому что если вы используете по указателю инд
Михаил Непряхин: зеркалью нил,
Михаил Непряхин: соответственно если вы из джейсона, превращаете жизнь в структуру и видите ним это значит значения не было если, вы видите ноль значит значение было ноль все просто
Михаил Непряхин: вы можете отличить отсутствие, отсутствующее значение от значения по Умолчанию,
Михаил Непряхин: вот а вот в этом случае Вы не можете отличить получайте ноль ну и все как бы то, ли пользователь ноль прислал то, ли и пользователь ничего не прислал у вас ноль вот как бы это единственное место где указатели на простых типах оправданы
Михаил Непряхин: вот во всех остальных случаях конечно указатели появляются над у структур
Михаил Непряхин: но почти Всегда можно обойтись без указателей
Михаил Непряхин: Поэтому цель на самом деле не то что Всегда писать без Указателей
Михаил Непряхин: цель понимать
Михаил Непряхин: зачем Нужен указатель
Михаил Непряхин: то есть как бы вот именно как бы осознанно понимать зачем он Нужен
Михаил Непряхин: и и
Михаил Непряхин: уметь об, этом Разговаривать потому что если Вы начнете говорить об этом или как Бы Мы Не можем подготовиться на все собеседники, на все Вопросы, Собеседования,
Михаил Непряхин: как бы учить правильные Ответы
Михаил Непряхин: Э сложнее чем Просто блин Реально разобраться как оно работает
Михаил Непряхин: и когда вы понимаете как оно работает вы на любой вопрос и так ответите, вам не надо заучивать правильные Ответы
Михаил Непряхин: вот Поэтому есть случаи где проще выучить, правильный ответ но вот в этом случае и для работы и для собеседников проще все таки разобраться как оно работает
Михаил Непряхин: Поэтому прямо вот можете вот с указателями, вот просто поэкспериментировать посмотреть ну вот эти вот все приколы Со Многими Звездочками Тоже, Попробовать вот это вот посмотреть
Михаил Непряхин: а Оно короче говоря когда я рассказываю Вы вроде, бы слушаете Да ну понятно когда начинаешь с этим работать
Михаил Непряхин: удивляешься почему Так Не работают почему сяк Не работает вроде, бы вроде, все логично То Есть с этим надо прямо вот пережить и прочувствовать на себе
Михаил Непряхин: Так указательно свайся дело По Ночам Ну, это да это Тоже, это прикол лоу типа
Михаил Непряхин: тек когда вы видите когда вы увидите допустим у коллеги вот этот вот
Михаил Непряхин: вот допустим принимает
Михаил Непряхин: слайс
Михаил Непряхин: и если вы видитесь указатель ну типа офигеть прикол то есть у вас указатель но указатель
Михаил Непряхин: и ну
Михаил Непряхин: как бы конечно так Можно Можно и четыре указателя на обманой да но вот это вот это примерно то же самое как если, бы мы вот с двумя звездочками тут работали
Михаил Непряхин: понимаете иначе у Меня, то есть с двумя Звездочками как внук зачем зачем делать указательный указатель
Михаил Непряхин: вот Поэтому со слайсом мы Ну мы Еще тут в следующий Раз просвайся и поговорим подробно что это такое как с ними работать
Михаил Непряхин: вот ну, просто как бы видите вот это да вы как бы понимаете Внутри указатель просто с дополнительной Информацией с дополнительными Полями Но Думайте о нем как об указателе
Михаил Непряхин: как Будто бы вот здесь есть Звездочка
Михаил Непряхин: Так. Часто в Интервью, Ругают излишнего указателя Нет в том то и дело Что Даже
Михаил Непряхин: опытные гошники они Не Разобрались в свое, время с Этой темой
Михаил Непряхин: и они продолжают просто везде лепить указатели
Михаил Непряхин: потому Что
Михаил Непряхин: ну. Как бы
Михаил Непряхин: если вы просто везде используете указатели у вас просто все работает и все как бы ну так в основном пишут
Михаил Непряхин: то есть среднестатистическая Программа, на гол обмазана указателями
Михаил Непряхин: и и
Михаил Непряхин: о где то он
Михаил Непряхин: в дискотеке что, у них там горбочка электрик заваливался и они перешли на Раз, и вот у них там проблемы решились ну так наверное Обманывать все Было указателями как бы вот и нагрузка пошманный геройшколектор как бы и средняя программа да очень много Указателей используется
Михаил Непряхин: Поэтому как бы неизбежно если вы будете поддерживать чужие код вы с этими указателями Повсеместно Будет сталкиваться ну хотя бы свой код когда пишете просто включаете Голову.
Михаил Непряхин: Как бы вот ну надо или нет или можно обойтись
Михаил Непряхин: так Ко чем отличается толсток взяли эту общину я похож Из пропустил.
Михаил Непряхин: И толстый указатель это когда у нас
Михаил Непряхин: кроме указателя еще дополнительная поля есть но в следующий Раз посмотрим вот пример Толстого указателя слайс
Михаил Непряхин: слайс это структура
Михаил Непряхин: с указателем и двумя дополнительными полями
Михаил Непряхин: вот Это называется толстый указатель есть ли у нас просто указатель как в функции. Или в мапе
Михаил Непряхин: а То это тонкий указатель ну. Это обычный указатель не Говорят полностью указатель а вот если указатель Еще с дополнительными полями в структуре То Это толстый указатель и когда Мы его Куда То копируем
Михаил Непряхин: То происходит копирование всех полей
Михаил Непряхин: и Поэтому Нет смысла слайс Передавать по указателю потому, что вот это вот это Число это инт да можете про это думать как про инт
Михаил Непряхин: оно просто скопируется
Михаил Непряхин: и вы будете Иметь,
Михаил Непряхин: функции Внутри и
Михаил Непряхин: а вы будете Иметь Внутри и Так указатель на массив
Михаил Непряхин: и как бы все нормально не надо свадьбу показателю Передавать с Моей семьей указать
Михаил Непряхин: так
Михаил Непряхин: еврекция ю из мема ну вот это я не знаю
Михаил Непряхин: да то есть и
Михаил Непряхин: задержались вроде немного в общем смотрите подытоживая
Михаил Непряхин: и Критически важно не забить на тему, с указателями и таки разобраться с ними
Михаил Непряхин: и Мы еще к ним будем возвращаться Там ни одной недели лекции, потому что ну вот это вот есть гоу да как бы типов и их мало вот они все типы больше ничего нет и просто с ними надо разобраться один Раз и все и вы будете синьорным синьором просто через год
Михаил Непряхин: потому что если бы вы не разобрались с один Раз вначале с указателями Вы потом к ним Не вернетесь потому Что Ей стыдно Будет и Не надо Будет и вообще как бы лучше, об, этом не думать,
Михаил Непряхин: вот Ну и соответственно вам много денег никогда не Будут платить, потому, что вы не сможете синьорный собес пройти потому Что Там Это обязательно где То всплывет рано Или поздно
Михаил Непряхин: так.
Михаил Непряхин: С и
Михаил Непряхин: У задачки на дзе смотрите вы просто вот посмотрите как вот эта Работа. То Есть задачки потом еще будут прямо, вот собесовские задачки
Михаил Непряхин: но а
Михаил Непряхин: и и
Михаил Непряхин: по передавайте из функции функцию То есть лучше самим это пощупать потому что каких-то хороших. Задач Здесь невозможно придумать потому что они Есть для собеседников но как бы это мы и
Михаил Непряхин: вот а Пока деза какого-то хорошего ну тут, сложно придумать
Михаил Непряхин: получается проблемы мы используем указатели такие авокации Поэтому медленно и нагрузка намеров в коллектор стоят дефекты да потому, что. Любой кто еще владеет указателем чтобы его взять и изменить
Михаил Непряхин: и да до проверки на нил. Которую никто естественно не Делает
Михаил Непряхин: и Которые влекут нестабильное поведение программы из-за которых надо, больше писать тестов
Михаил Непряхин: потому что все линец. Ленятся проверять и
Михаил Непряхин: на нил, структуру как бы
Михаил Непряхин: по сути как бы вы если принимаете указатель
Михаил Непряхин: вы обязаны проверить на нее но в гоу
Михаил Непряхин: так не принято а на ним почти никогда никто не проверяет
Михаил Непряхин: какие бывают Вопросы, показания собеседника вот это вот вот это вот и еще там парочка Задач, потом их посмотрим потому Что они Там специфические и они Там с Энтрофейсами еще связаны
Михаил Непряхин: как же Дойдем
Михаил Непряхин: любишь указатель обеднева пытался писать если бы Это писали Но этого Не пишут
Михаил Непряхин: Так ладно все сегодня была Реально Сложная тема короче Спасибо сегодня со скрипом разве что. Напрямую что. Не поспорили ну да да да какая то жизнь впрочем не используется
Михаил Непряхин: ладно все давайте
Михаил Непряхин: на этом все
Михаил Непряхин: шум давайте пока.