1. Paradigma lógico
1.1. O paradigma lógico é baseado na lógica formal e na definição de regras e relações entre dados. Em vez de especificar um algoritmo para resolver um problema, o programador define uma série de regras e o sistema usa essas regras para inferir a solução.
1.1.1. O sentido da programação lógica é trazer o estilo de lógica matemática.
1.1.1.1. A linguagem de programação Prolog foi explicitamente apresentada como baseada na lógica matemática. A base dessa alegação era que um programa Prolog podia literalmente ser lido como um conjunto de fórmulas em um fragmento da lógica de primeira ordem, herdando o modelo de teoria e demonstração da lógica de primeira ordem.
1.1.1.1.1. O paradigma lógico é útil para problemas que podem ser descritos em termos de relações e inferências lógicas. O código é escrito na forma de fatos e regras, e o sistema de programação usa um mecanismo de inferência para resolver consultas baseadas nesses fatos e regras.
2. Paradigma imperativo
2.1. Surgiu na década de 1940 quando John Von Neumann e colaboradores percebareram que tanto um programa de computador como seus dados poderiam compartilhar a memória principal. Isso foi inovador devido ao fato de que os primeiros computadores armazenavam seus programas fora da memória. Sendo ele o paradigma mais antigo e o que obteve maior sucesso.
2.2. Linguagens de programação que baseiam no modo imperativo são: Ada, ALGOL, Basic, C, PHP, Java, Cobol, Fortran, Pascal, Python, Lua, Mathematica.
2.3. o paradigma imperativo, o foco está em descrever explicitamente os passos necessários para atingir um resultado. Isso envolve a definição de variáveis, estruturas de controle de fluxo (como loops e condicionais) e a manipulação direta do estado do programa. Umas das características clássicas do paradigma imperativo é alterar o valor de um local da memória e destruir seu valor anterior, ou seja o conceito de atribuição
3. Paradigma Declarativo
3.1. Tem como foco descrever quais os resultados devem ser alcançados, sendo assim o programador foca nos objetivos da computação e não em como fazer.
3.2. Aplicações de inteligência artificial: Se utiliza muito em aplicações de inteligência artificial pois são aplicações que se preocupam com os objetivos. Nesse domínio a linguagem que se destaca é a Prolog
3.3. Aplicações de acesso de informações em banco de dados: Se utiliza nessas aplicações pois permite que os desenvolvedores se concentrem mais em o que desejam obter das informações, sem precisar especificar detalhadamente como o sistema deve realizar as operações. Sendo concentrados no domínio de consultas e manipulação de dados em sistemas de gestão de base de dados (SGBD) sendo o (SQL) o exemplo mais comum do uso do paradigma declarativo.
4. Paradigma estruturado ou procedural
4.1. Esse paradigma tem como objetivo melhorar a clareza, qualidade e diminuir o tempo de desenvolvimento, focando na decomposição do programa em funções ou procedimentos menores. Isso melhora a divisão e facilita a manutenção e o entendimento do código, utilizando sub - rotinas e três estruturas básicas: sequeência, selecão (if e switch) e iteração (laços for e while)
4.1.1. Se originou da crise do software na década de 1960. Onde Edsger W. Dijkstra que por meio do seu artigo A Case against the GO TO Statement, criticou o uso execessivo desse comando na programação. E o amplo uso desse comando gerava um certo número de códigos praticamente impossíveis de serem entendidos o que tornava ainda mais difícil a manutenção desses programas.
4.2. Exemplos de Linguagens: C, Pascal.
5. Paradigma Orientado a objetos
5.1. Seria um paradigma de desenvolvimento utililizado massivamente na maioria dos sistemas atuais.
5.1.1. Não seria somente um paradigma da linguagem de programação, ela está presente também nas fases de análise, levantamento e também em projeto.
5.1.1.1. A motivação do POO é a de representar cada elemento do mundo real para um objeto, então tudo que se faz na POO é trabalhar com objetos.
5.1.1.1.1. O POO é composto por 3 pilares:
5.1.1.2. Então podemos dizer que os sistemas são mais próximos com o que vemos no mundo real, uma vez que um objeto nada mais é que uma aglutinação de estados e comportamentos. Esses conceitos ajudam na leitura, manutenção e reutilização do código, como incapsulamento e herança.
6. Paradigma Funcional
6.1. Trata programação como se fosse funções matemáticas que evitam a todo momento ter Estados e Dados Imutáveis, ou seja uma vez que um valor é atribuído a uma variável ela nunca deverá ser alterada.
6.2. Como funciona: As funções não dependem e nunca alteram nenhum dado externo. Para que esse paradigma funcione é preciso fazer com que as funções sejam realmente independentes, e com isso existe três regras para se obter esse funcionamento.
6.2.1. 1. A função para ser independente deve ao menos conter 1 argumento
6.2.1.1. 2. A função deve retornar algo, seja um dado, informação ou até outra função.
6.2.1.1.1. 3. Não existem loops, os laços devem ser criados através da recursão.