Чем ООП лучше функционального программирования?
Новая тема Написать ответ
# Вс Май 12, 2013 6:51 pmYabuti Зарег.: 28.11.2008 ; Сообщ.: 16263Ответить с цитатой
Всем привет!
Кто пишет с использованием парадигмы ООП, скажите, чем ООП лучше функционального программирования?

Я уже третий день мучаю Мука, AS3, там сходу классы, объекты, я уже зае*ался код строчить, чтобы написать что-нибудь простенькое.
Чтобы вывести на экран Pet's name: Sharik, нужно создать пакет, два класса, два конструктора, экземпляр и локальную переменную. И писать что-нибудь вроде: var current_class = new com.domain.packet.subclass(); очень напрягает, даже с быстрой вставкой из выпадающего списка.

В PHP я проходил классы, но старался их не использовать, мне всегда хватало обычных функций. Сперва код, ниже функции. Сначала в // расписывал основную структуру, сразу вызывая функции и создавая "болванки" для них внизу скрипта, а потом заполнял.
А тут, в AS3 без ООП шагу не ступить, куча лишней работы.

Я просто не понимаю, зачем вообще нужно так нагромождать конструкции, ведь все можно сделать на функциях, без всяких "new what.the.fucking.class.object.is.thisss(new chto.eto.za.ogromnyi.objekt.dlya.prostogo.deistviya())" r5

Может я чего-то недопонимаю и ООП в самом деле действительно лучше функционального программирования. Хотелось бы понять, чтобы не заставлять себя писать в ООП скрипя зубами.

Спасибо! Drinks or Beer
# Вс Май 12, 2013 8:18 pmCodd Зарег.: 13.01.2011 ; Сообщ.: 186Ответить с цитатой
Выйди на улицу ночью и прокричи "Разработчики AS мудаки!"
После чего вернись домой, сядь за комп и продолжи писать то, что начал. Продолжи писать в ООП стиле, поскольку AS - это ООП ЯП и это факт.
# Пн Май 13, 2013 3:01 pmveligursky Зарег.: 14.07.2008 ; Сообщ.: 1127Ответить с цитатой
Codd писал(а):
Выйди на улицу ночью и прокричи "Разработчики AS мудаки!"
После чего вернись домой, сядь за комп и продолжи писать то, что начал. Продолжи писать в ООП стиле, поскольку AS - это ООП ЯП и это факт.


лучше днем и в офисе разработчиков :nah:, не забудь снять на видео = профит на лечение

а по факту - все равно придешь к ООП
# Сб Май 25, 2013 10:36 amBalanceuuiii Зарег.: 04.03.2013 ; Сообщ.: 33Ответить с цитатой
Для чего то маленького и простенького конечно лучше функциональное подходит! ООП изобрели там, где обычного программирования перестало хватать..
# Сб Май 25, 2013 11:28 ambanzai Зарег.: 24.05.2007 ; Сообщ.: 729Ответить с цитатой
Yabuti, ООП нужно для масштабных разработок и грамотного многократного использования кода, он не лучше, он другой. Те, кто много кодят, однажды объединили структуры данных с функциями про их обработке, вот и получились объекты. А чтобы не лопатить код первоисточника :nah: , додумались наследовать и переназначать отдельные методы. Но смысл тот же - ООП следующая ступень эволюции многократного использования кода, когда просто библиотек функций оказалось недостаточно.
# Ср Май 29, 2013 3:29 pmEditeur Зарег.: 19.06.2010 ; Сообщ.: 382Ответить с цитатой
Путаете функциональное, процедурное и объектно-ориентированное.

ООП хуже ФП практически всем, кроме нескольких важных вещей - I/O в объектных/процедурных языках более естественный, т.к. I/O по своей сути,как и сами эти языки, императивен; для человека думать в императивном стиле (делаем A, затем B, затем C) более естественно, чем в функциональном, где порядок выполнения как правило не определен. Формочки в ООП стиле, с мутабельным стейтом, делать проще, чем таскать весь большой стейт с собой в каждом вызове.

К сожалению, на практике, многократного использования кода с ООП не получается, именно потому, что данные, часто очень сложные, объединены с алгоритмами их обработки. Причем не просто объединены, а одни данные находятся в одном месте (поля объекта), другие передаются через параметры методов, третьи глобальные, четвертые локальные + учитываем полиморфизм с наследованием, постоянно изменяющиеся требования и в результате получается каша, которую нигде кроме как в конкретном проекте использовать очень сложно. ООП очень многословен, все эти абстрактные фабрики абстрактных адаптеров java-стайл замусоривают код так, что обвязки получается в разы больше, чем полезного кода.

Главное в функциональном программировании - отсутствие побочных эффектов у функций, отсутствие глобальных мутабельных данных, и как следствие каждый набор входных данных однозначно соответствует каждому набору результатов. Результат - каждая функция (кроме I/O) это алгоритм, сразу же пригодный для повторного использования. И если функция оттестирована на некотором наборе входных данных - она всегда будет работать правильно на этих данных.

В процедурном, за счет глобальных мутабельных данных, такого соответствия входных и выходных параметров нет. В ООП то же самое, что и в процедурном программировании, т.к. поля объекта мутабельны, только в придачу к глобальным переменным добавляются еще и поля объекта. В ООП/процедурном программированиее функции могут, возвращая одинаковые результаты, менять глобальный стейт по-разному. В результате тестируем метод на одних входных данных, потом другой метод меняет поле объекта, и первый метод перестает работать, хотя в нем самом ничего не менялось.
# Ср Май 29, 2013 3:46 pmEditeur Зарег.: 19.06.2010 ; Сообщ.: 382Ответить с цитатой
Забыл добавить, чем же процедурное хуже ООП. Хуже прежде всего тем, что стейт приходится таскать через параметры процедур и функций. Но при этом есть еще некий глобальный стейт, который эти функции свободно могут менять. Такой код тяжело тестировать и тяжело использовать, имеем все недостатки и ООП и ФП.
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.