Seguinte: Atribuição Acima: Introdução à Linguagem Lisp Anterior: Tipos Aglomerados
Índice remissivo

Programação Imperativa

Todas as funções que apresentámos anteriormente realizam operações muito variadas e algumas são até relativamente complexas, mas nenhuma afecta os seus argumentos. Elas limitam-se a produzir novos objectos a partir de outros já existentes, sem alterar estes últimos seja de que forma for. Até as próprias variáveis que introduzimos nas funções e que se destinavam a guardar valores temporários não eram mais do que parâmetros de uma lambda, e a sua inicialização correspondia a invocar a lambda com os valores iniciais como argumentos, sendo por isso inicializadas uma única vez e nunca modificadas. Por este motivo, nem sequer foi apresentado nenhum operador de atribuição, tão característico em linguagens como C e Pascal.

Este estilo de programação, sem atribuição, sem alteração dos argumentos de funções, e em que estas se limitam a produzir novos valores, é designado programação funcional. Neste paradigma de programação, qualquer função da linguagem é considerada uma função matemática pura que, para os mesmos argumentos produz sempre os mesmos valores. Nunca nada é destruído. Uma função que junta duas listas produz uma nova lista sem alterar as listas originais. Uma função que muda o número de portas de um automóvel produz um novo automóvel.

A programação funcional tem muitas vantagens sobre outros estilos de programação, em especial no que diz respeito a produzir programas muito rapidamente e minimizando os erros. Contudo, tem também as suas limitações, e a sua incapacidade em modificar seja o que for é a maior. A partir do momento em que introduzimos a modificação de objectos, estamos a introduzir o conceito de destruição. A forma anterior do objecto que foi modificado deixou de existir, passando a existir apenas a nova forma. A modificação implica a introdução do conceito de tempo. Os objectos passam a ter uma história, e isto conduz a um novo estilo de programação.




Seguinte: Atribuição Acima: Introdução à Linguagem Lisp Anterior: Tipos Aglomerados
Índice remissivo

Copyright António Leitão, 1995