Функциональное программирование

Поделиться
HTML-код
  • Опубликовано: 9 фев 2025
  • Всё самое важное из мира функционального программирования. Поговорим о конвейере, композиции, частичном применении, каррировании, неизменяемых данных и чистых функциях. Вспомним о грустных коалах под дождем, котиках, которые любят смотреть на звезды, а в конце улетим в закат.

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

  • @nataliepodgainova6582
    @nataliepodgainova6582 2 года назад +6

    Я прям влюбилась. Как можно так заинтересовывать предметом. Смотрела не отрываясь.

  • @MrSanya789
    @MrSanya789 2 года назад +8

    Практическая часть, это конечно отвал башки, спасибо, очень круто!

  • @olnimus
    @olnimus 2 года назад +4

    Лектор конечно офигенный. По-моему ему надо читать лекции не только по программированию, а ещё как правильно читать лекции.😀

    • @diatm1506
      @diatm1506 2 года назад +1

      Жаль этот лектор про gof and grasp enterprise patterns не рассказывает(

  • @life_xypma
    @life_xypma 2 года назад +2

    Как человек здорово, точно, лаконично и (!) приятно для восприятия излогает. Агонь! Жалко что я JS не увлекаюсь)

  • @kai.hexenzorn
    @kai.hexenzorn 6 месяцев назад

    Как раз в Julia появился конвейер. Но если нет конвейера, то необязательно использовать пайтоновские матрешки: double(inc(double(double(5)))) - можно сделать же по-человечески:
    pipe(5)
    .double()
    .inc()
    .double()
    .double()
    И код можно читать как книгу сверху вниз, и параметр можно пропихнуть в оператор, и поддержка типов имеется для мэппинга, если ts использовать.
    Кстати, почему мы не можем назвать функцию чистой, если она возвращает случайное число? Возможно, что нам важно сохранить предсказуемость именно характеристик случайной величины.

  • @ДмитрийРозенбаун
    @ДмитрийРозенбаун 2 года назад

    Спасибо большое за вебы!)

  • @humanidis
    @humanidis 9 месяцев назад

    Ахренеть. Суперское видео! И все это бесплатно на ютубе. Институты безнадежно устарели, все знания можно получить онлайн.

  • @mendelson-dev
    @mendelson-dev 2 года назад +1

    32:54 почему внутри функции partial => fn(...apply, args) нет спред оператора для args? (и в функции curry)

    • @georgegrinding1793
      @georgegrinding1793 2 года назад +1

      Я пришел к тому, что там ошибка. Перепутано, что нужно спредить. Должно быть: (...args) => fn(apply, ...args)

  • @MrSanya789
    @MrSanya789 2 года назад +1

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

  • @СмтрТб
    @СмтрТб 2 года назад +1

    1:00:12 начало практики

  • @kirillpavlovskii8342
    @kirillpavlovskii8342 2 года назад +1

    пример с createCounter это скорее не замыкание а фабрика в данном случае

  • @nikolay284
    @nikolay284 2 года назад

    Я и бал как круто)

  • @СмтрТб
    @СмтрТб 2 года назад +1

    Как проводится отладка кода при написании в таком стиле?

    • @gamerzero6085
      @gamerzero6085 9 месяцев назад

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

  • @RebziSquad
    @RebziSquad 2 года назад +5

    Люди сами усложняют себе жизнь придумывая данные концепции. Каким образом человек должен разобраться в коде, где присутствуют тысячи деклараций функций. Таким образом в коде нет особого разграничения по объектам, все константы идут друг после друга.

    • @gamerzero6085
      @gamerzero6085 9 месяцев назад

      Они распределены по модулям.

    • @RebziSquad
      @RebziSquad 9 месяцев назад

      @@gamerzero6085 разделить на файлики и папочки недостаточно, лично мне проще импорнуть класс в котором уже все находится, чем писать "импорт звездочка эс название".

    • @humanidis
      @humanidis 9 месяцев назад

      Вполне справедливое замечание. Некоторые функции я бы не стал декомпозировать. Например, три условия в if через && вполне гармонично смотрятся.
      В целом, должен быть тимлид, который будет решать, насколько операция часто используемая и стоит ли выносить ее в отдельную функцию. И тогда уже выносить функцию в папку utils по конкретному направлению (чарджинг, дашборд, юзер и т.п.) или даже в общую папку utils.