1. Проще описываются некоторые задачи, особенно - математические. В математике вообще туго с циклами и переходами. 2. Иммутабельность. В процесс не вмешивается внешняя среда и не влияет на вычисления - никто не поменяет тебе значение переменной посреди процесса.
>>229043566 (OP) На плюсах лямбда это просто сахарок, чтоб сделать код более локальным. Например, мне надобно указать предикат для std::find_if. Без лябмбы придется создавать отдельную функцию. А анонимную лямбду прям впихиваешь в месте использования std::find_if.
>>229044490 Задача брошенного камня под углом к горизонту. Ты можешь расписать уравнения кинематики для него, а можешь сводить его энергетический баланс. Или ещё как-нибудь, хуй знает, что ты там выдумаешь. Но результат ты и так и так получишь один и тот же, а вот твой способ решения задачи - это, можно сказать, "паттерн физики".
ФП - это про декларативное иммутабельное проганье, а вообще лучше забей, даже если будешь думать, что понял, то в глазах шарящего человека всё равно будешь выглядеть долбоёбом, сужу по себе. Ну а если всё равно интересно, то вот тебе набор терминов, разберись, что что значит и как друг с другом связано и у тебя будет общее представление о фп: цепочки функций, конвейеры функций, линзы, функторы, монады. Ну и как бонус плюсы и минусы: Плюсы: 1. Легко тестировать 2. Легко читать 3. Легко реюзать код 4. Легко рефокторить Минусы: 1. ХУЙ НАПИШЕШЬ, СЕРЬЁЗНО, ПРОСТО ЗАБЕЙ, ОНО ТОГО НЕ СТОИТ.
>>229044490 Программирование = сингулярность большого взрыва где все перемешано, всякие goto и прочая шелуха. Никакого порядка и программы создаваясь сразу же распадаются Парадигмы программирования = эпохи, которые забирая часть свободы поведения материи, способствуют развитию материи (программам)
То есть, можно сказать, что парадигмы программирования ничего не добавляют, а только убавляют, как бы указывая нам чем мы можем пользоваться, а чем нет
>>229044490 Это основные конвенциональные пути развития концепций, идей подхода к созданию кода. Мелкие задачи по большей части похуй как решать, гвоздь можно и компьютерным монитором забивать. Но когда проекты огромные, тянутся на десятилетия и ими заняты тысячи человек, нужно с умом подходить. И все, конечно, подходят по разному, у каждого своя философия. Но в ходе естественного отбора, а так же "так исторически сложилось" выживает небольшой ряд концепций.
лямда - это просто анонимная функция, нужна, например, чтобы не писать какой-то кусок кода так, будто ты его переиспользовать собрался, (думать куда его положит, как его вызывать), а просто на месте уже выполнить работу. Scala нужна просто потому, что она есть, а на jvm других нормальных языков нет, кроме неё и самой java. остальное или помойка, типа котлина от шараш-конторы конченных долбоёбов или зомби, типа groovy.
>>229045210 В пизду, всё лето тщательно учил и конспектировал Луиса Атенсио, в итоге попытался всё это применить на своём пет-проекте и нихуя не получилось, почувствовал себя только дауном каким-то, в пизду это ФП, тем более, что нету нормальных либ на жс, которые бы в полной мере и комбинаторы и линзы и монады и функторы добавляли.
Смысл в том, чтобы обрабатывать данные, протаскивая их через цепочку чистых функций (это функции в их именно математическом смысле -- дали набор значений, выплюнуло какое-то ещё значение). Это позволяет писать код не как убогая обезьяна благодаря отсутствию побочных эффектов и ряде иных дополнительных преимуществ, на функциональных языках проще метапрограммировать и в целом за ними будущее. Сейчас это игрушка для хипстеров
>>229045353 Монада, как я понял, это интерфейс, определяющий, каким образом должны храниться и извлекаться данные, а классы, реализующие этот интерфейс - монадические типы.
>>229045938 Задача: Есть большое говно Как сделать так, чтобы говно работало? Популярное решение: разбить на много маленьких говняшек и заставить их общаться между собой чисто по делу Тогда можно будет поменять одну говняшку на другую, в другой что-то подлатать и когда всё сломается, тебе не придётся лезть в остальные говняшки, потому что они точно не виноваты ООП это просто очередная попытка решить эту задачу
>>229045825 Можно через одно место, есть такой дядька, Луис Атенсио, он показал, через какое, до монад, когда просто про цепочки и конвейеры было мне книжка нравилась, но начиная с функторов и продолжая монадами какое-то натягивание совы на глобус началось, хотя мб тс решает эти проблемы, но чёт хз.
>>229045478 Удобно. У тебя нет данных отдельно, и отдельно их обработчиков. Ты можешь сказать "Машинка N3, едь", и машинка поедет, потому, что класс Машина знает, что такое "едь". А еще ты можешь сказать, что есть Ездуны - Машина, поезд, велосипед. И сказать "Ездун №1, едь". Тебе похуй, что там под капотом.
Как с дисками в винде - тебе похуй, что это - HDD, флешка, сидюк, или виртуальный диск - благодаря магии полиморфизма и одинаковым интерфейсам ты ко всем ним обращаешься одинаково.
>>229045708 Т.е если понравившийся мне плагин я захочу использовать в будущем и свободно его кастомизировать, добавлять в него новые функции лучше сразу переписать его по ООП?
а все почему? потому что можно это написать, но, как один анон высказался, хуй потом прочитаешь.
типичные фронтенды, обычно (в зависимости от среды), пишутся в концепции WRITE ONCE RUN ONCE Соответственно, на других языках получается то же самое. на фронте это еще терпимо, а вот бэк, написанный на ФП, можно сразу похоронить при любом изменении, а так же включении нового разработчика.
Особенно в ФП бесит концепция замыканий - тупо костыль, потому что запоминать состояния, оказывается, НАДО - DON'T YOU SAY! В типовых случаях, в сколько-нибудь сложных проектах (а такие - почти все), получается лестница из N-уровней замыканий, в итоге ООП код на том же языке выглядит проще (SIC!)
>>229045861 Веб разработка не предполагает поддержки и развития 2436510. ООП всё таки парадигма, которая заставляет тебя мыслить категориями разделения обязанностей. Хотя у меня в проекте есть класс, в котором 8500 строк и еще примерно столько-же в классах, его обслуживающих.
>>229046293 >>229046354 переписывать по-любому придется, если будет изменение. По этому есть ООП, SOLID и прочая хрень, которая учит, как писать так, чтобы переписывать было проще и дешевле.
Тоже собираюсь поближе к датасайенсу валить. Но дело движется медленно.
Собственно, я не свалил из BW, потому что пообещали проект на Data Intelligence. Юпитерские ноутбуки, сгребание данных питоном, в общем все, как у людей.
>>229046667 я работал на дата-саенс год, скучно пездец. Data Intelligence - говно, как и остальное от САПа. сразу думай, куда валить дальше, вот тебе совет.
>>229046383 По поводу замыкание вообще хуйню спизданул. ФП - это не про то, что ничего запоминать не надо, ФП про разделение данных и логики для их обработки, очевидно, блять, что для конфигерирования каррированных абстракция нужны будут замыкания.
>>229045478 Посмотри на окружающий мир - все вокруг взаимосвязано и меняется. И у ООП и у ФП есть свои плюсы и минусы, утверждать что одно превосходит другое может только школотрон или студент, которые ничего реально не писали. Весь большой энтерпрайз почти всегда сидит на ООП, потому что там огромный клубок зависимостей и мутаций объектов. На ФП можно взамен реализовать набор микросервисов с односложными задачами, но в какой-то момент можно будет охуеть от их количества и их менеджмент уже будет не релаебл по ресурсам.
>>229043566 (OP) Попробуй без функционалки перевести например лист с размером в 10000, в какую нить другую коллекцию, например в мапу. Не забудь туда еще фильтров пару навернуть ну и и чтобы побыстрее. Сразу поймешь в чем соль
>>229047275 Дейкстра делал множество экстраординарных высказываний, если ты слепо им веришь только исходя из его авторитета - попробуй на досуге думать своей головой тоже
Вполне можно работать на поддержке разрабом (а если хочется порулить, начальником отдела) до самой пенсии на не самой плохой ЗП.
Видел пару живых примеров.
Ну и перекат в консалты тоже опция, а там уже вверх по грейдам и фриланс. А SAPовский фриланс (особенно на Европу), сам понимаешь, это не за сраные крохи на апворке биться.
>>229047331 Хуйня еще в том, что часто ту или иную фичу отбрасываешь, а она, ОКАЗЫВАЕТСЯ НУЖНА. и все катится по пизде, как ФП, так и ООП. Только ООП, при правильном подходе (что тоже, очень не часто), можно без лишней крови изменить. Про ФП в таких случаях писал выше, пара анонов то же самое писали.
>>229047858 Мне нечего сказать, когда я пишу маленькие процедуры под каждую задачу, а потом они складываются в другую процедуру, у меня поёт сердечко и всё работает
>>229047973 да к тому времени SAP, особенно BW, совсем перестанут ставить. И так его использует 20 компаний в РФ, а BW уже перестают использовать. ERP еще куда ни шло
>>229048057 Это отлично, когда так работает. У меня у самого так работает, пока оно у меня на руках, и не растет. А когда появляется сложность, тогда трындец
Процедурный подход не есть плохо. Просто ООП и инфраструктура вокруг него лучше заточена под макак. Нарисовал UML-диаграмму, сгенерил из нее каркас, написал спеки, и нехай макака пустые места заполняет.
>>229048135 >И так его использует 20 компаний в РФ, а BW уже перестают использовать
Бля, не знаю, где там что перестают. Там, где я работаю, BWшников набирают, да и в принципе вакансий по BW не мало. Одно время было, да, когда BW собирались закапывать, особенно с выходом ханы и s/4. Но пока маятник движется в обратном направлении, как и в целом рынок SAP. Но да, в том виде, в котором раньше использовалось BW, теперь не используется. Это уже больше именно data warehouse, как и должно быть, а не ой, у нас что-то отчет долго формируется, давайте запихнем его в BWшный куб.
>>229048498 блин, у меня в автопоиске 10-20 позиций по BW+HANA. Запрашиваемую мной ЗП не дают еще до собеседования. Короче, я перспектив че-то там не увидел совсем
У меня на одном проекте был процедурный код на 1500 строк. Его пытались переписать 4 раза, 4 разных разработчика, в т.ч. я. Не удалось ни разу, так и работает в режиме легаси. Бывают запущенные случаи
>>229049372 это всё таки не совсем цикл в понимании процедурного ЯП, у него задачи другие - в процедурах цикл может быть и без какого-либо итератора или выходного значения, просто цикл ради повторения одного действия.
>>229043566 (OP) простота восприятия и масштабирования математичность * легко тестировать Но это предельно однобокое восприятие парадигмы, на практике всё сильно зависит от задач и проекта. Полностью всё хуярить на функциональщине верх уебанства, как и излишне усложнять простые решения при помощи ООП. Именно поэтому современные не эзотерические языки позволяют совмещать два подхода.