Paradigmas de Programação
1 - História dos paradigmas.
Antes os computadores eram programados através de código binário, esses representavam as sequências de controle alimentadas à Unidade Central de Processamento (CPU). Esse processo era difícil e bastante propício a erros. Os programas estavam em código de máquinas, que é um paradigma de programação de muito baixo nível.
Para facilitar a programação foram desenvolvidas linguagem de montagem (Assembly). Elas substituíam as funções do código de máquina por mnemônicas, que são endereços de memória absolutos que tem referências por identificadores.
Essa linguagem de montagem ainda é considerada uma linguagem de baixo nível, ainda que seja um paradigma da segunda geração das linguagens. Mesmo linguagens de montagem da década de 1960 suportavam gerações condicionais de macros bastante sofisticadas. Também suportavam recursos de programação modular, como por exemplo: CALL (que suporta sub-rotinas), variáveis externas e secções comuns (globais), isso permitia a reutilização do código e o isolamento de características específicas do hardware, através do uso de operadores lógicos como READ, WRITE, GET e PUT. Essa linguagem de montagem foi e ainda é utilizada para sistemas críticos, e usada frequentemente em sistemas embarcados.
O próximo avanço foi o desenvolvimento das linguagens procedimentais. Essas foram as primeiras a serem chamadas como de alto nível, essas linguagens é da terceira geração e usam um vocabulário relativo ao problema sendo resolvido. Por exemplo: COBOL usa termos como file (para identificar arquivos), move (para mover arquivos) e copy (para copiar arquivos). Tem também FORTRAN e ALGOL, essas usam terminologia matemática. Foram desenvolvidas principalmente para problemas comerciais ou científicos. Essas linguagens descrevem o procedimento que será seguido para resolver um problema.
Uma observação importante é que a eficácia e a eficiência de cada solução é subjetiva e altamente dependente da experiência, habilidade e criatividade do programador.
Logo depois, foram criadas as linguagens orientadas a objetos. Nessas linguagens, os dados e as rotinas para manipulá-los são mantidos em uma unidade chamada de objeto (veremos mais a frente). Quem utiliza só pode acessar os dados através das sub-rotinas disponíveis, que são chamadas de métodos, no qual permite alterar o funcionamento interno do objeto sem afetar o código que o consome.
2 - O que são paradigmas de programação?
Paradigma de programação é um meio de se classificar as linguagens de programação, nos quais são baseados em suas funcionalidades.
Observação: Essas linguagens podem ser classificadas em vários paradigmas.
É como um exemplo que serve como modelo, um padrão a ser seguido. Logo, um paradigma de programação pode ser definido como sendo um modelo, padrão ou estilo no qual linguagens de programação podem seguir.
Um paradigma de programação pode fornecer e também determinar a visão que o programador possui sobre a estruturação e execução do programa. Por exemplo, em programação orientada a objetos, os programadores podem abstrair um programa como uma coleção de objetos que interagem entre si, enquanto que em programação funcional os programadores abstraem o programa como uma sequência de funções que são executadas de modo empilhados.
Alguns paradigmas estão preocupados com as implicações para o modelo de execução da linguagem, ou seja, como irá permitir efeitos colaterais, se a sequência de operações é definida pelo modelo de execução.
Outros paradigmas se preocupam com o modo que o código está organizado. Outros estão preocupados com o estilo de sintaxe ou gramática.
Algumas linguagens foram desenvolvidas para suportar um paradigma específico (JAVA suporta o paradigma de orientação a objetos e HASKELL suportam o paradigma funcional), enquanto outras linguagens suportam múltiplos paradigmas (como o PYTHON e C++).
Um fato importante a ser citado, é que o relacionamento entre paradigmas de programação e linguagens de programação pode ser complexo porque as linguagens de programação podem suportar mais de um paradigma.