home.social

#фп — Public Fediverse posts

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

  1. Объекты и классы — дар божий или проклятие

    Я давно вынашивал желание написать эту статью. И, наверное, мне бы стоило потратить некоторое время на то, чтобы написать её чуть более структурно и продуманно, но, пожалуй, я её в таком случае вообще не напишу, так что - статья будет ad hock, прям from the top of my mind. Начнём с того, что в обсуждениях объектного программирования бытуют несколько популярных мнений

    habr.com/ru/articles/1025200/

    #ооп #фп #структурное_программирование #спагеттикод #человек

  2. Функциональный Rust. Глава 0: Зачем нужно ФП?

    TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

    habr.com/ru/articles/1018790/

    #фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма

  3. Сколько нужно парадигм, чтобы вкрутить лампочку?

    Разработчик, знающий только одну парадигму программирования, напоминает плотника, у которого в ящике с инструментами лежит один-единственный молоток. Конечно, молотком можно идеально забить гвоздь. Или шуруп, если приложить достаточно рвения. Но попробуйте этим молотком распилить или отшлифовать доску — и сразу станет ясно, — при условии, что вам доводилось видеть в жизни пилу или рубанок, — что инструмент выбран неудачно. Так и с парадигмами: знание только императивного программирования или только объектно-ориентированного подхода превращает разработчика в механического исполнителя задач, неспособного увидеть элегантное решение там, где оно лежит на поверхности. Узость кругозора программиста, застрявшего в одной парадигме, проявляется во всем. Он будет городить циклы там, где достаточно одной функции высшего порядка. Плодить классы и наследование там, где хватило бы чистой функции и композиции. Попытается решить задачу верификации корректности алгоритма отладчиком и тестами вместо того, чтобы доказать её формально на уровне типов. Такой разработчик похож на туриста, который знает только одно слово на иностранном языке и пытается с его помощью объяснить таксисту маршрут через весь город. И хорошо еще, если это слово — не обсценно. Я список парадигм прочёл до середины

    habr.com/ru/articles/983724/

    #парадигмы #парадигма_программирования #фп #прувер

  4. Как аналитик ООП и ФП постигал

    Введение Мы часто говорим об алгоритмах как о "сердце" любой сложной системы. В контексте нашей платформы Гриндаты алгоритмы — это не просто код. Представьте, что данные — это деньги или документы клиентов, а алгоритмы — это инструкции и правила , которые позволяют быстро находить, сортировать, обрабатывать и сохранять эти "деньги/документы". Процесс создания алгоритма для бизнес-логики всегда начинается с декомпозиции действий. Далее мы переводим эти действия на алгоритмический язык, подбирая оптимальные пути решения. Но чтобы делать это быстро и эффективно, необходима прочная концептуальная база. Формулы удачного написания алгоритма не существует, поскольку задачи всегда разного толка и сложности. Однако понимание основных парадигм программирования — это первый и главный ключ к написанию оптимально работающих алгоритмов . Наши алгоритмы являются мультипарадигменными , поэтому рассмотрим два основных подхода, лежащих в их основе: ООП и ФП. Концептуальная основа: ООП (Объектно-ориентированное программирование) Концепция ООП лежит в основе структуры и окружения нашей платформы. Понимание ООП необходимо аналитику для:

    habr.com/ru/articles/954768/

    #Гриндата #ооп #фп #алгоритмы

  5. Путешествие в мир функционального программирования: как я провела курс студентам

    Привет! Меня зовут Ксюша, я работаю бэкенд-разработчиком на C# в Контуре. В весеннем семестре я провела курс по функциональному программированию на Haskell для студентов 3 и 4 курса направления ФИИТ (фундаментальная информатика и информационные технологии) в УрФУ и хочу поделиться своим опытом организации и проведения курса.

    habr.com/ru/companies/skbkontu

    #преподавание #функциональное_программирование #haskell #фп #студенты #студенты_в_it

  6. No exceptions культ — Rift Miniframework

    В мире php-ходящих есть мнение, что первое, что сказал Иисус Христос придя в этот мир: "исключения - зло". Конструкция по типу try { .. } catch (Exception $e) { ..$e->getMessage() } знакома каждому 5 человеку в мире и воспринимается как неотъемлемая часть любой логики на php. И что в этом такого? Ничего, кроме того, что из чёткой цепочки обработки запросов ваш код быстро превращается в коллекцию try catch на каждой 3 строке. Это не кажется проблемой до того момента, как дело не дойдёт до разделения приложения на отдельные слои во благо SOLID. Представьте, что в вашей команде >1 человека и все они работают над разными слоями, которые должны между собой взаимодействовать. В подобных ситуациях все участники должны документировать все созданные методы, а так же возвращаемые исключения. И да, это хорошо, но зачастую документация исключений становится невыносимой. Таким образом ваша работа обрастает ненужным слоем прокидывания исключений, которые к слову нужно ещё и создать.

    habr.com/ru/articles/918306/

    #php #ооп #фп

  7. Философия программирования зашла в тупик

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

    habr.com/ru/articles/914570/

    #архитектура #проектирование_систем #ООП #ФП #программирование

  8. [Перевод] ООП: худшее, что случалось с программированием

    В этой статье попробуем разобраться, почему ООП — худшее, что было придумано в программировании, как оно стало таким популярным, почему опытные программисты Java (C#, C++ и т.п.) в принципе не могут считаться крутыми инженерами, а код на Java - хорошим.

    habr.com/ru/articles/885980/

    #ооп #фп #java #typescript #c# #go #парадигмы_программирования #паттерны_программирования #объектноориентированное #функциональное_программирование

  9. ЭКЛЗ. Как работали кассы в нулевые

    Приветствую всех! Давным-давно, лет так десять назад, не было онлайн-касс. И, если в девяностые обходились одной лишь фискальной памятью , то в двухтысячные придумали ещё один девайс для контроля, сложный и во многом противоречивый. Сейчас они уже не используются, а кассы такой системы запрещены к применению. Тем интереснее заставить их работать сейчас. Конечно, в магазин такую уже не поставишь, но посмотреть на сами аппараты после многих лет простоя мы сможем. Итак, в сегодняшней статье поговорим про электронную контрольную ленту, применявшуюся в кассовых аппаратах. Заодно препарируем один такой блок, посмотрим на схемотехнику касс тех лет, а заодно и узнаем, действительно ли такое решение обеспечивало должную защиту. Как водится, будет много интересного.

    habr.com/ru/companies/timeweb/

    #timeweb_статьи #кассовый_аппарат #эклз #фп #феликс #касби #касса #меркурий #i2c #rs232 #uart #arduino #криптопроцессор

  10. Функциональные коллекции в Java с Vavr: обзор и применение

    Приветствую всех, кто устал от бесконечных проверок на null , громоздких блоков try-catch и мутирующих коллекций. Если вы когда-нибудь мечтали о том, чтобы привнести в Java немного функциональности, то я рад рассказать вам о библиотеке Vavr.

    habr.com/ru/companies/otus/art

    #java #ФП #библиотека_Vavr

  11. Архитектура и ООП

    Изначально этот материал планировался как урок в PHP-курсе по полиморфизму. Но он, в конце концов, перерос сам урок, и я решил сделать из него отдельную статью. В ней практически ничего PHP-специфичного, поэтому рекомендуется для прочтения всем без исключения. Напомню, что модель классов PHP взята из Java. Наличие интерфейсов и всех сопутствующих элементов очень сильно влияет на способ организации кода в PHP. Этот способ часто отличается от того, как организуется код в JavaScript, Ruby или Python. И ещё больше отличается от таких языков, как Clojure или Elixir. И всё это на фоне того, что в каждом из этих языков есть ООП. ООП в этих языках настолько разное, что PHP-программисты, попадающие в Ruby или JavaScript, не понимают, как так можно писать, ведь многие подходы противоречат их представлениям о мире. То же самое происходит и в обратной ситуации. Так где же правда? Правда в том, что есть вещи, которые действительно определяют архитектуру кода. И это не структура классов, не наличие интерфейсов и не использование полиморфизма. Возьмём тот же MVC. В нём говорится о слоях, об их задачах (зонах ответственности) и способе взаимодействия друг с другом. Это крайне важно для модульности. В модульной системе отсутствуют циклические зависимости. В MVC ничего не говорится про классы и ООП в целом, потому что между этими понятиями нет связи. Реализовать MVC можно в любом языке общего назначения, каким бы он ни был. То же самое можно сказать обо всех других архитектурных шаблонах. Архитектура опирается на особенности среды, в рамках которой она применяется, а не на конструкции языка. Например, в вебе господствует HTTP, который построен вокруг концепции "запрос-ответ". Именно поэтому микрофреймворки разных языков выглядят так похоже, независимо от того, есть там ООП или нет: в каждом микрофреймворке есть запрос, ответ и обработчик ответа. Подробнее о разработке я пишу в своем телеграм-канале организованное программирование . Присоединяйтесь если статья понравилась :)

    habr.com/ru/articles/833968/

    #ооп #фп #чистый_код #архитектура #паттерны #проектирование #хекслет #за_php #эрланг_ван_лав

  12. В общих чертах про функциональное программирование в Rust

    Привет, Хабр! Функциональное программирование предлагает такие концепции, как иммутабельность данных, чистые функции (т.е, результат работы которых зависит только от входных данных и не производят побочных эффектов), а также функции высшего порядка, которые позволяют работать с функциями так же, как с данными. Эти идеи вносят определенную строгость и предсказуемость. Хоть Rust не является чистым функциональным языком программирования, однако он имеет множество инструментов, позволяющих применять функциональные принципы. Rust поддерживает рекурсию , хотя и без оптимизации хвостовых вызовов, что является отступлением от некоторых традиционных функциональных языков, таких как Haskell . Тем не менее, язык предоставляет мощные абстракции и паттерны, такие как владение и заимствование . Rust также поощряет иммутабельность данных по умолчанию, что является в целом базой ФП. Переменные в Rust иммутабельны по умолчанию, и язык требует явного указания mut , если хочется изменить значение. Кроме того, Rust имеет поддержку функций высшего порядка и замыканий.

    habr.com/ru/companies/otus/art

    #ФП #функциональное_программирование #rust #программирование

  13. Монады как строительные блоки функционального Java

    Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.

    habr.com/ru/companies/otus/art

    #java #монады #функциональное_программирования #ФП