critérios de avaliação das linguagens de programação marcelo marinho ([email protected])

40
Critérios de Avaliação das Linguagens de Programação Marcelo Marinho ([email protected])

Upload: caique-vila

Post on 07-Apr-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Critérios de Avaliação das Linguagens de Programação

Marcelo Marinho

([email protected])

Page 2: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

IntroduçãoANTESAplicações extremamente simples;Apenas um programador;Processo de desenvolvimento de SW simples.

HOJEAplicações complexas e sofisticadas;Equipes (“teams”) de programadores;Processo de desenvolvimento de SW

disciplinado;Sistemas confiáveis.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 3: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Introdução

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 4: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Critérios de Avaliação das Linguagens de ProgramaçãoLegibilidadeCapacidade de EscritaConfiabilidadeCustoOutros Critérios

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 5: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

LegibilidadeFacilidade de leitura e entendimento de

programas escritos em uma determinada linguagem.

Quanto maior a legibilidade de programas, mais fácil é a manipulação dos mesmos para correção, extensão e melhoramento (manutenção)

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 6: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

LegibilidadeCaracterísticas que contribuem para

legibilidade: Simplicidade Ortogonalidade Instruções de Controle Tipos e Estruturas de Dados Sintaxe Efeito Colateral

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 7: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SimplicidadeLinguagem com grande número de

componentes básicos é mais difícil de ser aprendida do que uma com poucos desses componentes. Programadores acabam ignorando

componentes de linguagens complexas.

Legibilidade é afetada quando programadores se defrontam com programas que usam componentes que foram ignorados.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 8: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SimplicidadeMultiplicidade de formas com um mesmo

significado Em C:

count = count + 1; count++;count += 1; ++count;

Sobrecarga de operadores: único símbolo tem mais de um significado Em C: + Para somar números inteiros como para ponto-flutuante. * para multiplicação de números quanto para operações de

manipulação de ponteiros

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 9: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - OrtogonalidadeUm conjunto relativamente pequeno de construções

primitivas pode ser combinado em um número relativamente pequeno de maneiras para construir as estruturas de controle e de dados da linguagem.

Qualquer possível combinação de primitivas é legal e tem significado.

Exemplo: Suponha uma linguagem com quatro tipos de dados (int,

float, double, char) e dois operadores de tipos (ponteiros e arrays).Ponteiros devem ser capazes de apontar para qualquer tipo de variável ou estrutura de dados.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 10: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - OrtogonalidadeA falta de ortogonalidade acarreta

exceções às regras da linguagem.A ortogonalidade está relacionada à

simplicidadeQuanto mais ortogonal, menos exceções às

regras da linguagem.

Linguagem mais fácil de ser aprendida, lida e entendida.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 11: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - OrtogonalidadeFalta de ortogonalidade de C:Registros (estruturas) podem ser

retornados de funções, mas matrizes não;Um membro de uma estrutura pode ser de

qualquer tipo, menos void ou uma estrutura de mesmo tipo;

Elemento de array pode ser de qualquer tipo, exceto void ou uma função;

Parâmetros são passados por valor, exceto arrays que são passados por referência.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 12: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - OrtogonalidadeMuita ortogonalidade também pode

causar problemaAlgol 68

Um condicional pode aparecer do lado esquerdo de uma atribuição juntamente com outras instruções, contanto que o resultado seja uma localização de memória

if (i=4)

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 13: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - Ortogonalidade

A simplicidade da linguagem é o resultado da combinação de um número pequeno de primitivas e o uso limitado do conceito de ortogonalidade.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 14: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - Instruções de ControleUso de comandos gotoUm programa que pode ser lido de cima para

baixo é mais fácil de entender do que um programa que obriga o leitor a dar saltos para seguir o fluxo da execução.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 15: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - Instruções de ControleEm algumas linguagens, goto é necessário:

Para facilitar a legibilidade, programas com goto:Devem preceder seus alvos, exceto quando usados

em laços;Seus alvos devem estar próximos;Seu número deve ser limitado;

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 16: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - Tipos de DadosTipos de dados facilitam a identificação

do uso de variáveis e dos domínios de valores que podem representar.

Por exemplo, em C não existem tipos booleanos, ao contrário do Pascal:Em C:

ocorreu_erro_de_leitura = 1;Em Pascal:

ocorreu_erro_de_leitura := true;

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 17: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - EstruturasEstruturas fornecem métodos para

representar valores relacionados de uma forma mais legível, do que por exemplo usando coleções de arrays separados.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 18: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Informações de um conjunto de funcionários de uma empresa. Em C pode-se fazer o seguinte:

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 19: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SintaxeFormas IdentificadorasRestringir o tamanho dos identificadores

prejudica a legibilidade.FORTRAN 77: máximo de 6 caracteres para

identificadoresNome_EmpregadoTamanho_Maximo

Basic (ANSI, 1978): identificador com 1 letra ou 1 letra seguida de um dígito:

A1 b3 z9

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 20: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SintaxePalavras EspeciaisA maneira como as palavras especiais (begin,

end, for, while) são usadas influencia a legibilidade. Pascal: begin-end para formar blocos de

comandos C: { } para formar blocos de comandos FORTRAN 90 e ADA:• end if para agrupar comandos associados ao if• end loop para agrupar comandos associados a

um loop

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 21: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SintaxePalavras Especiais Outro ponto importante é a limitação do

uso de palavras reservadas para a criação de identificadores.

FORTRAN 90: DO, END, INTEGER e REAL podem ser nomes de variáveis.• REAL REAL;

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 22: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Legibilidade - SintaxeForma e significadoA forma de uma declaração deve pelo menos

parcialmente indicar seu propósito e significado, melhorando a legibilidade.

