Сегодня досрочно закрыл испытательный срок на своей первой работе фронтом 🎉🎉🎉 во многом благодаря Тимуру🎉🎉🎉, прошел почти весь курс, не дошел только до последнего раздела. Проходил ещё на первом потоке, у меня там была аватарка с вислоухим котом😺 когда прошел, на полгода забросил, но всё-таки взял себя в руки и устроился😊 всем удачи и верьте в себя!
Ролик вышел, как раз за час, до собеса. Решил быстро глянуть. И на собесе, спросили про функциональное программирование и функции высшего порядка. И я как выдал всю базу, которая есть в ролике, даже доп вопросов не задали😂. Спасибо Тимур за твой труд, за твои бесплатные и платный курсы.
Хочется сказать слова поддержки и выразить свое уважение к автору проделанную им работу. Спасибо Человек, ты делаешь этот мир лучше! Проделанная тобой работа помогает действительно стремящимся к знаниям людям получить их быстро и безболезненно, продолжай очень нравится. Творческих успехов и активной аудитории тебе!
Вообще, когда только начинал изучение JavaScript, считал его именно функциональным языком. Да и по факту большую часть времени пишу в функциональном стиле, и люблю его больше чем ООП. По-моему на фронте в ООП пишут только Ангулярщики, но могу ошибаться. Спасибо за очень информативный ролик, как всегда лучший!
только начинаю изучать ФП, подскажите есть ли смысл переписать композицию (compose) так, чтобы она работала с промисами? часто надо обработать ответ от сервера, но композиция работает только с функциями.
Мегаспасибо за такой качественный контент🙏 Ты все очень доходчиво и понятно описываешь сложные термины, и благодаря тебе получается быть все более и более уверенным как в js так и в разработке/программировании в целом!)
Не устаю удивляться качеству контента! Тимур как всегда на высоте 😉 Кстати, очень хотел розобрать тему по "масштабирование Node.js приложений" либо "Docker - продвинутая контейнеризация" Кто "за" - лайк в поддержку
СПАСИБО ТЕБЕ ЗА ТО, ЧТО ТЫ - ГЕНИЙ, ФИЛАНТРОП И НАВЕРНЯКА ПРОСТОЙ МИЛЛИОНЕР! Здоровья тебе и всем твоим близким, таких бы как ты хотя-бы 1% и мы бы давно колонизировали всю Галактику.
Интересная тема для меня. В свое время проходил курс по 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 будут выведены автоматически.
Еще нужно для ясности подчеркнуть в чем отличия на практике. Упрощенно: Функторы позволяют выразить чистые вычисления в контексте. (в вычислениях можно производить вычисления) Аппликативные функторы позволяют выразить параллельные вычисления в контексте. (вычисления можно комбинировать) Монады позволяют выразить последовательные вычисления в контексте. (вычисления зависят от результатов предыдущих) Из этого, кстати, следует, что аппликативы можно статически исследовать, не интерпретируя (превратить в обычную структуру данных), в то время как с монадой - не прокатит. Ее придется вычислять. Т.е. если какой-нибудь Thread - не аппликатив, то соединить/синхронизировать (joinThread) два треда в результате гонки не получится. Если Thread - не монада, то дождаться выполнения треда, получить его результат, и запустить новый тред в зависимости от результата - не получится.
Автору большое спасибо за такой информативный ролик и качественную подачу материала. Очень качественно. Есть пару моментов, которые меня немного смутили. Если что, этими замечаниями я никак не хочу обидеть автора. Просто у меня есть некоторые сомнения в правильности некоторых моментов и хотелось бы, чтобы ответили кто-то из смотрящих или сам автор 31:46 - Вроде изначально автор склоняет к тому, что некорректно/не правильно делать данные мутабельными в таком случае, но в своем выводе (33:55) говорит "Делаем данные мутабельными". Я правильно понимаю, что это просто оговорка? 40:14 - Автор говорит что уменьшение аргументов достигается за счет замыкания - "с помощью механизма замыкания во внутреннюю функцию прокидывает client и запоминает это. Во втором блоке используем первую функцию, которая как бы запомнила client". Опять же я могу не правильно понимать, но это вроде не замыкание. clientHasRole не возвращает же функцию, которая запомнила cient внутри себя, а просто выполняет функцию userHasRole с параметром client, который видимо где-то вне функции находится (на сколько я понимаю это уже и не чистая функция). Я конечно больше предполагаю автор сократил блок кода на 1 строку и client все-таки создается внутри функции clientHasRole и "замыкается" внутри нее. Правильно ли понимаю? 43:28 - Как я понимаю, это не особо рабочий пример в плане логики. Ну то есть мы раз вызовем функцию Date.now() и запомнится (замкнется внутри logNow) эта дата конкретно в момент вызова функции Date.now(). А дальше все функции logCritical, logNormal и logMinor будут иметь одну и ту же дату и получается пример не очень правильный возможно. Ну как минимум он тут не показывает, что "вот круто получилось" с помощью каррирования, а наоборот ломает идею примера. Без даты было бы правильнее мне кажется
Дружище привет! Не по теме конечно и все же. Сегодня был первый собес и благодаря твоему видео про event loop у меня ответ от зубов отскакивал! Много где искал информацию про него, но у тебя один из самых доступных для понимания материал. Спасибо тебе, что записываешь такие ролики, продолжай в том же духе!
Качество видео растет от ролика к ролику, смотрю почти каждый ролик и точно могу это сказать 😂 отличное введение в фп, но как ни крути, для полноценного фп надо писать не не js
Спасибо автору, все очень качественно и интересно, отличный звук и видеоряд, ничего лишнего, лучший канал для начинающих разработчиков и не только для них.
Отличный ролик на самом деле. Я занимаюсь JS уже 3 года и в этом ролике я открыл для себя новые интересные применения функций. Они вроде бы и были логичными, но про них даже не думал
Я лично жду когда в js добавят выражение по типу этого (выражение раннего выхода как в котлинине) const a = 5 ;((a: number) => { const b = a-5 || return false }) (a) Что бы не проверять ифами какую то тему и выходить в ифе
Еще раз спасибо за обучающие видео. Делаю 2й проект уже за денежку, и прямо по новому переосмысливаю информацию по вью и авторизации. Если все получится - еще денежку занесу ))
Спасибо огромнейшее за тонкость и глубину контента. Заставляет явно провернуться шестеренкам в голове 🤓 со шлейфом, что что-то понял )) Эстетично и со вкусом 🌹 считывается, что ты в теме не просто шаришь, знаешь концепции, но ещё и Чувствуешь 💛 гармонично ориентируешься, но и подставляешь себя под критику, чтобы динамически расширить познание и критического мышления, развить его живость, эластичность и остроту. Редкость. Ценно 🫶🏻
Очень наглядное руководство по ФП! Разработчики, поделитесь опытом, может кто-то использовал ФП у себя в проектах? У меня дальше carry,compose,map в рамках ramda и lodash дело не пошло. С ts типизацией очень громоздкий код получался.
Лайк однозначно, коммент для продвижения, и вопрос по другой теме - снимаешь разбор Rx.js? Могу ошибаться, но она в стиле фп вроде. И как продолжение темы, или в принципе для расширения кругозора интересно услышать твое мнение и опыт в ней.
Интересна штука особенно про монады, захотелось попробовать применять для избавления фигурных скобочек if error try catch и тд, единственное не хочется терять в производительности из за красоты, не знаю насколько v8 оптимизирует такие функциональные фокусы
Видно, что как всегда стараешься, спасибо тебе огромное, но я понял только поверхностно (всегда стараюсь твои уроки перематывать по "300" раз пока полностью все не пойму...), но досконально на таких примерах наверно и не нужно, а то мозг под плавится ))!!! Надеюсь, что когда будешь делать какие-то уроки с живым кодом, то будешь и вспоминать про этот урок приводя примеры с живым кодом, думаю, что не только я это ценю ))) !!! Желаю тебе вдохновения по более и ждем следующих видео.
@UlbiTV Спасибо за полезные видео! Было бы интересно посмотреть видео на темы: 1. изменения настроек вебпака из сборки командой npx create-react-app. 2. Управление глобальным состоянием приложения, с помощью ApolloClient (для исключения использования другого state manager (типа redux) или контекста реакта). Т.е. управление кешем (через хуки или нормальзованными данными, возможно qraphql-codegen), объявление и управление локальными данными клиента (@client, writeQuery, makeVar, useReactiveVar). Интересно было бы посмотреть твое видение организации кода и управление состоянием.
Господи, это превосходно! Я столько знаний получил с этого, мега круто! Причем как знаний по ФП, так и много-много знаний по js и лучшему пониманию того что происходит. А ещё мемоизация это лучший пример замыкания🤩 Тимур, это превосходно, ваш курс стоит покупки более чем! 💯💯💯
Спасибо за ролик! Я не специалист в ФП. Понравилось объяснение функторов и монад. Кажется мир ФП может много чего интересного принести в решение рутинных задач)
О, это для меня! Я, конечно, не программист, но иногда приходится писать код, причём в основном на Лиспе или VBA, где ООП не реализовано. И именно в Лиспе, функции - это основной и довольно мощный инструмент. Из-за специфики кода, при написании программы, сначала приходится прописывать все функции последовательно от самого высокого уровня вложенности до самого низкого.
Аналог Конвейера в ООП можно считать паттерн Строитель (Builder). Также похожий подход можно увидеть в функции createSelector, библиотеки Redux-toolkit.
2:32 Я хоть и давно в вебе (3 года в js) но последние 5 пунктов вообще хз что это такое, как будто из ассемблера что то)) Хотя посмотрев ролик понимаешь что рано или поздно с опытом даже не зная этих заумных терминов сам приходишь к декларативности
Качество визуализации стремительно растёт! Куда приятнее и легче смотреть на анимации в красивых цветах, чем на скриншоты где что-то непонятное написано от руки) Очень интересный урок! Спасибо!
В целом интересная теория, но со стороны большого опыта работы на Java с StreamApi, Function, Optional, Consumer и тп. в JS вся эта структура кажется сложнее, хотя плюс минус тоже самое. Для меня самое сложное было понять как работают кастомные хуки в реакте, как я понимаю это также все выходит из ФП, но так как в java нет прямой аналогии для меня это выглядело как магия
Тимур, привет. Хочу тебе накинуть идею снять видео по девтулзам от А до Я. Изучаю фронтенд полтора года, но так и не сложилось цельной картины возможностей девтулзов, потому что в интернете очень разбросанная информация, в кучу фиг соберешь А девтулзы это основа основ для фронтендера. Считаю, этим видео ты очень поможешь прокачаться многим в плане отладки кода.
А будет ли уроки по кибербезопасности? Типа написать код чтобы его не прочитали через инструмент разработчика, или чтобы проверка была также на стороне сервера, или защититься от скриптов через текстовое поле и т.д? Именно от тебя хотелось бы послушать. Спасибо
Привет! Сними, пожалуйста, ролик про парадигму АОП в программировании на JS. Было бы не плохо ознакомиться с данной темой мне и многим другим разработчикам. На примере: логирования пользовательских действий (сохранения изменений заметок, комментариев и т.п.). Поднимите палец вверх что бы Тимур заметил просьбу!
Где то читал об ещё одно важное отличие процедуры от функции это то что процедуры могут изменять данные из глобальной области видимости, а в функциях такое обычно не приветствуется как раз из соображений чистоты функций.
Сегодня досрочно закрыл испытательный срок на своей первой работе фронтом 🎉🎉🎉 во многом благодаря Тимуру🎉🎉🎉, прошел почти весь курс, не дошел только до последнего раздела. Проходил ещё на первом потоке, у меня там была аватарка с вислоухим котом😺 когда прошел, на полгода забросил, но всё-таки взял себя в руки и устроился😊 всем удачи и верьте в себя!
Мои поздравления! Красавчик!
Хвастайся зп в 3 кириешки))
@@vladislavkomkov5178так все с чего-то начинают)
Молодец!
Сколько опыта крутил?)
Ролик вышел, как раз за час, до собеса. Решил быстро глянуть. И на собесе, спросили про функциональное программирование и функции высшего порядка. И я как выдал всю базу, которая есть в ролике, даже доп вопросов не задали😂. Спасибо Тимур за твой труд, за твои бесплатные и платный курсы.
Круто , взяли ?
@@damakostolo по зп не сошлись))
@@vitalex9383 жаль , но у тебя всё выйдет
@@vitalex9383 или уже вышло, хах
@@vitalex9383 Падлы))))
Обожаю твои уроки. Нет никого, кто объяснял бы понятнее и интереснее
Стараемся, спасиб)
неет нееет никого кроме бога одного
Ничего подобного у меня преподы лучше объясняли, но этот не хуже, молодец
Хочется сказать слова поддержки и выразить свое уважение к автору проделанную им работу. Спасибо Человек, ты делаешь этот мир лучше! Проделанная тобой работа помогает действительно стремящимся к знаниям людям получить их быстро и безболезненно, продолжай очень нравится. Творческих успехов и активной аудитории тебе!
Спасибо за такие слова ❤️🙏
Вообще, когда только начинал изучение JavaScript, считал его именно функциональным языком. Да и по факту большую часть времени пишу в функциональном стиле, и люблю его больше чем ООП. По-моему на фронте в ООП пишут только Ангулярщики, но могу ошибаться. Спасибо за очень информативный ролик, как всегда лучший!
только начинаю изучать ФП, подскажите есть ли смысл переписать композицию (compose) так, чтобы она работала с промисами? часто надо обработать ответ от сервера, но композиция работает только с функциями.
Мегаспасибо за такой качественный контент🙏 Ты все очень доходчиво и понятно описываешь сложные термины, и благодаря тебе получается быть все более и более уверенным как в js так и в разработке/программировании в целом!)
Замечательное объяснение того, что такое монада!
Отличная работа, большое спасибо
Твой ролик про ООП был просто шикарен, поэтому я невероятно ждал видео про ФП! Спасибо большое, Тимур!
Спасибо! Жду фидбек))
Не устаю удивляться качеству контента! Тимур как всегда на высоте 😉
Кстати, очень хотел розобрать тему по "масштабирование Node.js приложений" либо "Docker - продвинутая контейнеризация" Кто "за" - лайк в поддержку
СПАСИБО ТЕБЕ ЗА ТО, ЧТО ТЫ - ГЕНИЙ, ФИЛАНТРОП И НАВЕРНЯКА ПРОСТОЙ МИЛЛИОНЕР!
Здоровья тебе и всем твоим близким, таких бы как ты хотя-бы 1% и мы бы давно колонизировали всю Галактику.
Сразу лайк! Нет сомнений в качестве
Да, 100 процентов будет адекватно и информативно.
Редко оставляю коменты, но за твою работу - большое спасибо!
Большая благодарность за этот бесценный труд) Крепкого здоровья автору)
Интересная тема для меня. В свое время проходил курс по 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 будут выведены автоматически.
Еще нужно для ясности подчеркнуть в чем отличия на практике.
Упрощенно:
Функторы позволяют выразить чистые вычисления в контексте. (в вычислениях можно производить вычисления)
Аппликативные функторы позволяют выразить параллельные вычисления в контексте. (вычисления можно комбинировать)
Монады позволяют выразить последовательные вычисления в контексте. (вычисления зависят от результатов предыдущих)
Из этого, кстати, следует, что аппликативы можно статически исследовать, не интерпретируя (превратить в обычную структуру данных), в то время как с монадой - не прокатит. Ее придется вычислять.
Т.е. если какой-нибудь Thread - не аппликатив, то соединить/синхронизировать (joinThread) два треда в результате гонки не получится.
Если Thread - не монада, то дождаться выполнения треда, получить его результат, и запустить новый тред в зависимости от результата - не получится.
Очень полезное видео. Как всегда. Простое и ясное обьяснение сложных вещей. Огромное спасибо.
По-моему, на 51:00 f и g нужно поменять местами. Сначала применяется f (она должна быть внутри), а потом g.
да-да, плюсую.
сомнительно выглядит
Автору большое спасибо за такой информативный ролик и качественную подачу материала. Очень качественно.
Есть пару моментов, которые меня немного смутили. Если что, этими замечаниями я никак не хочу обидеть автора. Просто у меня есть некоторые сомнения в правильности некоторых моментов и хотелось бы, чтобы ответили кто-то из смотрящих или сам автор
31:46 - Вроде изначально автор склоняет к тому, что некорректно/не правильно делать данные мутабельными в таком случае, но в своем выводе (33:55) говорит "Делаем данные мутабельными". Я правильно понимаю, что это просто оговорка?
40:14 - Автор говорит что уменьшение аргументов достигается за счет замыкания - "с помощью механизма замыкания во внутреннюю функцию прокидывает client и запоминает это. Во втором блоке используем первую функцию, которая как бы запомнила client". Опять же я могу не правильно понимать, но это вроде не замыкание. clientHasRole не возвращает же функцию, которая запомнила cient внутри себя, а просто выполняет функцию userHasRole с параметром client, который видимо где-то вне функции находится (на сколько я понимаю это уже и не чистая функция). Я конечно больше предполагаю автор сократил блок кода на 1 строку и client все-таки создается внутри функции clientHasRole и "замыкается" внутри нее. Правильно ли понимаю?
43:28 - Как я понимаю, это не особо рабочий пример в плане логики. Ну то есть мы раз вызовем функцию Date.now() и запомнится (замкнется внутри logNow) эта дата конкретно в момент вызова функции Date.now(). А дальше все функции logCritical, logNormal и logMinor будут иметь одну и ту же дату и получается пример не очень правильный возможно. Ну как минимум он тут не показывает, что "вот круто получилось" с помощью каррирования, а наоборот ломает идею примера. Без даты было бы правильнее мне кажется
очень крутой формат crash курса краткого, как фундамент для изучения более углубленно очень полезный
еще не досмотрел, но много чего узнал нового, открыл глаза, спасибо, продолжай, понимаю как это сложно 🙃
Дружище привет! Не по теме конечно и все же. Сегодня был первый собес и благодаря твоему видео про event loop у меня ответ от зубов отскакивал! Много где искал информацию про него, но у тебя один из самых доступных для понимания материал. Спасибо тебе, что записываешь такие ролики, продолжай в том же духе!
Не понимаю как я не подписался на тебя раньше, хотя просматривал твои ролики до этого момента. Очень доходчиво объясняете и отличная дикция!
Спасибо!
Качество видео растет от ролика к ролику, смотрю почти каждый ролик и точно могу это сказать 😂 отличное введение в фп, но как ни крути, для полноценного фп надо писать не не js
Спасибо автору, все очень качественно и интересно, отличный звук и видеоряд, ничего лишнего, лучший канал для начинающих разработчиков и не только для них.
Отличный ролик на самом деле. Я занимаюсь JS уже 3 года и в этом ролике я открыл для себя новые интересные применения функций. Они вроде бы и были логичными, но про них даже не думал
Спасибо за то что ты делаешь. Я пошёл учится фулл стеком и твои видео всегда дают много знаний даже когда я не знал джс. Качество контента просто топ
Ulbi, ты куда пропал?
Фунцкиональный стиль в JS это богоугодное дело! Жду не дождусь когда в спецификацию JS добавят конвейерный (pipeline) оператор |>
Я лично жду когда в js добавят выражение по типу этого (выражение раннего выхода как в котлинине)
const a = 5
;((a: number) => {
const b = a-5 || return false
}) (a)
Что бы не проверять ифами какую то тему и выходить в ифе
Спасибо, что продолжаешь давать нам ценный контент!
Еще раз спасибо за обучающие видео. Делаю 2й проект уже за денежку, и прямо по новому переосмысливаю информацию по вью и авторизации. Если все получится - еще денежку занесу ))
Жду структурное программирование на Rust или Go))
Поддерживаю, ждем структурное программирование с примерами и на Rust и на Go
@@nikitatimofeenko9351 поддерживаю поддерживание, ждем структурное программирование с примерами и на Rust и на Go
Разве структурное программирование не схоже с ООП? По моему там те же принципы
Смоук, ты наш вдохновитель, давай еще!
Тимур лучший, большое спасибо за видео. Твои уроки помогают разобраться лучше всего
Как раз подумывал курс купить, как диплом допишу, но раз такая скидочка, то нельзя откладывать
Ну и ролик топ, как обычно
Очень круто, спасибо большое за подачу )
Как всегда очень качествено! большое спасибо!
Как всегда: видос на высоте!
Тимур, а что ты используешь для монтажа и создания таких крутых анимаций?
Спасибо огромное, с начало корирование для меня как дикий лес. Нужно будет почитать и венуться.
Спасибо огромнейшее за тонкость и глубину контента. Заставляет явно провернуться шестеренкам в голове 🤓 со шлейфом, что что-то понял ))
Эстетично и со вкусом 🌹 считывается, что ты в теме не просто шаришь, знаешь концепции, но ещё и Чувствуешь 💛 гармонично ориентируешься, но и подставляешь себя под критику, чтобы динамически расширить познание и критического мышления, развить его живость, эластичность и остроту.
Редкость.
Ценно 🫶🏻
Крутой ролик, теперь у меня есть понимание этих всех принципов
Очень наглядное руководство по ФП! Разработчики, поделитесь опытом, может кто-то использовал ФП у себя в проектах? У меня дальше carry,compose,map в рамках ramda и lodash дело не пошло. С ts типизацией очень громоздкий код получался.
какой же ты гений, просто лучший!
Юлби, жги! Мы тебя любим 🫶🏼 каждый ролик долгожданный!
Да!!!✨️🌟🔥
Лайк однозначно, коммент для продвижения, и вопрос по другой теме - снимаешь разбор Rx.js? Могу ошибаться, но она в стиле фп вроде. И как продолжение темы, или в принципе для расширения кругозора интересно услышать твое мнение и опыт в ней.
Спасибо за контент. Всё равно на какую тему ролик от этого автора, главное что 100% это будет полезно.
Интересна штука особенно про монады, захотелось попробовать применять для избавления фигурных скобочек if error try catch и тд, единственное не хочется терять в производительности из за красоты, не знаю насколько v8 оптимизирует такие функциональные фокусы
Да, действительно полезно, спасибо Тимур
Привет! Видео класс! Подскажи где ты рисуешь видеоряд? Слайды и т.д.
Блин, я искал буквально 3 дня назад видео по сравнению парадигм ООП и ФП, не нашел. И тут бабах! Очень кстати) Спасибо большое, Тимур!
Эээ, в статьи не пытался, да? Их более чем достаточно, чтобы понять: ооп - каша
отличный ролик, спасибо тебе огромное
Видно, что как всегда стараешься, спасибо тебе огромное, но я понял только поверхностно (всегда стараюсь твои уроки перематывать по "300" раз пока полностью все не пойму...), но досконально на таких примерах наверно и не нужно, а то мозг под плавится ))!!! Надеюсь, что когда будешь делать какие-то уроки с живым кодом, то будешь и вспоминать про этот урок приводя примеры с живым кодом, думаю, что не только я это ценю ))) !!! Желаю тебе вдохновения по более и ждем следующих видео.
Спасибо за видос, было очень полезно
@UlbiTV Спасибо за полезные видео! Было бы интересно посмотреть видео на темы:
1. изменения настроек вебпака из сборки командой npx create-react-app.
2. Управление глобальным состоянием приложения, с помощью ApolloClient (для исключения использования другого state manager (типа redux) или контекста реакта). Т.е. управление кешем (через хуки или нормальзованными данными, возможно qraphql-codegen), объявление и управление локальными данными клиента (@client, writeQuery, makeVar, useReactiveVar). Интересно было бы посмотреть твое видение организации кода и управление состоянием.
супер контент! огромное спасибо, Тимур!
Господи, это превосходно!
Я столько знаний получил с этого, мега круто! Причем как знаний по ФП, так и много-много знаний по js и лучшему пониманию того что происходит. А ещё мемоизация это лучший пример замыкания🤩
Тимур, это превосходно, ваш курс стоит покупки более чем! 💯💯💯
ждем - про Микросервери , микрофронтенд И так далее 😊
Спасибо ЮЛЬБИ!!!
уникальный качественный контент
крутой видос, ты делаешь правильную работу и тебе следует продолжать)
Лайк и комментарий для продвижения автоматически, спасибо!
Спасибо за ролик! Я не специалист в ФП. Понравилось объяснение функторов и монад. Кажется мир ФП может много чего интересного принести в решение рутинных задач)
Карта развития или учебы для самостоятельного изучения есть у тебя?
О, это для меня! Я, конечно, не программист, но иногда приходится писать код, причём в основном на Лиспе или VBA, где ООП не реализовано. И именно в Лиспе, функции - это основной и довольно мощный инструмент. Из-за специфики кода, при написании программы, сначала приходится прописывать все функции последовательно от самого высокого уровня вложенности до самого низкого.
Аналог Конвейера в ООП можно считать паттерн Строитель (Builder). Также похожий подход можно увидеть в функции createSelector, библиотеки Redux-toolkit.
супер контент!!! ждал! спасибо за труд!
Спасибо большое за ролик, я наконец смогу фулстекам (шейп в бекенд) давать ссылку, чтобы объяснить, почему для них невыносимо писать фронт)
Класс, спасибо за видео 🎉
Для меня очень полезное видео, спасибо!
А ты видел nodejs со встроенным gpt? Такой забавный Франкенштейн, но выглядит круто: переход к коду программы на человеческом языке!
2:32 Я хоть и давно в вебе (3 года в js) но последние 5 пунктов вообще хз что это такое, как будто из ассемблера что то))
Хотя посмотрев ролик понимаешь что рано или поздно с опытом даже не зная этих заумных терминов сам приходишь к декларативности
это что хоть такое-то? я неделю всасывал урок по вебпаку и тут нннныа и еще один видос подъехал! мне хотя бы половинку такой продуктивности
Огромное спасибо!
Мозг взорван, но мне понравилось))) Продолжай сенсей
Качество визуализации стремительно растёт! Куда приятнее и легче смотреть на анимации в красивых цветах, чем на скриншоты где что-то непонятное написано от руки) Очень интересный урок! Спасибо!
Это ОЧЕНЬ классный ролик, спасибо огромное! действительно, ни где не встречала так четко структурированной информации.
В какой программе презентацию делаешь?
Лайк префом. btw я scala разраб
В целом интересная теория, но со стороны большого опыта работы на Java с StreamApi, Function, Optional, Consumer и тп. в JS вся эта структура кажется сложнее, хотя плюс минус тоже самое. Для меня самое сложное было понять как работают кастомные хуки в реакте, как я понимаю это также все выходит из ФП, но так как в java нет прямой аналогии для меня это выглядело как магия
ну гений объяснений нет слов
Лайк! 🎉
Дай бог тебе здоровья мужик
Можно ли считать reducer чистой функцией, если у него дефолтное значение - переменная, определенная выше
Можно) это аргумент, такой же, просто с дефолтным значением, на чистоту не влияет
Тимур, привет. Хочу тебе накинуть идею снять видео по девтулзам от А до Я.
Изучаю фронтенд полтора года, но так и не сложилось цельной картины возможностей девтулзов, потому что в интернете очень разбросанная информация, в кучу фиг соберешь
А девтулзы это основа основ для фронтендера. Считаю, этим видео ты очень поможешь прокачаться многим в плане отладки кода.
44:55 у меня вопрос, как типизировать такие каррированные функции? Тупо возвращать function и результат?
Хороший видос, апдейт по монтажу хороший, спасибо
Про контейнеры на 48:00 я совсем не понял. Каким образом мы данные инкапсулировали, если они доступны через свойство инстанса?
Спасибо за твои труды! Не мог бы ты сделать подобный ролик про паттерны проектирования?
В todo есть такой ролик
@@UlbiTV привет, как скоро будет новый ролик на канале?
Привет Тимур! Было бы очень круто если бы также запилил курсы по Next JS и React Native
А будет ли уроки по кибербезопасности? Типа написать код чтобы его не прочитали через инструмент разработчика, или чтобы проверка была также на стороне сервера, или защититься от скриптов через текстовое поле и т.д? Именно от тебя хотелось бы послушать. Спасибо
Просту гуру программирования ❤
37:38 здесь опечатка на слайде или я не уловил мысль?
Тимур, большое спасибо за всё то,что ты делаешь. Есть идея для видео. Разбери,пожалуйста, веб компоненты на нативном js.
Заранее благодарю
Ого, нічого собі, оце крутяк. За такий контент треба донатить
Еще вопрос, на 51:00, в верхней строке, в правой части, должно быть: g(f(x)) ?
Твой ролик с собеседованием мотивировал меня посмотреть весь твой канал 🎉
Классный материал👍
🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰🥰
Привет! Сними, пожалуйста, ролик про парадигму АОП в программировании на JS. Было бы не плохо ознакомиться с данной темой мне и многим другим разработчикам. На примере: логирования пользовательских действий (сохранения изменений заметок, комментариев и т.п.). Поднимите палец вверх что бы Тимур заметил просьбу!
Куда пропал то? Крайний видос был 3 месяца назад)
Уникальный Ulbi, спасибо! Как всегда, очень крутой контент.
На 50:45 разве g и f справа от знака равенства не перепутаны?
Где то читал об ещё одно важное отличие процедуры от функции это то что процедуры могут изменять данные из глобальной области видимости, а в функциях такое обычно не приветствуется как раз из соображений чистоты функций.