Рубрики
Без рубрики

Императив против декларативного программирования – Разница, объясненная на простом английском

Как инструктор кодирования, мой долг отправлять программистам в мир мышление по новым способам. Основная смещение в мышлении происходит, когда мы переключаемся от декларативного программирования. Как только мои ученики выучили базовый JavaScript, мы проводим функциональное программирование и используемые методы массива

Автор оригинала: Mike Zetlow.

Как инструктор кодирования, мой долг отправлять программистам в мир мышление по новым способам. Основная смещение в мышлении происходит, когда мы переключаемся от декларативного программирования.

Как только мои ученики выучили базовый JavaScript, мы проводим функциональное программирование и методы массива, используемые в декларативном стиле кодирования. Именно здесь их мозги начинают выпить и шипеть и таять, как зефир в течение пожара.

Что такое императивное программирование?

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

Представьте, что у нас есть список наиболее часто используемых паролей в мире:

const passwords = [
   "123456",
   "password",
   "admin",
   "freecodecamp",
   "mypassword123",
];

Наше приложение собирается проверить пароль пользователя при регистрации и не позволять им создать пароль, который находится из этого списка.

Но прежде чем мы сделаем это, мы хотим уточнить этот список. У нас уже есть код, который не позволяет пользователю зарегистрироваться с паролем длиной менее 9 символов. Таким образом, мы можем уменьшить этот список только для паролей, которые имеют 9 символов или более для ускорения нашей проверки.

Неимпально мы пишем:

// using the passwords constant from above

let longPasswords = [];
for (let i = 0; i < passwords.length; i++) {
   const password = passwords[i];
   if (password.length >= 9) {
      longPasswords.push(password);
   }
}

console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Мы создаем пустой список под названием longpasswords Отказ
  2. Затем мы пишем цикл, которая будет работать столько раз, сколько есть пароли в оригинале Пароли список.
  3. Затем мы получаем пароль по индексу итерации петли, на которой мы в настоящее время.
  4. Затем мы проверяем, если этот пароль больше или равен 9 символам.
  5. Если это так, мы помещаем его в longpasswords список.

Одной из императивных сил программирования является тот факт, что это легко рассуждать. Как компьютер, мы можем следовать по шагу за шагом.

Что такое декларативное программирование?

Но есть еще один способ думать о кодировании – как процесс постоянного определения того, что есть. Это называется декларативным программированием.

Императивное и декларативное программирование достичь одинаковых целей. Они просто разные способы думать о коде. У них есть свои преимущества и недостатки, и есть времена, чтобы использовать оба.

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

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

// using the passwords constant from above

const longPasswords = passwords.filter(password => password.length >= 9);

console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

Список longpasswords определяется (или заявлено) как список Пароли отфильтрованы только для паролей, больше или равных 9 символам.

Функциональные методы программирования в JavaScript позволяют нам чисто объявлять вещи.

  • Это список паролей.
  • Это список только длинных паролей. (После запуска фильтр .)
  • Это список паролей с идентификаторами. (После запуска карта .)
  • Это один пароль. (После запуска Найти .)

Одним из декларативных сил программирования является то, что это заставляет нас спросить, что мы хотим первым. Именно в названии этих новых вещей наш код становится выразительным и явным.

И когда наши коллеги-разработчики приходят вместе и посмотрите на наш код, они могут легко найти ошибки:

«Вы называете эту переменную« индекс », который заставляет меня ожидать номера, но я вижу, что это результат фильтр который возвращает массив. Что с этим дела?

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

Вместо того, чтобы держать целый императивный процесс в вашей голове, вы можете провести более ощутимый вещь в вашей голове с четким определением.

Майк Зетлоу – это инструктор по свинцам на 10x Code Camp Отказ

Оригинал: “https://www.freecodecamp.org/news/imperative-vs-declarative-programming-difference/”