Фεδως
https://habrahabr.ru/post/169601/
Алексей
сomorsiс
хорошие программисты не кодят
Дима
KlonD90
вообще ООП и ФП для решения разных задач по сути. ООП для структурирования отвественности внутри приложения и не решает проблемы написания кода, а лишь определяет области отвественности. ФП же по сути заменяет императивный подход.
Дима
Ruslan
сomorsiс
вопрос в том, строить ооп на фп или фп на ооп
Дима
сomorsiс
ок(
Дима
Причём дважды нет
Алексей
Дима
Первый раз нет — потому что ООП включается в ФП
Дима
А второй раз нет — потом что ты в жс и так или иначе всё равно будешь использовать объекты 😄
Ale
а фп в ооп
Дима
Дима
Сорян
Дима
Настало время для классики
Дима
KlonD90
проблема короче в 2k17м что у нас есть уровень микро сервисов и нахер не нужно отдельный вид выноса мозга для того чтобы раздробить ответственность. Мы просто пишем код который решает проблемы и встраиваем его как сервис. ООП это все таки борьба с тем чтобы монолит нормально работал и один инженер не мешал другому.
Дима
Я уже говорил выше, ооп — это просто наобум выдернутые практики без понимания их природы
Дима
Вот честно, они без изменений останутся
Дима
Просто это культ карго
Дима
Почему работает паттерн "Компоновщик", Что такое на самом деле "Итератор"?
Дима
Это расхожие практики
Ale
Дима
Но если понимать, почему именно они работают, их сами будет проще использовать
Дима
ФП ничего не добавляет к ооп кроме книжки про ародинамику к соломенному самолёту туземцев
KlonD90
Дима
Этот подход не заставляет его ломать, просто рассказывает, зачем ему крылья
Дима
Тогда я не понимаю в чём проблема
Дима
Функциональный подход даже не запрещает продолжать использовать объекты
Дима
Внезапно
Ale
давай конкретнее, обоснуй с точки зрения фп “стратегию”, а потом low coupling/high cohesion
Ruslan
ФП - это будущее, через несколько лет, когда появится больше таких либ как Ramda, вы будете жалеть, что не вникли в ФП сейчас
Дима
data ColorContainer = ColorContainer {
name :: String,
mainColor :: Color,
defaultColor :: Maybe Color
}
instance showColorContainer :: Show ColorContainer where
show :: ColorContainer -> String
show (ColorContainer col) = "Color[ " <> col.name <> " ] "
Дима
Упс, мы только что сделали оопшный объект в фп и нас не ударила молния
Ale
а в жс функция это объект и молния нас опять не ударила
Ale
вот так да
Дима
Ниже самого объекта — описание тайпкласса Show для этого объекта, который позволяет вам описать способ вывода этого объекта на печать
Дима
Ничего нового, вы заметили?
andrei
лол
andrei
Это же не ооп, а полиморфизм
Дима
Почему то всем кажется, что с фп щас набегут странные люди и начнут обмазываться монадами, когда это просто перечень законов для окружающего дикого запада
Ale
монады просто способ управления эффектами в хаскеле, че тут такого
Ale
Дима
Когда флеймили в фп чате
Ale
мы там только этим и занимаемся лол
Ale
я честно не помню)
Дима
😄
andrei
Ale
Дима
Блин, я сам уже найти не могу)
Дима
Дима
Какой костыль, это теория категорий
Ale
теория категорий это костыль
Ale
вон ооп без всяких новых теорий работает, шах и мат
Дима
А мутабельные переменные в цепи математических вычислений, вообще такого понятия не имеющих — это конечно не костыль и расово верный подход
Ale
кто кого не имеет?
Дима
В вычислениях нет мутабельности
Дима
То, что в компьютерах они типа есть — это родовая травма и тяжкое наследие давних костылей, а не преимущество
Владимир
У мутабельных переменных есть физический смысл - ты кладешь значение в регистр
Владимир
Или в память
Ale
и математическая модель, один педик придумал
Владимир
Потом заменяешь
Владимир
Нет, другим значением.
Дима
😂
Дима
Хорошо поправил конечно
Дима
Особенно это актуально в джаваскрипте
Владимир
Короче, этот флейм не имеет практического смысла. На фп-языках не написано статистически значимого объема кода, невозможно сказать, рабочая ли это концепцич
Дима
В котором, в отличии от вычислений, вообще нет регистров
Дима
Владимир
Ты давай, дебатируй. Ясно, что тебе смешно, но если хочешь донести мысль, ебашь аргументами