Buscar

Notas de aula - Propriedades de desejáveis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LINGUAGENS DE 
PROGRAMAÇÃO 
Propriedades Desejáveis 
 
Prof. Saulo C. Campos 
Objetivo das linguagens de programação 
• Etapas do desenvolvimento de software 
(segundo PRESSMAN, 1997) 
• Especificação de requisitos 
• Projeto do software 
• Implementação 
• Validação 
• Manutenção 
Propriedades desejáveis em LPs 
• Legibilidade 
• Redigibilidade 
• Confiabilidade 
• Eficiência 
• Ortogonalidade 
 
• Facilidade de 
aprendizado 
• Reusabilidade 
• Modificabilidade 
• Portabilidade 
Legibilidade 
• Esta propriedade diz respeito à facilidade 
para ler e entender um programa. 
Legibilidade 
• Programação macarrônica 
• LP que não possuem fluxo de controle e 
não obedecem a padrões regulares 
deixam o entendimento do programa 
confusão e difícil. 
• Ex.: FORTRAN e o comando goto. 
Legibilidade 
• Mesmo operador com diversos significados 
semânticos. 
• LP que utilizam o mesmo operador para 
denotar diversos significados também oferece 
problemas de legibilidade. 
• O que o trecho de código fonte em C, abaixo, 
faz: 
 
*p = (*p)*q 
Legibilidade 
•Efeitos colaterais 
• Há também LPs que possuem efeitos 
“colaterais” na execução de comandos 
que também causam problemas de 
legibilidade. 
• Ex.: A operação x++ e ++x da linguagem 
C. 
Legibilidade 
• Problemas com efeito “colateral” não são 
ocasionados apenas pela característica de 
uma LP, mas também pela forma de escrita 
do programador. 
 
• Ex.: Uso de variáveis globais e expressões 
sem coesão. 
 
Legibilidade 
• Efeitos colaterais 
 
 int x = 1; 
 
 void main() { 
 int y; 
 y = retornaCinco (); 
 y = y + x; 
 } 
Legibilidade 
• Efeitos colaterais 
 
 int x = 1; 
 int retornaCinco() { 
 x = x + 3; 
 return 5; 
 } 
 void main() { 
 int y; 
 y = retornaCinco (); 
 y = y + x; 
 } 
Legibilidade 
• Operadores de marcação de blocos de 
comando como “begin” – “end”, da 
linguagem pascal, ou “{” – “}”, da 
linguagem C, podem causar dificuldades 
na interpretação do início e do final de 
blocos com expressões de comparação e 
repetição aninhados. 
 
Legibilidade 
• O que fazem os códigos abaixo? 
 
 if (x>1) 
 if (x==2) 
x=3; else 
 x=4; 
if (x>1) 
 if (x==2) 
 x=3; 
else 
 x=4; 
if (x>1) 
 if (x==2) 
 x=3; 
 else 
 x=4; 
Legibilidade 
• Solução adotada por outras linguagens 
Legibilidade 
• As questões de legibilidade de programas 
não depende somente de características 
da LP utilizada, mas também da forma de 
escrita de cada programador. 
Redigibilidade 
• Esta relacionada a facilidade e rapidez com 
que é possível escrever programas (códigos). 
• Também esta relacionada a capacidade de 
permitir ao programador se concentrar nos 
algoritmos centrais (principais), sem se 
preocupar com algoritmos auxiliares não 
relevantes para solução direta do problema. 
• Essa característica é umas da que mais 
diferencia as linguagens de baixo nível das 
linguagens de alto nível. 
Redigibilidade 
• LPs que não suportam tipos de dados 
complexos têm menos redigibilidade. 
• A redigibilidade de programas podem 
conflitar com a legibilidade. 
• A linguagem C permite comandos com alto 
grau de complexidade, elevando a 
redigibilidade, porém a identificação da 
funcionalidade pode se tornar difícil e 
obscura. 
Redigibilidade 
• Declaração de vetor (array) 
 
• Pascal 
 V: array [0..9] of integer; 
• C 
 int V[10]; 
 
• Qual mais fácil de escrever? Qual mais 
fácil de ler? 
 
Redigibilidade 
 
int equals(char *q, char *p) { 
 for(;*q==*p && *q!=‘\0’; q++,p++); 
 return *q==‘\0’ && *p==‘\0’?1:0; 
} 
Confiabilidade 
• Esta propriedade refere-se aos 
mecanismos que as LPs oferecem para 
criação de programas confiáveis. 
• Verificação de manipulação de tipos. 
• Verificação de posição de vetores. 
• Verificação de identificadores não declarados. 
• Semântica de funções e comandos bem 
definida e verificada. 
• Suporte a blocos de tratamento de erros e 
eventos inesperados. 
Confiabilidade 
• Verificação e manipulação de tipos 
(semântica) 
• Verifica existência de erros de tipagem 
 
 boolean u = true; 
 int v = 0; 
 while (u && v < 9) { 
 v = u + 2; 
 if (v == 6) 
 u = false; 
 } 
 
Confiabilidade 
• Tratamento de exceções 
• Utilização de blocos try, catch e finally 
 
 
try { 
 System.out.println(a[i]); 
} catch (IndexOutofBoundsException) { 
 System.out.println(“Erro de Indexação”); 
} 
 
Confiabilidade 
• Verificação de posição de elementos de 
vetores 
• Tempo de projeto ou Tempo de execução 
 
• O que acontece com o código abaixo? 
 
int V[10]; 
for (int i=0; i<=10; i++) 
 V[i]=i*2; 
 
Eficiência 
• Característica das LP que diz respeito a 
capacidade de uso otimizado dos recursos 
de máquina e tempo de execução de 
instruções 
Eficiência 
• A eficiência é fator crucial para escolha de 
linguagem em determinados projetos. 
• Projetos de aplicações em tempo real, 
normalmente demandam rápida execução 
e grande uso da memória principal. Assim 
deve-se optar por uma LP que minimize o 
tempo de execução e acesso a dispositivos 
E/S e que otimizem o uso da memória. 
Eficiência 
• Em JAVA todos os índices de vetores são 
verificados antes do seu efetivo acesso, 
devido ao seu mecanismo de tratamento 
de exceção. Já na linguagem C isso não é 
feito. 
• Este fator implica que uma instrução em C 
seja executada mais rapidamente que uma 
instrução em JAVA. Porém há um conflito 
com a “confiabilidade”. 
Eficiência 
• Atualmente, “quase” toda a linguagem que 
é compilada possui um otimizador interno 
para geração de códigos em linguagem de 
máquina mais eficientes. 
Aprendizado 
• Diz respeito a facilidade de aprendizado da 
LP. 
• Certas LPs possuem uma curva de 
aprendizagem mais acentuadas que 
outras. 
• Muitas vezes é fator determinante para 
escolha em um projeto. 
Aprendizado 
• Linguagens que possuem: 
• Muitas características, 
• Múltiplas maneiras de realizar a mesma coisa, 
• Muitos comandos e expressões com “efeitos 
colaterais” 
Tornam o aprendizado mais difícil. 
 
• De quantas maneiras diferentes é possível 
incrementar o valor de uma variável na 
linguagem C? E na linguagem Pascal?: 
 
Ortogonalidade 
• Esta propriedade refere-se à capacidade 
de uma LP em permitir que o programador 
utilize e combine seus conceitos básicos 
da LP, sem que estas combinações gerem 
efeitos anômalos. 
• Além disso, esta combinação de conceitos 
deve ser realizada de maneira prática e 
fácil. 
Ortogonalidade 
• Esta característica é importante porque 
dessa forma o programador pode prever, 
com segurança, o funcionamento de 
expressão ou trecho de código-fonte 
desenvolvido. 
• Também permite ao programador 
desenvolver soluções para seus problemas 
sem esforço demasiado. 
Ortogonalidade 
• Uma LP com um conjunto relativamente 
pequeno de construções primitivas, e que 
podem ser combinadas, gerando um 
número também relativamente pequeno de 
maneiras para construir as estruturas de 
dados, operações controle e expressões 
tendem a ser mais ortogonais. 
Ortogonalidade 
• Exemplo de falta de ortogonalidade (java): 
 int x, y = 2, z = 3;byte a, b = 2, c = 3; 
 x = y + z; 
 a = b + c; 
• Exemplo de falta de ortogonalidade 
(Pascal): 
• Funções não podem retornar vetores; 
• Todos blocos são delimitados por “begin” e 
“end”, exceto comando “repeat”; 
 
 
 
 
Ortogonalidade 
• Excesso de ortogonalidade pode causar 
dificuldades no desenvolvimento. 
• Ex.: ALGOL 
 
double a=1.33; 
int b=1; 
a=a+b; 
b=a+b; 
 
Ortogonalidade 
• Qual a relação entre a ortogonalidade e a 
redigibilidade? 
• E com a facilidade de aprendizado? 
 
Reusabilidade 
• Possibilidade de utilização de um mesmo 
código em diversas aplicações diferentes. 
 
• Reusabilidade NÃO é copiar e colar! 
 
Reusabilidade 
• A reusabilidade aumenta a produtividade 
do desenvolvimento de softwares. 
• A LP pode incentivar a criação de códigos 
reutilizáveis, mas sempre depende do 
programador buscar tal propriedade. 
• Exemplos de incentivos a reusabilidade: 
• Utilização de funções parametrizadas 
• Construção de bibliotecas 
• Utilização de classes coesas 
Modificabilidade 
• Essa propriedade diz respeito aos 
mecanismos oferecidos pelas LPs para 
facilitar as mudanças em um código fonte. 
 
 
 
Modificabilidade 
• As mudanças sempre ocorrem em 
detrimento de novos requisitos ou para 
correção de falhas. 
• Tais mudanças não devem gerar trabalho 
excessivo e nem acarretar alterações em 
outras partes do programa. 
 
Modificabilidade 
• Mecanismos que proporcionam 
modificabilidade: 
• Utilização de constantes; 
• Utilização de funções e sub-rotinas; 
• Utilização de tipos abstratos de dados; 
• Separação entre interface e implementação; 
• Paradigma Orientado a Objetos. 
 
 
 
 
Modificabilidade 
 
• Qual a relação entre a modificabilidade e 
a reusabilidade? 
 
 
 
 
Portabilidade 
• Um programa escrito em um LP deve 
funcionar da mesma maneira, correta e 
eficiente, independente da ferramenta 
utilizada para produzi-lo ou da arquitetura 
computacional (hardware e sistema 
operacional) utilizada inicialmente. 
Portabilidade 
• A portabilidade permite que um programa: 
• Rode sem restrição de sistema operacional. 
• Rode sem restrição de hardware. 
• Possa ser alterado em qualquer ferramenta. 
• Não precise ser compilado, reescrito ou 
adaptado para mudança de ambientes 
computacionais. 
Portabilidade 
• A portabilidade pode confrontar com 
outras propriedades desejáveis, como a 
eficiência ou ortogonalidade. 
 
• Uma LP pode abrir mão da completa 
portabilidade em detrimento de um 
aumento de eficiência.

Continue navegando