Categories: Tecnologia

Programação imperativa versus declarativa – a diferença explicada em inglês simples


Como instrutor de codificação, é meu dever enviar programadores ao mundo pensando de novas maneiras. Uma grande mudança no pensamento ocorre quando mudamos da programação imperativa para a declarativa.

Depois que meus alunos aprenderam JavaScript básico, examinamos a programação funcional e os métodos de array usados ​​em um estilo de codificação declarativo. É aqui que seus cérebros começam a estourar, chiar e derreter como marshmallows no fogo.

O que é programação imperativa?

Como um iniciante, você provavelmente codificou em um estilo imperativo: você dá ao computador um conjunto de instruções a serem seguidas e o computador faz o que você deseja em uma sequência fácil de seguir.

Imagine que temos uma lista das senhas mais usadas do mundo:

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

Nosso aplicativo vai verificar a senha do usuário ao se cadastrar e não permitir que ele crie uma senha desta lista.

Mas antes de fazermos isso, queremos refinar essa lista. Já temos um código que não permite ao usuário se cadastrar com uma senha menor que 9 caracteres. Portanto, podemos reduzir essa lista a apenas senhas com 9 caracteres ou mais para acelerar nossa verificação.

Imperativamente, escreveríamos:

// 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. Criamos uma lista vazia chamada longPasswords.
  2. Em seguida, escrevemos um loop que será executado tantas vezes quanto as senhas do original passwords Lista.
  3. Em seguida, obtemos a senha no índice da iteração do loop em que estamos atualmente.
  4. Em seguida, verificamos se a senha é maior ou igual a 9 caracteres.
  5. Se estiver, colocamos no longPasswords Lista.

Um dos pontos fortes da programação imperativa é o fato de ser fácil de raciocinar. Como um computador, podemos acompanhar passo a passo.

O que é programação declarativa?

Mas há outra maneira de pensar sobre codificação – como um processo de definir constantemente o que as coisas são. Isso é conhecido como programação declarativa.

A programação imperativa e declarativa atinge os mesmos objetivos. Eles são apenas maneiras diferentes de pensar sobre o código. Eles têm suas vantagens e desvantagens e há momentos para usar ambos.

Embora seja mais fácil raciocinar sobre a programação imperativa para iniciantes, a programação declarativa nos permite escrever um código mais legível que reflete exatamente o que queremos ver. Combinado com bons nomes de variáveis, pode ser uma ferramenta poderosa.

Portanto, em vez de dar instruções passo a passo ao computador, declaramos o que queremos e atribuímos isso ao resultado de algum processo.

// using the passwords constant from above

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

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

A lista de longPasswords é definido (ou declarado) como a lista de passwords filtrado apenas para senhas maiores ou iguais a 9 caracteres.

Os métodos de programação funcional em JavaScript nos permitem declarar coisas de forma limpa.

  • Esta é uma lista de senhas.
  • Esta é uma lista de apenas senhas longas. (Depois de correr filter.)
  • Esta é uma lista de senhas com ids. (Depois de correr map.)
  • Esta é uma senha única. (Depois de correr find.)

Um dos pontos fortes da programação declarativa é que ela nos força a perguntar o que queremos primeiro. É na nomeação dessas coisas novas que nosso código se torna expressivo e explícito.

E quando nossos colegas desenvolvedores chegam e examinam nosso código, eles podem encontrar bugs com mais facilidade:

“Você chama essa variável de ‘índice’, o que me faz esperar um número, mas vejo que é o resultado de filter que retorna uma matriz. O que há com isso? “

Eu incentivo os alunos a escrever código declarativo tão freqüentemente quanto possível, constantemente definindo (e refatorando para redefinir) o que as coisas são.

Em vez de manter todo um processo imperativo em sua cabeça, você pode manter um processo mais tangível coisa em sua cabeça com uma definição clara.

Mike Zetlow é o instrutor líder em 10x Code Camp.



Fonte

Click to rate this post!
[Total: 0 Average: 0]
Share
Published by
António César de Andrade

Recent Posts

O desenvolvimento do Fallout Miami avança, apesar da pandemia

Fallout Miami é um dos projetos de mod de jogo mais ambiciosos de todos os…

53 mins ago

O Rainbow Six Siege está chegando ao Xbox Game Pass?

Um dos maiores jogos de tiro multijogador da geração poderia estar chegando ao Xbox Game…

1 hour ago

Todos os jogos de lançamento de PlayStation, do PS1 ao PS5

Todo console tem que ser lançado com jogos, certo? Às vezes, esses jogos são bons…

3 hours ago

Obtenha este cruzamento Yakuza e Streets of Rage de graça antes que acabe

Yakuza: Like a Dragon está programado para ser lançado no próximo mês no PS4, Xbox…

5 hours ago

Notícias populares de design da semana: 12 de outubro de 2020 – 18 de outubro de 2020

Todas as semanas, os usuários enviam muitas coisas interessantes em nosso site irmão Webdesigner News,…

7 hours ago

Jogabilidade do Streets Of Kamurocho Ichiban

Yakuza encontra Streets of Rage neste divertido mash up da SEGA. Streets of Kamurocho oferece…

17 hours ago

This website uses cookies.