169 похожих чатов

Кругозор это, конечно, очень хорошо. Но только вот все равно

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

28 ответов

68 просмотров

Не соглашусь

Romcheg- Автор вопроса

Что правда, то правда. Но ООП все равно куда выигрышнее выглядит, чем древнее процедурное программирование. А вот ФП в сравнении с ООП не так очевидно выигрывает, и выигрывает ли вообще

kei
Не соглашусь

Думаю, что проблема ООП в строении абстракций очень высоко -- ближе к реальной жизни. Это приводит к коду которую сложно композировать и часто нужно вещи заново писать. А ФП строит концепты ниже -- ближе к маленьким, но часто встречаемым проблемам. Например: Отсутсвуещие значения (Maybe), значения которых можно комбинировать (Semigroup & Monoid), складывать в одно (Foldable), функции корых можно использовать везде одинаково без страха (Pure functions), части котда которых можно рефакторить без страха (Referential Transparency) и тд тп

Где вы видели в последний раз в реальном мире фабрику фабрик?

Сложные термины возникают не каждый день и далеко не у всех(как я понял, только у тех, кто хочет, чтобы они фигурировали) Кругозор даже сам по себе - это классно и полезно, потому что: 1) тебе каждый день приходится принимать какие-то решения. Лучше прокачан кругозор - лучше решения будут получаться в среднем по больнице 2) скорее всего, ты и так используешь ФПшные приблуды. Ну или они могли бы упростить тебе жизнь в некоторых моментах(ставь класс, если хотя бы раз в жизни ставить куда-нибудь @NotNull или хотел какой-нибудь асинхронщиной по управлять и тд). Зацепил лучше фп кругозором - больше/легче проблем решаешь, где надо с фп пересечься К тому же, ты в скалачатике. Тебя тут не заставят отрекаться от опп (скорее всего)

Антон 🇦🇲
Где вы видели в последний раз в реальном мире фабр...

https://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory

Romcheg- Автор вопроса
Антон 🇦🇲
Где вы видели в последний раз в реальном мире фабр...

Паттерны - уже более высокий уровень использования. Если смотреть в корень, в основу, то ООП вполне себе обращается к понятиям из реальной жизни

Rajven
screenshot https://ws.apache.org/xmlrpc/apidocs/org/apache/xm...

В реальной жизни, а не в программистких фантазиях

Использовал apache xml-rpc на реальном банковском проекте буквально в прошлом году. Или по-вашему легаси не существует?

Rajven
Использовал apache xml-rpc на реальном банковском ...

По моему, фабрик фабрик не существует в реальном мире, так что и кивать на моделирование реального мира как преимущество ООП несколько... Неразумно

Антон 🇦🇲
По моему, фабрик фабрик не существует в реальном м...

А, в реальной жизни как в реальной жизни, а не как на практике. Тогда мои извенения.

Антон 🇦🇲
По моему, фабрик фабрик не существует в реальном м...

3D принтер, способный напечатать сам себя? Пока не существует, но к этому стремятся...

Romcheg
Паттерны - уже более высокий уровень использования...

ФП подходы тоже понятия из реальной жизни, просто под другим углом ООП со своим наследованием заставляет думать о том, что можно делать с классом, в момент его описания. Это примерно то же самое, как если бы у родителей спросили, в какой вуз пойдёт учиться их новорожденный и какая будет у него любимая еда. А в ФП есть моделька, к которой в разных контекстах можно применять разные действия, что логично, потому что в реальной жизни набор доступных нам действий зависит от того, где мы находимся

Изначально у нас есть процедурное программиование. Программа выражена вызовом процедур, управляющих данными. Мы в голове должны держать смысл всего вызываемого кода из данной процедуры, и все данные, оперируемые ей. Это вызывает высокие конгетивные нагрузки и мешает делать абстракции. Придумали два решения: абстрагироваться от данных и от вычислений. В ооп мы не знаем, какими данными оперируем, но точно знаем, что просим объект сделать. В ФП всё наоборот: мы не знаем, что и как делается и не хотим, но знаем данные. И то, и то имеет много смысла

То что вы про ООП говорите это миф. В фп сложных мат терминов нет если вы не берете хаскель и теоркат. А это далеко не главное в фп и вообще не совсем суть фп

Google Tan
Изначально у нас есть процедурное программиование....

у вас изначально процедурное, а у кого-то изначально функциональное

Google Tan
Изначально у нас есть процедурное программиование....

Вот есть у меня вот такой тезис, уже не раз описаный.

Google Tan
Вот есть у меня вот такой тезис, уже не раз описан...

Если нам надо держать реализацию того, что мы вызываем в данной единице кода, то он сложен и стремится к повышению сложности. Уверена, что вы видели это и не раз

Google Tan
Если нам надо держать реализацию того, что мы вызы...

допустим, но не понятнро как это вытекает из "Если у нас код не является чисто функциональным и мы не следуем моим идеям ооп, то он скатывается в процедурный рано или поздно, как минимум в своих частях"

Artem Sokolov
допустим, но не понятнро как это вытекает из "Если...

Процедурный код - это код, в котором программа описана данными и операциями над ними. Если мы должны держать в голове вызываемые куски кода, то у нас состояние не инкапсулировано. То есть у нас данные и операции над ними. То есть процедурный код

Artem Sokolov
как будто промт чат гпт прочитал

Да, я не редко пишу слишком топорно и математично, знаю

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта