2016-07-22 3 views
1

Когда я смотрю на многочисленные веб-сайты. Некоторые используют объектно-ориентированное программирование и обязательное программирование взаимозаменяемо, в то время как другие говорят, что они разные.В чем разница между императивным и объектно-ориентированным программированием?

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

+0

Этот вопрос лучше подходит для программистов.stackexchange.com –

+2

@RobK нет, это действительно не так. На эту тему написаны _books_ и священные войны о терминологии. Он не несет ответственности нигде за пределами, возможно, диссертации. – enderland

+0

@enderland "Меньше плохой подгонки" тогда? Но мы согласны, что это, конечно, не очень подходит для этого. –

ответ

5

Это сложный вопрос, поскольку используемые термины часто означают разные вещи для разных людей.

Грубо говоря (хотя некоторые говорили бы «строго говоря») императив является противоположностью декларативного.

Строгие сторонники ОО, вероятно, скажут, что ОО декларативно. См. Стиль «Объект мышления» OO в книге Дэвида Уэста с этим именем и в этом блоге: http://www.yegor256.com/.

OO, как это часто практикуется, часто «деволюционирует» (опять же, другие резко расходятся) в очень процедурный и императивный стиль, где вы начинаете рассказывать компьютеру о том, что делать, а не описывать и моделировать реальный мир (в некотором смысле) с вашими объектами.

(Here's видео, которое может быть полезным. Он противопоставляет процедурного программирования и ОО, и для наших целей «процедурный» примерно синонимом «императивный».)

Я знаю, что это не большой ответ, но, возможно, это полезно.

+0

Так что ООП почти метафорически похож на человека в середине между процедурными и императивными парадигмами? – attachPost

+0

@attachPost, пожалуйста, отредактируйте свой вопрос или попросите нового, а не начните обсуждение в комментариях. – jaco0646

+1

Не совсем уверен, что вы имеете в виду @attachPost, но я бы сказал, что ООП можно считать либо императивным, либо декларативным в зависимости от того, как вы определяете ООП. Для полного раскрытия я перехожу к мнению, что «хороший» ООП (должным образом понимаемый ООП) является в основном декларативным. Чем более императивным или процедурным он становится, тем больше вам не хватает смысла. И в идеале не должно быть много (если есть) смешения двух подходов. Это мнение не будет хорошо сочетаться со многими людьми. Но вы должны хотя бы осознавать две «крайности». :) –

0

Прибывая сверху вниз, существуют два основных подтипа императивных языков.

  • Процедурные языки (например, BASIC, FORTRAN) -, где код и данные обрабатываются как полностью отделены, и имеют простой код-работает-на-данных парадигмы.

  • Объектно-ориентированные языки (OO), где данные и код (в виде методов) объединяются в объекты. В языках OO дополнительная структура накладывается в большей или меньшей степени на метаданные (такие как информация о классе).

+0

Не путайте языки программирования с парадигмами программирования. Большинство современных языков поддерживают несколько парадигм. – jaco0646