Функциональное программирование от А до Я. ФП на JS. Монады, функторы, каррирование, композиция

Поделиться
HTML-код
  • Опубликовано: 9 май 2024
  • В этом видео мы поговорим про функциональное программирование на javascript. Разберем такие темы как: Декларативность, Чистые функции и сайд эффекты, Иммутабельность (неизменяемость), Функции первого класса, Функции высшего порядка, Композиция/конвейер, Частичное применение и каррирование, Chaining, Контейнеры, Функторы и аппликативные функторы, Монады, Спецификация Fantasy-Land
    Мой курс "Продвинутый Frontend. В production на React", скидка 20% - ulbitv.ru/frontend
    Таймкоды:
    00:00 ➝ Введение
    01:30 ➝ План на урок
    04:00 ➝ Что такое ФП? Сравнение с ООП
    07:20 ➝ Концепции ФП
    09:00 ➝ Декларативность vs императивность
    13:25 ➝ Чистые функции и сайд эффекты
    18:10 ➝ Иммутабельность (неизменяемость данных)
    22:40 ➝ Минусы мутабельности и преимущества иммутабельности
    24:20 ➝ Функции первого класса
    26:40 ➝ Функции высшего порядка
    31:20 ➝ Смысл концепций ФП
    33:10 ➝ Композиция (compose)
    37:00 ➝ Конвейер (pipe)
    37:45 ➝ Каррирование и частичное применение
    45:50 ➝ chaining (цепочки вызовов)
    46:40 ➝ Контейнеры
    52:05 ➝ Функторы и монады
    58:55 ➝ Аппликативные функторы
    01:03:10 ➝ Спецификация Fantasy land
    01:04:10 ➝ Другие монады (either, future, writer)
    01:06:40 ➝ Время ставить лайки и писать комментарии) всем спасибо!
    Ссылка на мой телеграм канал - t.me/ulbi_tv
    Поддержать меня и мой канал вы можете по ссылкам ниже.
    Patreon/boosty (доступ к бонусам) - boosty.to/ulbitv
    Qiwi кошелек - qiwi.com/n/BODYE821
    Яндекс деньги - yoomoney.ru/to/4100116193037469
  • НаукаНаука

