Continuando as percepções do que estou lendo no livro Clean Architecture, vamos falar dos paradigmas de programação.
Mas o que são paradigmas? Quem são eles?
Quando falamos de paradigmas de programação estamos nos referindo a maneiras de programar diferentes, não necessariamente as linguagens de programação. Cada paradigma tem sua forma de apresentar quais estruturas usar e quando usar, imagine que para cada tipo de receita que vamos fazer temos uma abordagem diferente e por isso precisamos de ingredientes e utensílios diferentes...
Atualmente temos três paradigmas, o estrutural, o orientado a objetos e o funcional, sendo que a ordem de criação foi:
1 - Funcional
2 - Orientado a Objetos
3 - Estruturado
No livro deixa claro que cada paradigma remove capacidades do programador e cada um impõe disciplinas negativas, ou seja, eles nos dizem o que não fazer. O que eles removem:
Estruturado : declaração goto
Orientado a Objetos : ponteiros de função
Funcional : atribuições
E ele explica como entender estes paradigmas está diretamente ligado a arquitetura. Arquitetura se preocupa com 3 principais pontos:
Função
Separação de Componentes
Gerenciamento de Dados
Paradigma de programação : Estruturado.
Este paradigma foi criado em 1968, por Edsger Wybe Dijkstra. Apesar de ser o primeiro paradigma a ser adotado, não foi o primeiro a ser inventado.
Dijikistra descobriu que o uso de saltos (GOTO) era prejudicial para execução do programa e que possuíam mais complexidade que o cérebro humano poderia processar sem ajuda.
Por isso ele acreditava que construir o software com blocos de código seria de fácil entendimento.
O uso do GOTO dificultava a quebra destes blocos do código.
Desconhece a palavra GOTO?
Ela representa saltos dentro do seu código, imagine que você tem uma sequência de 6 linhas de código e na sétima linha ele tem uma chamada para o que está na segunda linha.
Parece confuso? Vou dar um exemplo que vi e que me ajudou a entender:
int main(){
int i = 0;
inicio:
if(i < 5){
printf("Numero: %d\n",i);
i++;
goto inicio;
}
system("pause");
return 0;
}
Quando o comando goto inicio é executado ele retorna para a linha que está o comando início.
A programação estruturada considera que comandos com esta característica podem ser substituídos por estruturas de repetição.
A partir disso foi considerado que todo programa pode ser construído com apenas três estruturas: sequência, seleção e iteração.
A Decomposição funcional derivada desse paradigma permite ser um ótimo guia de alto nível para construção de arquiteturas de componentes e módulos.
Paradigma de programação : Orientado a Objetos
Paradigma criado em 1966, por Ole Johan e Krinten Nygaard, possui infinitas descrições,
e no geral sempre tem uma descrição que associa ao suporte que linguagens OO devem ter
em encapsulamento, herança e polimorfismo.
Porém durante a leitura fica claro que mesmo antes do paradigma era possível utilizar estes conceitos.
O que pode-se perceber é que a OO aperfeiçoou a forma do polimorfismo, permitindo inversão de dependência através do uso de interfaces, que é algo que diretamente relacionado com a importância deste paradigma.
Como os ponteiros trabalham em tempo de execução para funções que estão usando polimorfismo qualquer dependência que esteja sendo acionada através do polimorfismo pode ser facilmente invertida, o que permite maior controle das dependências no sistema e para arquitetura dá mais poder para que sejam realizadas arquiteturas plug-in, através de módulos que possuem políticas de alto nível.
Paradigma de programação : Funcional
Este paradigma foi criado em 1958, por John McCarthy, possui como principal base cálculos matemáticos que tinha princípio de imutabilidade, que significa não ter nenhuma forma de atribuição de valores.
Muitos dos problemas estruturais dentro de uma arquitetura decorre de utilização simultânea de variáveis.
Concorrência em aplicações exige que haja um grande número de threads e um custo em infra para dar conta do processamento e evitar locks em tempo de processamento.
O uso do paradigma funcional ou de seu conceito permite uma operação dos dados de maneira totalmente diferente.
Top comments (0)