Тёмный

Не морочьте мне голову со своим функциональным программированием / Виталий Брагилевский 

Mobile Channel
Подписаться 4,9 тыс.
Просмотров 33 тыс.
50% 1

Apps Conf Moscow 2019
Зал «Против глупости»
22 апреля, 14:00
Тезисы и презентация:
appsconf.ru/moscow/2019/abstra...
Адепты функционального программирования очень любят завлекать неопытных программистов обещаниями идеальной выразительности кода, его стопроцентной корректности, лёгкости поддержки и простоты рефакторинга. Иные даже пророчат высочайшую производительность и попадание после смерти напрямую в райские кущи. Опытные разработчики знают, что ничего такого не бывает, программирование - это тяжёлый труд, а серебряные пули, может, и помогают от вампиров, но никак не в процессе разработки ПО. С другой стороны, если что-то может хоть как-то облегчить труд программиста, то почему бы не попробовать этим чем-то воспользоваться?
...
--------
Нашли ошибку в видео? Пишите нам на support@ontico.ru

Опубликовано:

 

4 янв 2020

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 49   
@stanislavzemlyakov5442
@stanislavzemlyakov5442 4 года назад
Отличный доклад, спасибо.
@user-tv2hs5rs4t
@user-tv2hs5rs4t 3 года назад
Блестящий доклад! Спасибо большое!
@ultraon83
@ultraon83 3 года назад
Просто невероятно, очень классное и понятное объяснение!
@centwor1on167
@centwor1on167 2 года назад
Отличный доклад! Вот что значит эксперт - уметь рассказать и объяснить тему даже на дудульке сыграв! Спасибо Виталию за взгляд на тему с высоты
@PetrovAlexey
@PetrovAlexey 3 года назад
Очень полезный доклад для вывода мозгов из тупика
@MrVicorl
@MrVicorl 2 года назад
ещё до пандемии, без масок и офлайн встреча... какие времена были... :(
@ivanfedorov7934
@ivanfedorov7934 3 года назад
Супер доклад , все правильно, делайте хорошие компиляторы, а уж мы-то напишем :)
@petrvictorovich
@petrvictorovich 2 года назад
Почему так мало людей дозревает до такой "простоты" в понимании? Видимо потому что с умным видом произносить "страшные слова" легче, приятней и льстит самолюбию.
@folcrams2993
@folcrams2993 9 месяцев назад
"Не морочьте мне голову со своим функциональным программированием!" - дайте хоть основы выучить
@TheOnlyAndreySotnikov
@TheOnlyAndreySotnikov 2 года назад
Есть вещи, которые ahead of time компилятор в принципе никогда не сможет оптимизировать. Например, вызов виртуальной функции невозможно заинлайнить, если вызов осуществляется через таблицу виртуальных функций, которая строится в run-time. Так что аргумент «не бывает медленных способов программирования, это компиляторы плохие» не состоятелен.
@user-ob7tt2ku8r
@user-ob7tt2ku8r Год назад
Поэтому полиморфизм типажей и дженериков в Rust куда лучше чем наследование абстрактных методов в той же Java. С одной стороны вроде как интерфейс (набор виртуальных методов), а с другой - no cost abstraction, потому все накладные расходы во время компиляции снимаются (ну также как Templates в С++). Ну, а если мы говорим про, скажем, массив экземпляров разных классов с одним интерфейсом, то тут я не вижу особых способов оптимизации даже руками программиста. То есть так или иначе будет if else или что-то типа того, завязанного на конкретном типе. Если у Вас есть идеи как эту проблему исправить руками программиста (а не компилятора), было бы интересно узнать)
@alexgorodecky1661
@alexgorodecky1661 5 месяцев назад
@@user-ob7tt2ku8r, разницы с Java никакой нет. Разница лишь в том будет инлайн или нет, а это зависит. А инлайна может не быть вовсе если вы соберёте себе Array - но тут вы явно попросили рантаймовых абстракций
@laticalamonzi2814
@laticalamonzi2814 Год назад
Включила на прослушку, показалось Вячеслав Мясников говорит... =)
@kujoxer-yep
@kujoxer-yep 5 месяцев назад
00:15:40 - чел 100% закрывает вопрос что такое ФП и ООП, красавчик есть же
@SergRyabinin
@SergRyabinin 3 года назад
Доклад очень интересный. Если брать аналогии с живым миром, никого не удивляет присутствие в нем птиц, насекомых, бактерий, рыб, растений, грибов и тд, но почему то в мире программистов все еще бывают споры относительно того, какой подход самый "правильный"))
@berghauz
@berghauz 3 года назад
Автор доклада явно уже определился, и счетчики ему не то, и циклы фу, а что под капотом они же и сидят - ну не видно, значит неть! Уровень передергивания зашкаливает.
@SergRyabinin
@SergRyabinin 3 года назад
@@berghauz споры про это все-равно не утихнут никогда и все ветки программирования будут развиваться, как и все живое на земле)) впрочем, пригладное программирование хочется видеть давно уже посредством "крупных кубиков", а не ломать копья про ООП/функциональное/структурное и етс программирование. Хотя отраслевые решения на эту тему уже имеются давно.
@NICKy1038ausc
@NICKy1038ausc 2 года назад
@@berghauz Не очень понятна суть претензии. Следуя этой логике, раз "под капотом" процессор работает с машинными кодами, то все, кто считает более эффективным писать код хотя бы на ассемблере или на более высоких уровнях абстракции и так делают - "передёргивают". Речь же идёт конкретно про код программиста, который выполняет бизнес-задачу. На 8:39 был отличный пример. Декларативный код, который описывает суть задачи, занимает три строки. Проще читать, проще поддерживать. Чем лучше 10+ строк кода с циклами, проверками и счётчиками, который делает абсолютно то же самое? Понятно, что надо всегда быть разумными и использовать более применимый подход для кажого конкретного случая. Но доклад автора был только про ФП, в этом смысле тоже претензия непонятна
@berghauz
@berghauz 2 года назад
@@NICKy1038ausc На 8:39 был отличный пример сахара, какое отношение этот пример имеет к счетчикам, циклам и всему прочему, о чем выступающий говорил минутой ранее? Никакого, но выступающий зачем-то акцентировал свое внимание на зашкварности использования этих методов, словно все программисты, пишущие "эффективный" код только и занимаются тем, что считают строчки в файле. Это и называется - передергивать.
@NICKy1038ausc
@NICKy1038ausc 2 года назад
@@berghauz Это рофл? Прямое отношение. Вы смотрели видео, суть поняли? Были показаны два метода, которые делают одно и то же. В императивном и функциональном стиле. Первый занимает гораздо больше места и менее читаем из-за того, что в теле этого метода используются циклы и счётчики, о которых шла речь. В хорошем читаемом коде метод должен делать одну вещь и делать её хорошо. Перебор коллекции и чтение файлов посимвольно - как раз примеры того, почему императивный метод не является хорошо читаемым кодом. Когда все рутинные действия были вынесены в методы поменьше, функциональный код стал гораздо более лаконичным и декларативным. Он и пишется гораздо быстрее, и читается как книга: последовательно и на понятном языке. А не как код студента-младшекурсника. Программисты на реальных проектах ощутимо быстрее пишут код и быстрее его поддерживают, с этим очень странно спорить. Никто не считает каждую строчку кода, но когда функциональный код на практике В ТРИ РАЗА короче, это огромная разница. А так любую удобную абстракцию можно назвать сахаром и сказать, что она не нужна. И так раньше нормально жили, чего вообще развиваться, усваивать что-то новое и увеличивать производительность программистов. Вы сами-то решаете реальные задачи? И как, императивно? Пробовали иначе? Поделитесь, пожалуйста, своим опытом.
@ArgentSmith
@ArgentSmith 5 лет назад
Хочу такой презентер с "подсветкой экрана"
@VBragilevsky
@VBragilevsky 5 лет назад
Управлять не очень удобно!
@alexanderskusnov5119
@alexanderskusnov5119 3 года назад
Я видел другой режим: фон не становится чёрным, а пятно желтоватое или красноватое (с прозрачностью).
@IExSet
@IExSet Год назад
Какой нафиг компилятор с искусственным интеллектом, о чём они ?
@lenin1st
@lenin1st Год назад
когда лектор оговорился про то, что скорость - это проблема компилятора, я выключил. какие знакомые боевые фразы.
@0xsadcat92
@0xsadcat92 5 месяцев назад
Штош, компилятор виноват в медленном коде, так заказчику и скажем, пусть подождет пока допилят...
@cheefoxcheefox2372
@cheefoxcheefox2372 6 месяцев назад
Чёт херь какая-то. Надеюсь,что в комитете Haskell этот человек просто пьёт кофе
@deleteddeleted1940
@deleteddeleted1940 Год назад
3734 note
@yaroslavpiddubnyak2025
@yaroslavpiddubnyak2025 Год назад
Общий смысл - переходить на языки ещё более высокого уровня, а если будет плохо работать - это виноваты разработчики компилятора, что дураки - остались на низком. 😎
@mslq
@mslq Год назад
Да я на ассемблере функций наделал средствами макроса и функионирую! ))
@user-ob7tt2ku8r
@user-ob7tt2ku8r Год назад
пишу программы на машине Тьюринга, симулированной в игре жизнь и не жалуюсь))
@user-vj8ys1xo6m
@user-vj8ys1xo6m 2 года назад
Дано: гугл-1шт. ,есть поток данных n>1, дискретность данных будет n>1÷a+(b•b). Сжатие фаилов b не позволяют высокоуровнивые кодаки. основанные на последних языках програмирования, т.к в фортан больше не могем. Попытки сжимать медиа.- нейросетями привели к неслабой ловле лулзов. Вопрос: сколько потребуется времени чтобы компания гугл освоила сжатие медиафаилов крипто шифрованием, используя при этом сторонние мощьности?
@princessmary5556
@princessmary5556 Год назад
Бред.
@user-db2th5em3v
@user-db2th5em3v 2 года назад
Хаскелевский интерпретатор и вправду медленный. Отсюда вопрос: если хаскелисты, сплошь и рядом - ученые-исследователи и математики, то почему бы не написать быстрый компилятор для своего языка?
@user-eo5uw4xf2y
@user-eo5uw4xf2y 2 года назад
потому что ученые-исследователи и математики не инженеры
@user-ob7tt2ku8r
@user-ob7tt2ku8r Год назад
компилятор или интерпритатор? GHCI - медленный так как интерпретатор. А вот GHC - вполне быстрый, главное писать директиву ghc-options: -o2 в package.yaml, чтобы включилась оптимизация
@ChannelCheesecake
@ChannelCheesecake 5 месяцев назад
Ну так он медленный, потому что умный. Что не понятно, это 2 стороны одной монеты. Но пока Хаскеллист напишет код за x времени, напишет y тестов и будет ждать z времени компиляцию. Какой-нибудь гошник напишет то же самое за 5x времени, напишет 3y тестов, но скомпилирует быстрее, кто в итоге продуктивнее
@Darellat
@Darellat 4 года назад
очередной манямир функциональщиков на этапе вопросов
@Yetishkin_Pistolet
@Yetishkin_Pistolet Год назад
Python ведь тоже на 79% функциональный. А вы его не упомянули, почему ? Как будете оправдываться ?! А ?! АААААААА !!!!
@nikitatimofeenko9351
@nikitatimofeenko9351 Год назад
А не че, что он ООП и сам создатель языка до последнего не хотел добавлять функциональные методы по типу map, filter, reduce и тп
@mslq
@mslq Год назад
Очень сильный язык, боится оговорится.
@ChannelCheesecake
@ChannelCheesecake 5 месяцев назад
Что там функционального. Лямбды однострочные или может быть отсутствие иммутабельных данных
Далее