Комментарии • 240

  • @fatcat4168
    @fatcat4168 16 дней назад +60

    Сегодня досрочно закрыл испытательный срок на своей первой работе фронтом 🎉🎉🎉 во многом благодаря Тимуру🎉🎉🎉, прошел почти весь курс, не дошел только до последнего раздела. Проходил ещё на первом потоке, у меня там была аватарка с вислоухим котом😺 когда прошел, на полгода забросил, но всё-таки взял себя в руки и устроился😊 всем удачи и верьте в себя!

    • @es7729
      @es7729 15 дней назад

      Мои поздравления! Красавчик!

    • @vladislavkomkov5178
      @vladislavkomkov5178 12 дней назад +1

      Хвастайся зп в 3 кириешки))

    • @webtensei2327
      @webtensei2327 11 дней назад

      @@vladislavkomkov5178так все с чего-то начинают)

    • @diamondserg-43
      @diamondserg-43 8 дней назад

      Молодец!

    • @arthurq7843
      @arthurq7843 2 дня назад

      Сколько опыта крутил?)

  • @ker4ik13
    @ker4ik13 16 дней назад +39

    Обожаю твои уроки. Нет никого, кто объяснял бы понятнее и интереснее

    • @UlbiTV
      @UlbiTV  16 дней назад +6

      Стараемся, спасиб)

    • @404Negative
      @404Negative 14 дней назад +2

      неет нееет никого кроме бога одного

  • @Kokurorokuko
    @Kokurorokuko 12 дней назад +13

    По-моему, на 51:00 f и g нужно поменять местами. Сначала применяется f (она должна быть внутри), а потом g.

  • @-Forever-Young-
    @-Forever-Young- 16 дней назад +31

    Сразу лайк! Нет сомнений в качестве

    • @LeonidPolyakov
      @LeonidPolyakov 16 дней назад +3

      Да, 100 процентов будет адекватно и информативно.

  • @dmitrykuskov6715
    @dmitrykuskov6715 11 дней назад +4

    Интересная тема для меня. В свое время проходил курс по Haskell, поэтому постараюсь дополнительно разъяснить про Монаду и Аппликативный функтор, если кому-то интересно, но не до конца понятно.
    1) Монада - это структура, являющаяся наследником Функтора, но для которой дополнительно реализован метод chain. В разных языках/библиотеках название может быть разным.
    chain очень похож на map, отличие в том, что передаваемая в метод chain функция возвращает не значение (как в случае с map), а сам контейнер, в который запаковано значение.
    Пример Монады, который прямо под носом, но не был в таком ключе упомянут в видео - это Array. Для него методом chain по своей сути является flatMap: ведь функция, передаваемая во flatMap возвращает сам контейнер - Array:
    const duplicate = (arr) => arr.flatMap((n) => [n, n]);
    duplicate([1,2,3]); // [1,1,2,2,3,3]
    ramdajs.com/docs/#chain
    Как видно из примера, Монада - это более мощный интерфейс, чем Функтор, потому что позволяет менять не только запакованные значения(в случае с map), но и структуру самого контейнера.
    При использовании Maybe как Монады мы можем преобразовать Maybe в Nothing (использую псевдо-код):
    Maybe.of(1).chain(() => Nothing); // Nothing
    Maybe.of(1).chain((n) => Maybe.of(n * 2)); // Maybe(2)
    Используя Maybe как Функтор, мы можем изменить только значение, но не сам контейнер:
    Maybe.of(1).map((n) => n * 2); // Maybe(2)
    Промис в некотором понимании можно использовать и как Функтор, и как Монаду:
    Promise.resolve(1).then((n) => n * 2);
    Promise.resolve(1).then((n) => Promise.resolve(n * 2));
    2) Если кратко говорить про Аппликативный функтор, то он нужен, чтобы применять обычную функцию к упакованным значениям. Важно, чтобы все аргументы функции были одного типа.
    Например, у нас есть функция сложения, работающая с примитивами:
    const sum = (a, b) => a + b;
    Но мы хотим сложить не просто 2 числа, а 2 числа, упакованных в Maybe, причем сделать это лаконично и переиспользуя функцию sum.
    Maybe является Аппликативным функтором, т.к. реализует метод ap. Поэтому можем решить задачу так:
    const maybeResult = liftA2(sum, maybe1, maybe2);
    Если хотя бы 1 из переданных Maybe окажется Nothing, то результат всего выражения будет Nothing: такое поведение прописано в реализации ap для Maybe, которая дергается внутри liftA2. Для других структур поведение может быть своим, главное, чтобы оно удовлетворяло законам Аппликативных функторов.
    3) Также можно упомянуть, что любая Монада является Аппликативным функтором, а любой Апликативный функтор является обычным Функтором. Это видно на схеме спецификации fantasy-land. На практике это означает, что если нам нужно объявить какую структуру Монадой, то нам достаточно реализовать только метод chain, а реализация методов ap и map будут выведены автоматически.

  • @vitalex9383
    @vitalex9383 15 дней назад +8

    Ролик вышел, как раз за час, до собеса. Решил быстро глянуть. И на собесе, спросили про функциональное программирование и функции высшего порядка. И я как выдал всю базу, которая есть в ролике, даже доп вопросов не задали😂. Спасибо Тимур за твой труд, за твои бесплатные и платный курсы.

  • @sidless3862
    @sidless3862 16 дней назад +4

    Вообще, когда только начинал изучение JavaScript, считал его именно функциональным языком. Да и по факту большую часть времени пишу в функциональном стиле, и люблю его больше чем ООП. По-моему на фронте в ООП пишут только Ангулярщики, но могу ошибаться. Спасибо за очень информативный ролик, как всегда лучший!

  • @midrala
    @midrala 14 дней назад +7

    Хочется сказать слова поддержки и выразить свое уважение к автору проделанную им работу. Спасибо Человек, ты делаешь этот мир лучше! Проделанная тобой работа помогает действительно стремящимся к знаниям людям получить их быстро и безболезненно, продолжай очень нравится. Творческих успехов и активной аудитории тебе!

    • @UlbiTV
      @UlbiTV  13 дней назад

      Спасибо за такие слова ❤️🙏

  • @Michael-bf7pm
    @Michael-bf7pm 16 дней назад +10

    Твой ролик про ООП был просто шикарен, поэтому я невероятно ждал видео про ФП! Спасибо большое, Тимур!

    • @UlbiTV
      @UlbiTV  16 дней назад +5

      Спасибо! Жду фидбек))

  • @user-kw8cq6cd6y
    @user-kw8cq6cd6y 16 дней назад +24

    Жду структурное программирование на Rust или Go))

    • @nikitatimofeenko9351
      @nikitatimofeenko9351 12 дней назад

      Поддерживаю, ждем структурное программирование с примерами и на Rust и на Go

    • @user-yq6vo5vb9p
      @user-yq6vo5vb9p 11 дней назад

      @@nikitatimofeenko9351 поддерживаю поддерживание, ждем структурное программирование с примерами и на Rust и на Go

  • @user-cd7iz2iv8h
    @user-cd7iz2iv8h 9 часов назад

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

  • @solovievss
    @solovievss 15 дней назад +2

    Очень наглядное руководство по ФП! Разработчики, поделитесь опытом, может кто-то использовал ФП у себя в проектах? У меня дальше carry,compose,map в рамках ramda и lodash дело не пошло. С ts типизацией очень громоздкий код получался.

  • @flame_____
    @flame_____ 2 дня назад

    Крутой ролик, теперь у меня есть понимание этих всех принципов

  • @aliicomua1369
    @aliicomua1369 15 дней назад

    Спасибо за контент. Всё равно на какую тему ролик от этого автора, главное что 100% это будет полезно.

  • @user-yt9he6ud5r
    @user-yt9he6ud5r 14 дней назад +1

    Фунцкиональный стиль в JS это богоугодное дело! Жду не дождусь когда в спецификацию JS добавят конвейерный (pipeline) оператор |>

    • @awenn2015
      @awenn2015 10 дней назад +1

      Я лично жду когда в js добавят выражение по типу этого (выражение раннего выхода как в котлинине)
      const a = 5
      ;((a: number) => {
      const b = a-5 || return false
      }) (a)
      Что бы не проверять ифами какую то тему и выходить в ифе

  • @ode2877
    @ode2877 8 дней назад +3

    Интересна штука особенно про монады, захотелось попробовать применять для избавления фигурных скобочек if error try catch и тд, единственное не хочется терять в производительности из за красоты, не знаю насколько v8 оптимизирует такие функциональные фокусы

  • @user-uk1cu2hm2f
    @user-uk1cu2hm2f 16 дней назад +5

    супер контент!!! ждал! спасибо за труд!

  • @adelinaromanova8353
    @adelinaromanova8353 16 дней назад +4

    Лайк! 🎉

  • @konstantinsologub9568
    @konstantinsologub9568 16 дней назад +4

    Не понимаю как я не подписался на тебя раньше, хотя просматривал твои ролики до этого момента. Очень доходчиво объясняете и отличная дикция!

    • @UlbiTV
      @UlbiTV  16 дней назад +2

      Спасибо!

  • @maratvaliev8642
    @maratvaliev8642 3 дня назад

    Аналог Конвейера в ООП можно считать паттерн Строитель (Builder). Также похожий подход можно увидеть в функции createSelector, библиотеки Redux-toolkit.

  • @falsetrue7910
    @falsetrue7910 16 дней назад +5

    Качество видео растет от ролика к ролику, смотрю почти каждый ролик и точно могу это сказать 😂 отличное введение в фп, но как ни крути, для полноценного фп надо писать не не js

  • @yohohowowowo9471
    @yohohowowowo9471 15 дней назад

    О, это для меня! Я, конечно, не программист, но иногда приходится писать код, причём в основном на Лиспе или VBA, где ООП не реализовано. И именно в Лиспе, функции - это основной и довольно мощный инструмент. Из-за специфики кода, при написании программы, сначала приходится прописывать все функции последовательно от самого высокого уровня вложенности до самого низкого.

  • @kowkavn2356
    @kowkavn2356 15 дней назад +1

    Лайк однозначно, коммент для продвижения, и вопрос по другой теме - снимаешь разбор Rx.js? Могу ошибаться, но она в стиле фп вроде. И как продолжение темы, или в принципе для расширения кругозора интересно услышать твое мнение и опыт в ней.

  • @tahrizade
    @tahrizade 15 дней назад +1

    ждем - про Микросервери , микрофронтенд И так далее 😊

  • @nikman5541
    @nikman5541 16 дней назад +3

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

  • @Roger-qj4wu
    @Roger-qj4wu 16 дней назад +5

    Спасибо, что продолжаешь давать нам ценный контент!

  • @MAKS-FISHER
    @MAKS-FISHER 9 дней назад

    Видно, что как всегда стараешься, спасибо тебе огромное, но я понял только поверхностно (всегда стараюсь твои уроки перематывать по "300" раз пока полностью все не пойму...), но досконально на таких примерах наверно и не нужно, а то мозг под плавится ))!!! Надеюсь, что когда будешь делать какие-то уроки с живым кодом, то будешь и вспоминать про этот урок приводя примеры с живым кодом, думаю, что не только я это ценю ))) !!! Желаю тебе вдохновения по более и ждем следующих видео.

  • @miRorshik
    @miRorshik 7 дней назад

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

  • @barbatage5078
    @barbatage5078 16 дней назад +3

    Юлби, жги! Мы тебя любим 🫶🏼 каждый ролик долгожданный!

    • @helenit4365
      @helenit4365 16 дней назад +3

      Да!!!✨️🌟🔥

  • @user-dw8lb8lc7u
    @user-dw8lb8lc7u 16 дней назад +3

    Спасибо ЮЛЬБИ!!!
    уникальный качественный контент

  • @user-gk1yb3vp4b
    @user-gk1yb3vp4b 3 дня назад

    Мозг взорван, но мне понравилось))) Продолжай сенсей

  • @awenn2015
    @awenn2015 10 дней назад

    2:32 Я хоть и давно в вебе (3 года в js) но последние 5 пунктов вообще хз что это такое, как будто из ассемблера что то))
    Хотя посмотрев ролик понимаешь что рано или поздно с опытом даже не зная этих заумных терминов сам приходишь к декларативности

  • @eunicsi
    @eunicsi 16 дней назад +5

    Лайк и комментарий для продвижения автоматически, спасибо!

  • @user-zb3fy2je8b
    @user-zb3fy2je8b 16 дней назад +4

    Тимур лучший, большое спасибо за видео. Твои уроки помогают разобраться лучше всего

  • @VolodymyrSirenko
    @VolodymyrSirenko 16 дней назад +4

    Для меня очень полезное видео, спасибо!

  • @user-rw3gf4te4e
    @user-rw3gf4te4e 16 дней назад +3

    просто шикарно!

  • @samiracle9852
    @samiracle9852 15 дней назад

    Как раз подумывал курс купить, как диплом допишу, но раз такая скидочка, то нельзя откладывать
    Ну и ролик топ, как обычно

  • @ammoney159
    @ammoney159 16 дней назад +4

    Хороший видос, апдейт по монтажу хороший, спасибо

  • @HaywasterChannel
    @HaywasterChannel 13 дней назад

    Блин, я искал буквально 3 дня назад видео по сравнению парадигм ООП и ФП, не нашел. И тут бабах! Очень кстати) Спасибо большое, Тимур!

  • @user-hy4qw4ki3o
    @user-hy4qw4ki3o 14 дней назад

    Привет! Видео класс! Подскажи где ты рисуешь видеоряд? Слайды и т.д.

  • @Bespokerug
    @Bespokerug 16 дней назад +3

    Спасибо за твои труды! Не мог бы ты сделать подобный ролик про паттерны проектирования?

    • @UlbiTV
      @UlbiTV  16 дней назад +2

      В todo есть такой ролик

  • @alexsibrin715
    @alexsibrin715 16 дней назад +3

    Дай бог тебе здоровья мужик

  • @lolimon58
    @lolimon58 16 дней назад +3

    Лайк префом. btw я scala разраб

  • @barbatage5078
    @barbatage5078 16 дней назад +4

    Сразу лайк не глядя! ❤

  • @abylaev8233
    @abylaev8233 16 дней назад +4

    like

  • @sattorerror
    @sattorerror 16 дней назад +4

    безусловно лайк!

  • @nk_77777
    @nk_77777 16 дней назад +5

    Лайк со старта)❤

  • @talantasanov4973
    @talantasanov4973 16 дней назад +5

    видео топ(пока не смотрел, но знаю это))

  • @Sershir
    @Sershir 16 дней назад +7

    Спасибо

  • @user-wu8zt4we5n
    @user-wu8zt4we5n 16 дней назад

    А ты видел nodejs со встроенным gpt? Такой забавный Франкенштейн, но выглядит круто: переход к коду программы на человеческом языке!

  • @givename48
    @givename48 14 дней назад

    Может для фана, ролик по Backend серверу на Haskell? Отличное расширение кругозора! (я просто адепт Haskell)

  • @yggllen
    @yggllen 15 дней назад

    В целом интересная теория, но со стороны большого опыта работы на Java с StreamApi, Function, Optional, Consumer и тп. в JS вся эта структура кажется сложнее, хотя плюс минус тоже самое. Для меня самое сложное было понять как работают кастомные хуки в реакте, как я понимаю это также все выходит из ФП, но так как в java нет прямой аналогии для меня это выглядело как магия

  • @musicthreads
    @musicthreads 16 дней назад +4

    Лайкос тебе, дружище, за работу!

  • @Aristockij
    @Aristockij 15 дней назад

    это что хоть такое-то? я неделю всасывал урок по вебпаку и тут нннныа и еще один видос подъехал! мне хотя бы половинку такой продуктивности

  • @user-frond-end_dev
    @user-frond-end_dev 16 дней назад +2

    Карта развития или учебы для самостоятельного изучения есть у тебя?

  • @victormog
    @victormog 16 дней назад +2

    Видео - просто бомбическое!
    Может развить его плейлистом с более конкретными и практическими примерами?..

  • @user-hu1gl5lw3p
    @user-hu1gl5lw3p 16 дней назад +4

    вижу новый видос ставлю лайк

  • @Ramosok
    @Ramosok 16 дней назад +3

    Огнище огненное!! супер контент! спасибо!

  • @yakut54
    @yakut54 16 дней назад +1

    Феноменально! Как и всегда. Снимаю шляпу!

  • @awenn2015
    @awenn2015 10 дней назад

    44:55 у меня вопрос, как типизировать такие каррированные функции? Тупо возвращать function и результат?

  • @dmitriynemkov1380
    @dmitriynemkov1380 16 дней назад +1

    В какой программе презентацию делаешь?

  • @KaHcTpykTap
    @KaHcTpykTap 16 дней назад +3

    Посмотрю потом, лайк поставил.

  • @WinchesterD
    @WinchesterD 15 дней назад

    Круто, спасибо за видео! 👍

  • @tesohi
    @tesohi 15 дней назад

    Господи, это превосходно!
    Я столько знаний получил с этого, мега круто! Причем как знаний по ФП, так и много-много знаний по js и лучшему пониманию того что происходит. А ещё мемоизация это лучший пример замыкания🤩
    Тимур, это превосходно, ваш курс стоит покупки более чем! 💯💯💯

  • @kristinavolk2660
    @kristinavolk2660 10 дней назад +1

    Спасибо огромнейшее за тонкость и глубину контента. Заставляет явно провернуться шестеренкам в голове 🤓 со шлейфом, что что-то понял ))
    Эстетично и со вкусом 🌹 считывается, что ты в теме не просто шаришь, знаешь концепции, но ещё и Чувствуешь 💛 гармонично ориентируешься, но и подставляешь себя под критику, чтобы динамически расширить познание и критического мышления, развить его живость, эластичность и остроту.
    Редкость.
    Ценно 🫶🏻

  • @Feniks20000
    @Feniks20000 15 дней назад

    Спасибо за ролик, как всегда, качественно и наглядно

  • @user-on4lv7lc9k
    @user-on4lv7lc9k 10 дней назад

    Хороший монтаж.
    Люблю твои видосы связанные с теорией, оч круто обьясняешь (любимый ролик про eventLoop )
    но вот видосы где ты пишешь код и обьясняешь мне не подходят, вообще не понимаю твоей подачи((

  • @psycho0sis
    @psycho0sis 16 дней назад +1

    очень интересно, спасибо!

  • @andrewkruchini8614
    @andrewkruchini8614 11 дней назад +1

    Отличное изложение. Только много опечаток. На 37:37 не выдержал.

  • @ada280202
    @ada280202 16 дней назад

    На 50:45 разве g и f справа от знака равенства не перепутаны?

  • @user-sc5qy2zw9s
    @user-sc5qy2zw9s 16 дней назад +2

    Можно ли считать reducer чистой функцией, если у него дефолтное значение - переменная, определенная выше

    • @UlbiTV
      @UlbiTV  16 дней назад +1

      Можно) это аргумент, такой же, просто с дефолтным значением, на чистоту не влияет

  • @grigoryveynin8553
    @grigoryveynin8553 14 дней назад +1

    Спасибо за ролик! Я не специалист в ФП. Понравилось объяснение функторов и монад. Кажется мир ФП может много чего интересного принести в решение рутинных задач)

  • @yarosav5396
    @yarosav5396 11 дней назад

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

  • @LenaFelica_songwriter
    @LenaFelica_songwriter 15 дней назад

    Супер, супер, супер !! Спасибо❤

  • @user-zk3bc1lf8k
    @user-zk3bc1lf8k 16 дней назад +4

    Лайк!!!!

  • @n1kaka
    @n1kaka 16 дней назад +1

    Сразу лайк и коммент, огромное спасибо за видео😊

  • @TarasovFrontDev
    @TarasovFrontDev 6 дней назад

    Про контейнеры на 48:00 я совсем не понял. Каким образом мы данные инкапсулировали, если они доступны через свойство инстанса?

  • @blatov
    @blatov 16 дней назад +4

    🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰

  • @inriinriinriinriinri
    @inriinriinriinriinri 14 дней назад

    Качество визуализации стремительно растёт! Куда приятнее и легче смотреть на анимации в красивых цветах, чем на скриншоты где что-то непонятное написано от руки) Очень интересный урок! Спасибо!

  • @TheArkan777
    @TheArkan777 16 дней назад +2

    15:18 5 * 5 * 5 = 125

    • @404Negative
      @404Negative 15 дней назад

      он же об этом и говорит, что MODIFIER могут поменять. неужели это не очевидно ?

  • @itproust
    @itproust 16 дней назад +4

    Топ)

  • @tuku_mann
    @tuku_mann 15 дней назад

    37:38 здесь опечатка на слайде или я не уловил мысль?

  • @olg3089
    @olg3089 16 дней назад +4

    Вот это тема

  • @user-gd4vi6fv1z
    @user-gd4vi6fv1z 14 дней назад

    Это ОЧЕНЬ классный ролик, спасибо огромное! действительно, ни где не встречала так четко структурированной информации.

  • @skyranor6854
    @skyranor6854 12 дней назад

    Спасибо за труд!

  • @03Rai
    @03Rai 13 дней назад

    благодарю ♡. топчик 😍

  • @crap2680
    @crap2680 14 дней назад

    Хорош, братан, контент в кайф, давай еще, ваще красавчик, можно вот этого вот почаще?

  • @alexstepanchhuk683
    @alexstepanchhuk683 11 дней назад

    Как всегда супер-годный контент!!!! Спасибо!

  • @nabijonazamov3695
    @nabijonazamov3695 5 дней назад

    Good mentor

  • @larrybluesky
    @larrybluesky 16 дней назад +1

    Perfect !

  • @awenn2015
    @awenn2015 10 дней назад

    21:56 ммм, пойду ка я перепишу функцию удаления ключей из объекта, а то там копирование не глубокое, представляю что было бы передай я туда сложных обьект))

  • @user-pw6gz6jh3i
    @user-pw6gz6jh3i 16 дней назад

    наконец-то достойная тема)

  • @VolodymyrChernigiv1300
    @VolodymyrChernigiv1300 15 дней назад +1

    Ого, нічого собі, оце крутяк. За такий контент треба донатить

  • @t-boxcollectionshop9621
    @t-boxcollectionshop9621 3 дня назад

    😘😘😘

  • @user-dn4ry3uw8i
    @user-dn4ry3uw8i 16 дней назад +1

    Вижу новое видео, ставлю лайк

  • @mr.pickles7853
    @mr.pickles7853 12 дней назад

    Думаю поступить в институт на программиста,что скажите?

  • @ublastbeat9165
    @ublastbeat9165 16 дней назад +4

    сюдыааа

  • @romanb7486
    @romanb7486 15 дней назад

    клааааааааааааааааааааааааааааааааасс

  • @user-kv9ur9hi4n
    @user-kv9ur9hi4n 10 дней назад

    на 19.09 функция меняет переданный в нее массив. ???

  • @tednaaa
    @tednaaa 15 дней назад

    капец крутой видос) примерно 2 года слышал постоянно в обсуждениях монады монады, не понимал что это вообще такое, а оказывается вон оно что) спасибо тебе добрый человек что объяснил)
    кстати, планируется ли в канале уроки по другим языкам по типу Rust, Go?