Фεδως
https://habrahabr.ru/post/169601/
Алексей
no
yes
сomorsiс
хорошие программисты не кодят
Дима
самый хорошие программисты смешивают ООП и ФП в правильных пропорциях, а не используют что-то одно
В итоге получается что твои хорошие программисты просто плохо используют фп
KlonD90
вообще ООП и ФП для решения разных задач по сути. ООП для структурирования отвественности внутри приложения и не решает проблемы написания кода, а лишь определяет области отвественности. ФП же по сути заменяет императивный подход.
Дима
В итоге получается что твои хорошие программисты просто плохо используют фп
Правда не могу сказать, что это плохо, просто надо отдавать себе отчёт
сomorsiс
вопрос в том, строить ооп на фп или фп на ооп
KlonD90
ФП можно совмещать с ООП
вот зачем это пояснение если я пишу про ортогональность? (
сomorsiс
ок(
Дима
Причём дважды нет
Дима
Первый раз нет — потому что ООП включается в ФП
Дима
А второй раз нет — потом что ты в жс и так или иначе всё равно будешь использовать объекты 😄
Ale
а фп в ооп
Дима
Сорян
Дима
Настало время для классики
Дима
KlonD90
проблема короче в 2k17м что у нас есть уровень микро сервисов и нахер не нужно отдельный вид выноса мозга для того чтобы раздробить ответственность. Мы просто пишем код который решает проблемы и встраиваем его как сервис. ООП это все таки борьба с тем чтобы монолит нормально работал и один инженер не мешал другому.
Дима
Я уже говорил выше, ооп — это просто наобум выдернутые практики без понимания их природы
Дима
Вот честно, они без изменений останутся
Дима
Просто это культ карго
KlonD90
Я уже говорил выше, ооп — это просто наобум выдернутые практики без понимания их природы
ну нет. это исторически сложившийся подход нужный проектировщикам, но не нужный кодерам. сейчас этот уровень обсуждается в терминах сервисной архитектуры.
Дима
Почему работает паттерн "Компоновщик", Что такое на самом деле "Итератор"?
Дима
Это расхожие практики
Дима
Но если понимать, почему именно они работают, их сами будет проще использовать
Дима
ФП ничего не добавляет к ооп кроме книжки про ародинамику к соломенному самолёту туземцев
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
Ничего нового, вы заметили?
тайпклассы могут в полиморфизм, ничесе
Дима
Почему то всем кажется, что с фп щас набегут странные люди и начнут обмазываться монадами, когда это просто перечень законов для окружающего дикого запада
Дима
тайпклассы могут в полиморфизм, ничесе
Я ещё помню как ты иронизировал над тем, что Array — это функтор, ага)
Ale
монады просто способ управления эффектами в хаскеле, че тут такого
Дима
Когда флеймили в фп чате
Ale
мы там только этим и занимаемся лол
Ale
я честно не помню)
Дима
😄
andrei
монады просто способ управления эффектами в хаскеле, че тут такого
монада просто моноид в категории эндофункторов, че тут такого
Ale
Я ещё помню как ты иронизировал над тем, что Array — это функтор, ага)
так не напомнишь? Я даж историю чатика полистал, но чет про array не нашел(
Дима
Блин, я сам уже найти не могу)
Дима
Владимир
Я вам по секрету скажу, но ооп — это просто один тайпкласс в ФП — комонада
Хуемонада. Монады - это дикий костыль, который пришлось внести, потому что фп не подразумевает сайдэффектов
Дима
Какой костыль, это теория категорий
Ale
теория категорий это костыль
Ale
вон ооп без всяких новых теорий работает, шах и мат
Дима
А мутабельные переменные в цепи математических вычислений, вообще такого понятия не имеющих — это конечно не костыль и расово верный подход
Ale
кто кого не имеет?
Дима
В вычислениях нет мутабельности
Дима
То, что в компьютерах они типа есть — это родовая травма и тяжкое наследие давних костылей, а не преимущество
Владимир
У мутабельных переменных есть физический смысл - ты кладешь значение в регистр
Владимир
Или в память
Ale
и математическая модель, один педик придумал
Владимир
Потом заменяешь
Дима
Потом заменяешь
ДРУГОЙ ПЕРЕМЕННОЙ АХАХА
Владимир
Нет, другим значением.
Дима
😂
Дима
Хорошо поправил конечно
Дима
Особенно это актуально в джаваскрипте
Владимир
Короче, этот флейм не имеет практического смысла. На фп-языках не написано статистически значимого объема кода, невозможно сказать, рабочая ли это концепцич
Дима
В котором, в отличии от вычислений, вообще нет регистров
Владимир
Ты давай, дебатируй. Ясно, что тебе смешно, но если хочешь донести мысль, ебашь аргументами