home.social

#functional_programming — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #functional_programming, aggregated by home.social.

  1. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  2. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  3. Почему JS/TS — не функциональный язык (и почему это важно понимать)

    Мотивацией для написания этого поста стали два года собеседований JS/TS-инженеров. Я интересуюсь языками и функциональным программированием, поэтому всегда «разбавлял» технические вопросы разговором о парадигмах. И заметил любопытную асимметрию. Об ООП кандидаты рассуждали уверенно — но в основном на концептуальном уровне, не вдаваясь в то, как именно ООП реализовано в JavaScript. С FP картина была другой: уверенности меньше, зато критика — конкретная и повторяющаяся: «иммутабельность дорогая по памяти» , «рекурсия небезопасна из-за стека» . Что характерно — эти аргументы почти всегда были сформулированы через опыт работы с JS, а не с Haskell, Clojure или Scala. Это важная деталь. Любая парадигма существует на двух уровнях: концептуальном (идеальная модель) и имплементационном (как конкретный язык эту модель выражает). Судить о FP по JS — примерно то же самое, что судить об ООП по bash-скриптам с глобальными переменными. Параллельно я регулярно слышал, что JS — функциональный язык. Аргументы варьировались от «там есть .map() » до рассуждений о чистых функциях и каррировании. Именно это и стало поводом для поста: я хочу объяснить, что я считаю функциональным языком — и почему JS таковым не является. Не перечислить отсутствующие фичи, а показать, почему их нет и что это значит в реальном рантайме.

    habr.com/ru/articles/1025100/

    #fp #scala #js #ts #functional_programming

  4. 10 причин попробовать Effect TS/Основы Effect TS

    Effect -фреймворк, который никого не может оставить равнодушным. Читая комментарии к другим постам, я заметил, что добрая часть хабра считает, что эффект это избыточно сложная и не особо нужная технология. В своей статье я обозначаю 10 причин, почему эту технологию стоит попробовать, даже если вы дико предвзятый разработчик, а также даю экскурс по базам фреймворка.

    habr.com/ru/articles/1009458/

    #Effect #Effect_TS #TypeScript #functional_programming #функциональное_программирование #dependency_injection #AI

  5. Does anyone know if an inductive Nat datatype defined as a place-value system could replace the need to rewrite the PA definition to bigints in the compiler?

    #theoremProving #types #functional_programming

  6. Преодоление сложности в самом сердце Анемичной Модели

    Доброго времени суток, Хабр! Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.

    habr.com/ru/articles/917012/

    #ddd #software_design #anemic_model #refactoring #architecture #java #oop #web_development #domain_driven_design #functional_programming

  7. 🚀 just uploaded (link in reply): "Folding Cheat Sheet #9 List Unfolding - unfold as the Computational Dual of fold, and how unfold relates to iterate"

  8. 🚀 just uploaded (link in reply): "List Unfolding -
    unfold as the Computational Dual of fold,
    and how unfold relates to iterate"

  9. Разбираем конкурентность в Go: книги, блоги, выступления

    Особенность Go — удобный механизм конкурентности. Создавать конкурентные задачи в парадигме языка можно буквально «бесплатно» и предельно просто: достаточно написать ключевое слово go перед вызовом функции — и она начнет выполняться в отдельном потоке. Я Владислав Белогрудов, эксперт по разработке ПО в YADRO. В свое время изучал различные источники и лучшие практики в поиске эффективных способов организации параллельных процессов в Go. Делюсь ими с вами. Пополнить библиотеку

    habr.com/ru/companies/yadro/ar

    #golang #go #goroutine #concurrency_patterns #functional_programming #channel

  10. Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

    Если вы хотите получить фундаментальные знания по разработки iOS приложений с помощью SwiftUI , вам следует пройти стэнфордский курс CS193P. Предложенные в весеннем семестре 2023 года лекции Стэнфордского курса CS193P «Developing Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») — это уже 3-я реинкарнация курса CS193P с фреймворком SwiftUI . В настоящий момент действуют Xcode 15 / iOS 17, которые были представлены на WWDC 2023 уже после завершения курса CS193P, наиболее значимое обновление внесено в механизм реактивного UI в SwiftUI (макрос @Observable против протокола ObservableObject ). В иллюстрированных русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17. Для большинства Лекций представлена версия с использование макроса @Observable вместо протокола ObservableObject , в ряде случаев это потребовало нетривиальных решений.

    habr.com/ru/articles/816995/

    #CS193P_2023 #стэнфордский_университет #swift #swiftui #functional_programming #declarative_ui #mvvm #mvi #@binding #@published

  11. Расширение Функциональных Интерфейсов Java

    За годы прошедшие с их появления в Java8 у меня набралась коллекция полезных решений и шаблонов, которые я переносил из проекта в проект, и которые в стандартной версии так и не были осуществлены. Недавно я решил собрать все вместе в небольшом проекте с открытым кодом. В первом релизе проекта расширения охватывают следующие аспекты:

    habr.com/ru/articles/812451/

    #Java #functional_interface #functional_programming #currying #multimethods #exception #exception_handling #extensions #interception #java_21

  12. Calypso: Схема данных MongoDB на Scala

    Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source библиотеку calypso для работы с BSON. Публикация для тех, кто стремится к современным практикам разработки и разделяет наше влечение к Scala 3. Готовы к открытиям? Добро пожаловать в мир функционального программирования и надёжной работы с schema-on-read.

    habr.com/ru/companies/m2tech/a

    #scala #ddd #scala3 #outbox #adt #algebraic_data_types #mongodb #nosql #domain_driven_design #functional_programming