Skip to content

Latest commit

 

History

History
137 lines (88 loc) · 6.95 KB

paradigmas-de-programacao.md

File metadata and controls

137 lines (88 loc) · 6.95 KB

✨ Paradigmas de programação

Vamos entender oque é um paradigma, qual sua importância, quais existem e como eles funcionam e oque muda de um para o outro.


❓ O que é um paradigma

Um paradigma é uma forma de classificar uma linguagem, baseado nas suas funcionalidades. É comum nos referirmos a um paradigma como uma forma de programar similar a um padrão, isso porque muitas linguagens são multi paradigmas ou seja tem influencias de muitos paradigmas e na hora de programar sempre podemos optar por um deles.

Muitos paradigmas tem forte influencia de outros paradigmas então quanto mais paradigmas você conhece mais fácil se torna de aprender outro paradigma, e outras linguagens. A parte mais complicada de aprender uma linguagem é o paradigma então foque em entender o paradigma que mais influencia sua linguagem.

Alem de eles influenciarem a forma como escrevemos nosso código eles tambem podem mudar a forma como nosso software se comporta, ou interage com a plataforma na qual esta rodando.

🧰 Os paradigmas

Hoje temos muitos paradigmas diferentes, vamos falar dos mais comuns aceitos nas linguagens mais comuns. Não se preocupe em entender todos eles, apenas os mais importantes nesse momento (Funcional, Orientando a Eventos).

Todas as linguagens das quais recomendamos suportam todos os seguintes paradigmas, que vamos abordar se quiser ver um pouco mais sobre as linguagens e paradigmas pode ver aqui.

video - pt video - pt

Como o nome sugere, ele é muito baseado em funções, como na matemática usando imutábilidade e funções puras ou seja elas não podem gerar efeitos colaterais (side-effects) ou seja alterar algo que esteja fora de seu escopo como consequência devem ser sempre sem estado (stateless) isso porque não armazenam ou alteram valores fora de seu escopo.

Exemplos de linguagens que suportam programação funcional: Prolog, Lisp

function soma(a, b) {
  return a + b;
}

const resultado = soma(1, 1);

Apesar de ter surgido antes da Orientada a objetos ela só veio se tornar popular agora. Isso porque o cenário que temos hoje dos hardwares esta mais favorável para o comportamento desse paradigma.

Links uteis para estudar: video - pt pt

É um paradigma baseado em acontecimentos os "Eventos" que podem se repetir ou mesmo nunca acontecer. Muito usado quando estamos trabalhando com operações que não tem ordem ou momento certo para acontecer. Por exemplo:

  • Trabalhar com interface e capturar ações do usuário.
  • Comunicação assíncrona entre serviços, filas etc.
  • Comunicação real-time como Websockets.

Exemplos de linguagens que suportam programação orientadas a evento: Javascript, JAVA

function handler() {
  // EXECUTADO QUANDO TIVER ALGUM NOVO ELEMENTO NA FILA
  // OU 
  // EXECUTANDO QUANDO ALGUEM CLICAR NO ELEMENTO
}

queue.on('new', handler);

document.body.addEventListener('click', handler);

Fez muito sucesso e teve forte influencia do paradigma funcional, seu pilar esta nos objetos que nada mais são do que conjuntos de dados que pode ter origem de uma classe ou mais classes e tem comportamentos similares ou relacionados. Imagine uma classes como uma forma de ovo de pascoa e o chocolate como os dados assim a forma é usada para dar forma para o chocolate.

class Pessoa {
  constructor(nome, anoNascimento) {
    const ano = new Date().getFullYear();
    this.idade = ano - anoNascimento;
    this.nome = nome;
  }

  maiorIdade() {
    return this.idade > 18;
  }
}

Um paradigma que foi muito usado no passado, e ainda é predominante sendo um dos primeiros paradigmas aprendidos por todos que iniciam na programação.

Os paradigmas procedural e orientada a objetos se enquadram no paradigma imperativo.

Para entender ele um pouco melhor basta entender a palavra imperativo, (Que impõe, Que se impõe de forma argumentativa...) ou seja suas principais caracteristicas são:

  • Funcões que representavam comandos ou procedimentos
  • Um estado (variaveis globais, locais) que sofre modificações durante a execução do software

Sua principal diferença entre o funcional esta na atribuição que permite mutar o estado durante a execução.

Exemplos de linguagens impereativas: C, JAVA

let saldo = 0;

function adicionaSaldo(valor) {
  saldo += valor;
}

adicionaSaldo(10);

É considerada o extremo oposto a imperativa, equanto a programação imperativa foca no como as coisas devem ocorrer a declarativa foca apenas em oque deve acontecer.

A programação funcional, lógica e de consulta como um subconjunto do SQL o DML podem ser classificados como declarativos.

Exemplos de programação declarativa: SQL, HTML

SELECT * FROM pessoas WHERE nome = 'Marcos'

🧠Objetivo de aprendizagem

O Objetivo deste estudo é entender oque são os paradigmas e que existem muitos deles eles são muitos influenciados um pelos outros. Tambem saber oque eles influenciam no modo como nosso software se comporta.

✔️ Entrega mínima

Escolha um paradigma para estudar, e explique sobre ele.