Альтернативы объектно-ориентированному программированию? - PullRequest
68 голосов
/ 12 августа 2010

ООП, вероятно, является наиболее используемой парадигмой программирования в современном дизайне программного обеспечения.Мой вопрос - какая другая парадигма (ы) может конкурировать с ней и может стоять на месте упс ?Чтобы прояснить этот вопрос, я не спрашиваю о том, какие существуют другие парадигмы.Их много, и я хотел бы знать, какой из них:

  • Используется на практике, а не только в теории.
  • Может конкурировать с ООП , поэтому его можно использовать в большом проекте без или с минимальными затратами.
  • Может использоваться для разработки настольного приложения с бизнес-логикой, базами данных и т. д.
  • Нетиспользуется с компаньоном oop, но может заменить oop.

И если есть, каковы плюсы / минусы этого, почему он лучше / хуже, чем oop, какие языки лучше всегоиспользовать его, как насчет использования его на популярных языках, есть ли у него какие-либо шаблоны проектирования, и может ли он полностью заменить oop?

Ответы [ 5 ]

41 голосов
/ 12 августа 2010

Функциональное программирование - еще одна популярная парадигма программирования, в основном в академических кругах.Лучший пример функционального языка программирования - Haskell и Standard ML .

Принципиальное отличие функционального программирования от объектно-ориентированного программирования в том, что вы программируете в том смысле, поток данных вместо поток управления .См. Презентацию Эффекты укрощения с функциональным программированием от Саймон Пейтон-Джонс для хорошего ознакомления.

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

Существуют также новые функциональные языки программирования, сочетающие функциональное программирование с ООП.Два хороших примера: F # для платформы .NET и Scala для платформы Java;они часто могут использовать существующие библиотеки на платформе, написанные на других языках.

Тенденция новых языков программирования в настоящее время - Мультипарадигма , где комбинируются несколько парадигм, таких как объектно-ориентированное программирование и функциональное программированиена том же языке.

10 голосов
/ 12 августа 2010

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

Это, безусловно, может использоваться в крупномасштабных продуктах с минимальным болевым синдромом и максимальной эффективностью

2 голосов
/ 04 сентября 2015

Векторное реляционное моделирование данных используется для создания выполнимых информационных моделей с семантикой, относящейся к области, в рамках Глобальной информационной сети, посредника в сети.

1 голос
/ 12 августа 2010

FP - Функциональное программирование - чрезвычайно популярная парадигма программирования, которая существует уже очень давно и в последние годы стала приобретать все большую популярность. FP предпочитает неизменность, а не изменчивость, рекурсию и функции без побочных эффектов. Некоторые примеры популярных языков fp: Erlang, Scala, F #, Haskell и Lisp (среди прочих).

0 голосов
/ 12 августа 2010

В настоящее время нет парадигм, которые могли бы действительно заменить ООП.Проблема с (преимуществом) ООП заключается в том, что он выполняет огромную работу за вас - автоматически высвобождая ресурсы, проверяя данные и т. Д., И облегчает проверку кода - не говоря уже о том, что подавляющее большинство существующих в мире библиотекнаписаны на языке ООП, таких как C ++, C # или Java.Реальность обойтись без таких масштабных библиотек и тому подобного чрезвычайно сомнительна.

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

Я думаю, что общее программирование придет в качестве новой парадигмы.Тем не менее, он все еще находится в стадии разработки, и только C ++ / D предлагает действительно хорошее обобщенное программирование.

...