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

Preview:

Citation preview

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

Introdução

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Recommended