ООП, вероятно, является наиболее часто используемой парадигмой программирования в современном дизайне программного обеспечения. У меня вопрос - какая еще парадигма (и) может конкурировать с ней и может заменить oop ? Чтобы прояснить этот вопрос, я Я не спрашиваю, какие еще существуют парадигмы. Их много, и я хотел бы знать, какой из них:
И если есть любой, каковы его плюсы / минусы, почему он лучше / хуже, чем oop, на каких языках лучше всего его использовать, как насчет его использования в популярных языках, есть ли в нем какие-либо шаблоны проектирования и может ли он полностью заменить oop?
Функциональное программирование - еще одна парадигма программирования, популярная, в основном, в академических кругах. Лучшим примером функционального языка программирования является Haskell и Standard ML .
Фундаментальное различие между функциональным программированием и объектно-ориентированным программированием состоит в том, что вы программируете в смысле потока данных вместо потока управления . См. Презентацию Укрощение эффектов с помощью функционального программирования автора Саймона Пейтона-Джонса для хорошего введения.
Хорошим примером функционального программирования, используемого в отрасли, является Erlang . В основном он используется в телекоммуникационных, распределенных и отказоустойчивых системах. См. Презентацию Erlang - Программное обеспечение для параллельного мира от Джо Армстронга .
Существуют также новые языки функционального программирования, сочетающие функциональное программирование с ООП. Двумя хорошими примерами являются F # для платформы .NET и Scala для платформы Java; они часто могут использовать существующие библиотеки на платформе, написанные на других языках.
В настоящее время трендом новых языков программирования является Мультипарадигма , где несколько парадигм, таких как объектно-ориентированное программирование и функциональное программирование, объединяются в одном языке.
FP - Функциональное программирование - чрезвычайно популярная парадигма программирования, которая существует уже очень давно и в последние годы становится все более заметной. FP предпочитает неизменяемость изменчивости, рекурсии и функциям без побочных эффектов. Некоторыми примерами популярных языков FP являются Erlang, Scala, F #, Haskell и Lisp (среди прочих).
Процедурная обработка была всем до того, как появилось ООП, она произвела несколько больших реальных приложений (фактически, большинство из них изначально) и многие операционные системы.
Его, безусловно, можно использовать в крупномасштабных продуктах с минимумом боли и максимальной производительностью
В настоящее время не существует парадигм, способных по-настоящему заменить ООП. Проблема (преимущество) ООП в том, что оно делает огромное количество работы за вас - автоматически освобождает ресурсы, проверяет данные и т.д., и это облегчает проверку кода - не говоря уже о том, что подавляющее большинство существующих в мире библиотек написано на ООП-языках, таких как C++, C# или Java. Реальность обходиться без таких масштабных библиотек и тому подобного крайне сомнительна.
В нишевых или академических мирах вы найдете много Функционального программирования. Однако, если вы действительно хотите сделать большой проект, ООП - единственный выход.
Я думаю, что родовое программирование станет новой парадигмой. Однако оно все еще находится на стадии разработки, и только C++/D предлагают действительно хорошее универсальное программирование.