Em C, static tem dois significados diferentes:Caso 1: Dentro de uma função, uma variável

static é criada em tempo de compilação.Caso 2: Fora de funções, em um módulo

(arquivo), uma variável static é uma variável global a todas as funções de um módulo.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 23: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de EscritaMedida da facilidade para criar programas

destinado a um domínio de problema escolhido.A maioria das características que afetam

legibilidade também afetam a capacidade de escrita Escrever um programa exige uma releitura

freqüente do que já foi escrito.Domínio dos problemas influência no julgamento

da capacidade de escrita de uma linguagem COBOL para produção de relatórios comerciais

XAPL ideal para manipular matrizes.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 24: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de EscritaCaracterísticas que contribuem para

capacidade de escrita:

Simplicidade e Ortogonalidade

Suporte para Abstração

Expressividade

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 25: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de Escrita - SimplicidadeNúmero muito grande de componentes

de construçõesAlguns programadores podem não estar

familiarizados com todosUso inadequado de alguns recursosDesuso de recursos mais eficientes e

elegantes que outrosUso acidental de recursos desconhecidos

provocando resultados inesperados

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 26: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de Escrita - OrtogonalidadeMuita ortogonalidade pode resultar em Uma vez que quase todas as

combinações primitivas são legais, o compilador não consegue descobrir erros no código.

Em C: if (i = 4)

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 27: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de Escrita - Suporte a AbstraçãoAbstração significa definir e usar

estruturas ou operações complexas, ignorando os detalhes de construção.

Abstração de processosCapacidade de agrupar código que

implementa um algoritmo em um ponto do programa, sem a necessidade de replicá-lo onde for necessário (funções ou procedimentos)

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 28: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de Escrita - Suporte a AbstraçãoAbstração de dados Árvores binárias podem ser implementadas em

C++ e Java usando uma abstração na forma de uma classe.

Nota: Em orientação a objetos, um objeto é uma

abstração tanto para dados (atributos, conhecimento de um objeto) quanto para processos (métodos que implementam mensagens, são as responsabilidades de um objeto).

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 29: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Capacidade de Escrita - ExpressividadeExpressividade refere-se à facilidade de

expressar computações em uma linguagem

Em C: cont++ é mais conveniente e breve que cont = cont + 1

Em Pascal e C: for é mais conveniente para laços de contagem que while

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 30: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

ConfiabilidadeConsidera-se um programa confiável

quando executa o que foi atribuído de modo esperado, sobre quaisquer condições.

Características que contribuem para a confiabilidade:Verificação de TiposTratamento de ExceçõesAliasingLegibilidade e Capacidade de Escrita

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 31: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Confiabilidade - Verificação de TiposTestar se existem erros de tipo em um programa

em tempo de compilação ou de execução. C original: não era fortemente tipado Uma chamada a uma função que exige um tipo float de

entrada pode aceitar um tipo int Pascal, Ada e Java: fazem a verificação da faixa de

subscrito de uma variável array em tempo de execução.

Em C:

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 32: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Confiabilidade - Tratamento de ExceçõesCapacidade de interceptar erros em tempo

de execução, pôr em prática medidas corretivas e prosseguir EIFFEL, Object Pascal, Ada, C++, Java e C# incluem

capacidade de manipular exceções Em JAVA:

try{ System.out.println(a[i]);}catch (IndexOutofBoundsException) { System.out.println(“Errode Indexação”);}

Pascal, C e Fortran não possuem essa capacidade

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 33: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Confiabilidade - AliasingDefine nomes distintos para referenciar a uma mesma área de memória.

Recurso perigoso.Em C:Uniões e ponteiros.

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 34: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Confiabilidade - Legibilidade e Capacidade de EscritaProgramas difíceis de ler são difíceis de escrever e de modificar

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 35: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

CustoCaracterísticas que contribuem para o custo:Treinamento de ProgramadoresEscrita de ProgramasCompilação de ProgramasExecução de ProgramasSistema de Implementação da LinguagemConfiabilidadeManutenção de Programas

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 36: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

CustoTreinamento de programadores

Função da simplicidade, ortogonalidade e da experiência do programador

Escrita de programas na linguagem Função da capacidade de escrita em relação ao domínio do

problema abordado

Compilação de programas Função do tempo de espera pela compilação (na 1ºversão

de ADA os custos eram muito altos)

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 37: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

CustoExecução de programasFunção da qualidade do código produzidoEquilíbrio entre o custo de compilação e o

custo de execuçãoSistema de implementação da

LinguagemFunção do preço das ferramentas de

implementação (compiladores/interpretadores) e de sua disponibilidade para muitas plataformas

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 38: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

CustoConfiabilidadeFunção das falhas causadas pela ausência de

elementos que garantam a corretude do programa

ManutençãoFunção, principalmente, da legibilidade da

linguagem Equivale a 2 ou 4 vezes o custo de

desenvolvimento

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 39: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Outros Critérios de AvaliaçãoPortabilidade Facilidade de mudança dos programas de uma

plataforma para outra Padronização é fundamental – Java.

Generalidade Aplicabilidade a uma ampla faixa de utilizações

Boa Definição Perfeição e precisão do documento que define a

Linguagem de Programação

Estudo de Linguagens de Programação - Prof. Marcelo Marinho

Page 40: Critérios de Avaliação das Linguagens de Programação Marcelo Marinho (marinho.mlm@gmail.com)

Critérios de Avaliação da Linguagem Os critérios são pesados

diferentemente a partir de perspectivas diversasProjetistas da linguagem Elegância e capacidade de atrair uso generalizado

Implementadores da linguagem Dificuldades de implementar as construções e

recursos da linguagemUsuários da linguagem Capacidade de escrita e legibilidade

Estudo de Linguagens de Programação - Prof. Marcelo Marinho