quinta-feira, 13 de agosto de 2009

Evolução dos paradigmas de programação

Existe um ditado que diz “Quem não aprende com o passado está fadado a repeti-lo”, assim é importante contarmos aqui uma historinha sobre a evolução da programação de computadores.

Como se sabe, um processador de computador só entende o que é zero e um, ou seja, uma CPU só consegue interpretar a linguagem binária.

Nos primórdios da computação, a única alternativa para se programar um computador era jogar o código binário de programas na memória principal do computador. A probabilidade de erros era grande, a manutenção de código era impossível e o reuso um sonho distante. Essa abordagem é conhecida como programação binária.

Para resolver essas questões surgem as primeiras linguagens de programação e conseqüentemente os compiladores (responsáveis pela conversão da linguagem natural em linguagem de máquina). Com estas linguagens era possível se criar programas com estruturas monolíticas responsáveis por executar todas as tarefas de um programa.

Nasce a programação linear. A manutenção desses programas não era tarefa simples e seu código era praticamente ilegível, dificultando até o planejamento da uma solução de um problema utilizando programas deste tipo.

Era preciso dividir para conquistar. Foi com o surgimento de linguagens de programação capazes de representar o conceito de procedimentos que se resolveu esse problema.

Surge então o conceito programação procedural que permitiu a divisão do código dos programas em procedimentos, estruturas semi-autônomas e reutilizáveis nos programas. Os programas assim ficam subdivididos em dados e procedimentos. Essa abordagem possibilitava a criação de biblioteca de funções que possibilitava um bom nível de reuso, porém ainda não existia o conceito de herança, ou seja, não havia possibilidade de se criar procedimentos mais específicos a partir de outros mais genéricos. Além disso, não havia uma proteção sobre os dados e procedimentos dos programas. Assim um programador mal intencionado podia alterar essas informações comprometendo a qualidade dos programas.

Na tentativa de melhorar as deficiências apresentadas pela programação orientada a procedimentos, surge a programação modular cuja estrutura dividia os programas em módulos combinado os dados e os procedimentos dos programas. Essa abordagem resolvia parte do problema, porém ainda havia falhas no reuso de código e no encapsulamento dos dados.

A programação Orientada a Objetos vem como alternativa para solução desses problemas, promovendo diversos benefícios. Dentre os quais podemos citar: O reuso de código, a modularização e a simplificação de programas e ainda a redução dos custos de manutenção dos programas produzidos seguindo esse paradigma.

Como podemos concluir cada evolução na forma de se programar computadores não surge por acaso. Atualmente busca-se uma forma de se programar computadores de forma mais conceitual, ou seja, onde o programador apenas diz o que quer que o programa faça e a linguagem ou tecnologia de programação se encarrega “do como” atender ao pedido do programador. Parece-me que a OMG patrocina uma iniciativa desse tipo. Seu nome é MDA (Model-driven architecture). Eu ainda não estudei o assunto, mas quem se antecipa sai na frente.

Bom pessoal é isso aí.

Nenhum comentário: