Muitos acreditam que as linguagens de programação surgiram de forma linear, ou seja, a primeira geração o homem se adaptava à máquina e depois de várias gerações onde uma derivava de outra, elas capacitaram a máquina a realizar as necessidades humanas.
Na verdade muitas tiveram diferentes trajetórias baseadas em diversos paradigmas que afirmavam resolver alguns problemas.
Todos sabem que inicialmente os computadores eram programados em códigos binários e isso devia dar uma dor de cabeça infernal sem contar que é bastante suscetível a erros.
Programas em códigos de máquina é um paradigma de baixíssimo nível.
Sendo assim, para facilitar a nossa vida foram criadas as linguagens de montagem. Elas substituíam as funções do código de máquina por mnemônicos e endereços de memórias por identificadores. Porém, mesmo assim essa ainda é um paradigma de baixo nível.
ex: Assembly
lui $s0, 0×1000
lw $v0, 0×8000($s0)
- Paradigma imperativo
“Primeiro faça isso e depois faça aquilo.”
Após a segunda geração, houve um grande avanço com a chegada das linguagens procedurais. São as primeiras em que podemos dizer serem de alto nível pois usam um vocabulário relativo para solucionar problemas. Também é conhecido como paradigma imperativo, pois é uma sequência de comandos que o computador executará, passo-a-passo, modificando dados e variáveis a fim de chegar ao resultado esperado. Onde a eficácia e a eficiência de cada solução é subjetiva e altamente dependente da experiência, habilidade e criatividade do programador.
Ex: COBOL, FORTRAN, C, PASCAL …
- Paradigma funcional
“Subdividir o problema em outras funções e resolver cada uma separadamente, pois os resultados encontrados serão utilizados posteriormente.”
Cada bloco recebe no topo uma entrada de dados e retorna, na base, os dados de saída. A solução geral é dividida em várias funções (daí o nome funcional) que, no final, se associam para mostrar o resultado na tela.
Ex: APL, LISP, HASKELL, F# …
- Paradigma Restritivo
Se refere ao uso de restrições na construção de relações entre variáveis. De forma geral, as restrições são implementadas como uma extensão de uma linguagem já existente. Estas, operam sobre domínios específicos, sendo os mais usuais os seguintes:
- booleanos
- números inteiros e racionais
- lineares
- finitos
- mistos (vários dos anteriores)
“Um conjunto de classes faz a interação entre objetos (instâncias) e, com a troca de mensagens entre eles, forma-se o software como um todo.”
Sem dúvidas esse é o paradigma mais usado na atualidade e onde há inúmeras linguagens que dão suporte a ele. Tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de inteligência artificial e da linguística, no campo da abstração de conceitos do mundo real.
Resumindo, praticamente tudo é objeto, cada qual com estrutura e comportamento próprio. Esses objetos são classificados em classes e comunicam entre si. Cada uma dessas representa um determinado fenômeno e seus objetos são organizados hierarquicamente. O conjunto de classes faz a interação entre objetos e a troca de mensagens entre eles forma o software como um todo.
Junto com ele, veio o conceito de:
- Classes / sub-classes
- Objetos
- Atributos
- Métodos
- Herança
- Encapsulamento
- Polimorfismo
- Interface
- etc..
Enfim, existem diversos outros paradigmas e diversas linguagens que usam um ou vários paradigmas. A compreensão de alguns deles pode te ajudar a solucionar problemas de uma forma bem clara.
