#фп — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #фп, aggregated by home.social.
-
Объекты и классы — дар божий или проклятие
Я давно вынашивал желание написать эту статью. И, наверное, мне бы стоило потратить некоторое время на то, чтобы написать её чуть более структурно и продуманно, но, пожалуй, я её в таком случае вообще не напишу, так что - статья будет ad hock, прям from the top of my mind. Начнём с того, что в обсуждениях объектного программирования бытуют несколько популярных мнений
https://habr.com/ru/articles/1025200/
#ооп #фп #структурное_программирование #спагеттикод #человек
-
Функциональный Rust. Глава 0: Зачем нужно ФП?
TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;) Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».
https://habr.com/ru/articles/1018790/
#фп #rust #rusty #rustc #fp #функциональщина #функциональное_программирование #функциональная_парадигма
-
Сколько нужно парадигм, чтобы вкрутить лампочку?
Разработчик, знающий только одну парадигму программирования, напоминает плотника, у которого в ящике с инструментами лежит один-единственный молоток. Конечно, молотком можно идеально забить гвоздь. Или шуруп, если приложить достаточно рвения. Но попробуйте этим молотком распилить или отшлифовать доску — и сразу станет ясно, — при условии, что вам доводилось видеть в жизни пилу или рубанок, — что инструмент выбран неудачно. Так и с парадигмами: знание только императивного программирования или только объектно-ориентированного подхода превращает разработчика в механического исполнителя задач, неспособного увидеть элегантное решение там, где оно лежит на поверхности. Узость кругозора программиста, застрявшего в одной парадигме, проявляется во всем. Он будет городить циклы там, где достаточно одной функции высшего порядка. Плодить классы и наследование там, где хватило бы чистой функции и композиции. Попытается решить задачу верификации корректности алгоритма отладчиком и тестами вместо того, чтобы доказать её формально на уровне типов. Такой разработчик похож на туриста, который знает только одно слово на иностранном языке и пытается с его помощью объяснить таксисту маршрут через весь город. И хорошо еще, если это слово — не обсценно. Я список парадигм прочёл до середины
-
Как аналитик ООП и ФП постигал
Введение Мы часто говорим об алгоритмах как о "сердце" любой сложной системы. В контексте нашей платформы Гриндаты алгоритмы — это не просто код. Представьте, что данные — это деньги или документы клиентов, а алгоритмы — это инструкции и правила , которые позволяют быстро находить, сортировать, обрабатывать и сохранять эти "деньги/документы". Процесс создания алгоритма для бизнес-логики всегда начинается с декомпозиции действий. Далее мы переводим эти действия на алгоритмический язык, подбирая оптимальные пути решения. Но чтобы делать это быстро и эффективно, необходима прочная концептуальная база. Формулы удачного написания алгоритма не существует, поскольку задачи всегда разного толка и сложности. Однако понимание основных парадигм программирования — это первый и главный ключ к написанию оптимально работающих алгоритмов . Наши алгоритмы являются мультипарадигменными , поэтому рассмотрим два основных подхода, лежащих в их основе: ООП и ФП. Концептуальная основа: ООП (Объектно-ориентированное программирование) Концепция ООП лежит в основе структуры и окружения нашей платформы. Понимание ООП необходимо аналитику для:
-
Путешествие в мир функционального программирования: как я провела курс студентам
Привет! Меня зовут Ксюша, я работаю бэкенд-разработчиком на C# в Контуре. В весеннем семестре я провела курс по функциональному программированию на Haskell для студентов 3 и 4 курса направления ФИИТ (фундаментальная информатика и информационные технологии) в УрФУ и хочу поделиться своим опытом организации и проведения курса.
https://habr.com/ru/companies/skbkontur/articles/927814/
#преподавание #функциональное_программирование #haskell #фп #студенты #студенты_в_it
-
No exceptions культ — Rift Miniframework
В мире php-ходящих есть мнение, что первое, что сказал Иисус Христос придя в этот мир: "исключения - зло". Конструкция по типу try { .. } catch (Exception $e) { ..$e->getMessage() } знакома каждому 5 человеку в мире и воспринимается как неотъемлемая часть любой логики на php. И что в этом такого? Ничего, кроме того, что из чёткой цепочки обработки запросов ваш код быстро превращается в коллекцию try catch на каждой 3 строке. Это не кажется проблемой до того момента, как дело не дойдёт до разделения приложения на отдельные слои во благо SOLID. Представьте, что в вашей команде >1 человека и все они работают над разными слоями, которые должны между собой взаимодействовать. В подобных ситуациях все участники должны документировать все созданные методы, а так же возвращаемые исключения. И да, это хорошо, но зачастую документация исключений становится невыносимой. Таким образом ваша работа обрастает ненужным слоем прокидывания исключений, которые к слову нужно ещё и создать.
-
Философия программирования зашла в тупик
Никто давно не пытается выводить теорий о том как правильно писать код. Старые теории и способы об этом думать в общественной дискуссии давно свелись к спору о синтаксическом сахаре да и теории те были попыткой выделения каких-то математических свойств кода. Потом как известно была доказана невозможность этого. Сейчас всё изменилось - мы должны рассуждать о проекте как о том, что постоянно изменяется большими группами людей, какая-то часть и кода и людей может быть неправильной, никто из модифицирующих не знает проекта целиком, нужны новые идеи и способы рассуждения.
https://habr.com/ru/articles/914570/
#архитектура #проектирование_систем #ООП #ФП #программирование
-
[Перевод] ООП: худшее, что случалось с программированием
В этой статье попробуем разобраться, почему ООП — худшее, что было придумано в программировании, как оно стало таким популярным, почему опытные программисты Java (C#, C++ и т.п.) в принципе не могут считаться крутыми инженерами, а код на Java - хорошим.
https://habr.com/ru/articles/885980/
#ооп #фп #java #typescript #c# #go #парадигмы_программирования #паттерны_программирования #объектноориентированное #функциональное_программирование
-
ЭКЛЗ. Как работали кассы в нулевые
Приветствую всех! Давным-давно, лет так десять назад, не было онлайн-касс. И, если в девяностые обходились одной лишь фискальной памятью , то в двухтысячные придумали ещё один девайс для контроля, сложный и во многом противоречивый. Сейчас они уже не используются, а кассы такой системы запрещены к применению. Тем интереснее заставить их работать сейчас. Конечно, в магазин такую уже не поставишь, но посмотреть на сами аппараты после многих лет простоя мы сможем. Итак, в сегодняшней статье поговорим про электронную контрольную ленту, применявшуюся в кассовых аппаратах. Заодно препарируем один такой блок, посмотрим на схемотехнику касс тех лет, а заодно и узнаем, действительно ли такое решение обеспечивало должную защиту. Как водится, будет много интересного.
https://habr.com/ru/companies/timeweb/articles/844140/
#timeweb_статьи #кассовый_аппарат #эклз #фп #феликс #касби #касса #меркурий #i2c #rs232 #uart #arduino #криптопроцессор
-
Функциональные коллекции в Java с Vavr: обзор и применение
Приветствую всех, кто устал от бесконечных проверок на null , громоздких блоков try-catch и мутирующих коллекций. Если вы когда-нибудь мечтали о том, чтобы привнести в Java немного функциональности, то я рад рассказать вам о библиотеке Vavr.
-
Архитектура и ООП
Изначально этот материал планировался как урок в PHP-курсе по полиморфизму. Но он, в конце концов, перерос сам урок, и я решил сделать из него отдельную статью. В ней практически ничего PHP-специфичного, поэтому рекомендуется для прочтения всем без исключения. Напомню, что модель классов PHP взята из Java. Наличие интерфейсов и всех сопутствующих элементов очень сильно влияет на способ организации кода в PHP. Этот способ часто отличается от того, как организуется код в JavaScript, Ruby или Python. И ещё больше отличается от таких языков, как Clojure или Elixir. И всё это на фоне того, что в каждом из этих языков есть ООП. ООП в этих языках настолько разное, что PHP-программисты, попадающие в Ruby или JavaScript, не понимают, как так можно писать, ведь многие подходы противоречат их представлениям о мире. То же самое происходит и в обратной ситуации. Так где же правда? Правда в том, что есть вещи, которые действительно определяют архитектуру кода. И это не структура классов, не наличие интерфейсов и не использование полиморфизма. Возьмём тот же MVC. В нём говорится о слоях, об их задачах (зонах ответственности) и способе взаимодействия друг с другом. Это крайне важно для модульности. В модульной системе отсутствуют циклические зависимости. В MVC ничего не говорится про классы и ООП в целом, потому что между этими понятиями нет связи. Реализовать MVC можно в любом языке общего назначения, каким бы он ни был. То же самое можно сказать обо всех других архитектурных шаблонах. Архитектура опирается на особенности среды, в рамках которой она применяется, а не на конструкции языка. Например, в вебе господствует HTTP, который построен вокруг концепции "запрос-ответ". Именно поэтому микрофреймворки разных языков выглядят так похоже, независимо от того, есть там ООП или нет: в каждом микрофреймворке есть запрос, ответ и обработчик ответа. Подробнее о разработке я пишу в своем телеграм-канале организованное программирование . Присоединяйтесь если статья понравилась :)
https://habr.com/ru/articles/833968/
#ооп #фп #чистый_код #архитектура #паттерны #проектирование #хекслет #за_php #эрланг_ван_лав
-
В общих чертах про функциональное программирование в Rust
Привет, Хабр! Функциональное программирование предлагает такие концепции, как иммутабельность данных, чистые функции (т.е, результат работы которых зависит только от входных данных и не производят побочных эффектов), а также функции высшего порядка, которые позволяют работать с функциями так же, как с данными. Эти идеи вносят определенную строгость и предсказуемость. Хоть Rust не является чистым функциональным языком программирования, однако он имеет множество инструментов, позволяющих применять функциональные принципы. Rust поддерживает рекурсию , хотя и без оптимизации хвостовых вызовов, что является отступлением от некоторых традиционных функциональных языков, таких как Haskell . Тем не менее, язык предоставляет мощные абстракции и паттерны, такие как владение и заимствование . Rust также поощряет иммутабельность данных по умолчанию, что является в целом базой ФП. Переменные в Rust иммутабельны по умолчанию, и язык требует явного указания mut , если хочется изменить значение. Кроме того, Rust имеет поддержку функций высшего порядка и замыканий.
https://habr.com/ru/companies/otus/articles/802995/
#ФП #функциональное_программирование #rust #программирование
-
Монады как строительные блоки функционального Java
Монада – это структура, которая описывает способы композиции абстракций. Можно представить монаду как контейнер, который может хранить в себе другие значения или операции. В этой статье мы рассмотрим то, как реализуются монады в Java.