Введение в программирование

Переменные, декларативное и императивное программирование

Vyacheslav Makarov

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

Выберите концепции, имеющие прямое отношение только к императивному программированию (нужно выбрать все правильные ответы)

  1. вызов функции
  2. рекурсия
  3. константа 4.цикл while
  4. переменные и изменение состояния

R. D.

Вы правы про изменение состояния. Но почему рекурсия? У этого вопроса два правильных ответа, и второй ответ связан с первым — с изменением состояния. В каком из пунктов происходит изменения состояния?

Vyacheslav Makarov

Спасибо за пояснение.

Vyacheslav Makarov

Суть в том, что декларативный и императивный подходы отличаются в способе достижения цели. Для императивного подхода необходимо задать четкие указания, как выполнить ту или иную задачу. К примеру: "чтобы приготовить пирог, мне нужно купить продукты". Декларативный: "приготовь пирог". Т.е. в декларативном подходе мы не опираемся на инструкции необходимые для реализации задачи, нам просто нужно её выполнить, не задумываясь о её деталях. Для примера (очень хорошего) можешь ознакомиться с элементами html и поймешь разницу. Сам долго разбирался, так как при декларативном подходе зачастую можно встретить нотку императивного и тут уже нужно мозговать:) Та же рекурсия имеет описание что ей необходимо сделать (как бы императивность есть), но в то же время это описание уже является желаемым результатом, чего не скажешь о сортировке, в которой много инструкций по достижению результата.

Дмитрий Храпонов

На моё усмотрение к императивному тут явно относится только рекурсия и изменение состояния

Попробуйте ещё раз вернуться в теорию где рассматривается пример с факториалом. Я напомню, что рекурсивная функция – декларативна. А что используется в итеративной функции факториала? Ответив на этот вопрос вы скорее всего пройдёте этот тест. Пишите, если будут вопросы.

Дмитрий Храпонов

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

Osm

Я тоже не понял вопроса )

Vyacheslav Makarov

То есть, лучше задаваться вопросом "какие изменения происходят?", а не "как"? И почему в рекурсии не происходит никаких изменений, если мы в ней меняем значение переменной? Или о каком состоянии идет речь?

Alexander

не могу пройти этот тест. теорию читал

Алексей Бузуленков

вопрос в задании сформулирован немного непонятно. только почитав тут понял что спрашивают

user-9f80592d38936c51

тоже тест не осилил...

Александр

Это боль. Как по мне, вы даёте теоритечески супер сложную в начале человеку, который только синтаксис немного осилил, а тебя тут рекурсия, декларативное, императивное, поди разберись. И ещё вопрос, вопросов в тестах стало безумно много и все они проверяют одно и то же, некоторые два вопроса почти одинаковые. Штук по 10 стало, зачем так много ? Было достаточно и 3,4 вопроса, как ранее. Ведь вся сила в практике, которая у вас и так супер-крутая!