В чем разница императивного и декларативного подхода в javascript? Это процедурный и ООП стили?

Правильно ли я понял? Объясните начинающему.
Если можно, то с примером кода (хотя бы элементарным)
  • Вопрос задан
  • 19039 просмотров
Решения вопроса 1
@pikkvile
developer
Моё понимание такое.
Декларативное программирование - это когда в коде описано что должно получиться, а императивное - когда написано как это сделать. Т.е. в первом случае мы совершенно не интересуемся, каким именно образом машина сделает работу, какие инструкции в каком порядке выполнятся и так далее, мы просто объясняем ей, что хотим увидеть в результате. Примеры декларативных языков - html, css, sql, конфиг nginx. Ещё тут стоит упомянуть функциональные языки (lisp, haskell), программы на них тоже, как правило, являются описанием (декларацией) того "что должно получиться". Ну, короче говоря, мы говорим компьютеру: вот смотри, мне надо чтобы было так, а как ты это сделаешь, мне не интересно. Аналогия такая: у меня есть чертёж бани, я даю его бригаде строителей и уезжаю. Как именно они там будут таскать брёвна, пилить доски и прочее - я не в курсе.
Программируя императивно, мы описываем конкретные шаги, действия и точный порядок, в котором их нужно исполнять. Напрямую руководим процессом, непосредственно отдаём приказания. Примеров масса, большинство популярных языков императивны, в том числе и javascript. Ты пишешь: вот, сделай-ка переменную myVar, потом запиши туда число 5, повторяй это до тех пор, пока что-то не случится... и так далее. Возвращаясь к примеру с баней, ты теперь - начальник бригады, именно говоришь какое бревно куда класть.
Что касается процедурного и объектно ориентированного стилей, это немного о другом. Я бы сказал, что это два разных способа писать императивные программы. В процедурном случае мы организуем код, наши команды (приказы машине) в виде процедур. Процедура - набор команд. Это довольно простой способ организации кода и исторически более ранний. ООП - это чуть более сложный подход к организации кода, когда мы группируем инструкции и данные, которыми они манипулируют, вместе. Объект - это состояние (данные) плюс поведение (набор методов). Но это уже немного другая история.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
x67
@x67
Императивный подход - ты рассказываешь машине, как решить задачу.
Декларативный подход - ты рассказываешь машине, какой результат от нее хочешь. Тут примером может быть sql - запрос, в котором ты описываешь, какими свойствами обладают данные, которые ты хочешь получить. А как ищутся и сортируются эти данные, ты не пишешь и грубо говоря тебя это не интересует.
Ответ написан
gadzhimari
@gadzhimari
frontend-developer
Андрей, тут понятно объясняется различия между двумя подходами
Ответ написан
Комментировать
@dmtrrr
Backend developer
Нет, процедурное програмиирование и ООП относятся к императивному стилю программирования.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы