Linguagens de Programação Conceitos e Técnicas Propriedades desejáveis em LP's Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br
Linguagens de Programação Propriedades desejáveis Algumas Propriedades desejáveis em LP's: Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade: A implementação reflete o algoritmo? A redação é sucinta? Confiabilidade: É fácil detectar “enganos” do programador? Eficiência: Roda rápido? Faz o bom uso dos recursos? Facilidade de aprendizado: É enxuta? Ortogonalidade: Conceitos podem ser combinados livremente? Reusabilidade: É possível aproveitar partes em outros programas? Modificabilidade: É fácil alterar programas? Portabilidade: Roda da forma esperada em diferentes plataformas?
Linguagens de Programação Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? “Programs should be written for people to read, and only incidentally for machines to execute.” (Structure and Interpretation of Computer Programs. Harold Abelson, Gerald Jay Sussman,Julie Sussmann) Comentários: Bloco / Linha / Outros Marcadores de blocos: Ausência / Excesso Desvios Incondicionais: goto Duplicação de Significado de Vocábulos: *p = (*p)*q; Ausência do conceito de palavras reservadas: if (if > then) then else (em FORTRAN)
Linguagens de Programação Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Efeitos Colaterais : variável global alterada em função int x = 1; int retornaCinco() { ... } int main() { int y; y = retornaCinco () + x; printf ("%d\n",“y:", y); } Imprime 6 ???
Linguagens de Programação Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Efeitos Colaterais : variável global alterada em função int x = 1; int retornaCinco() { x = x + 3; return 5; } int main() { int y; y = retornaCinco () + x; printf ("%d\n",“y:", y);
Linguagens de Programação Propriedades desejáveis Redigibilidade: A implementação reflete o algoritmo? A redação é sucinta? Efeitos Colaterais : variável global alterada em função int x = 1; int retornaCinco() { x = x + 3; return 5; } int main() { int y; y = retornaCinco () + x; printf ("%d\n",“y:", y);