A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Critérios de Avaliação das Linguagens de Programação"— Transcrição da apresentação:

1 Critérios de Avaliação das Linguagens de Programação
Marcelo Marinho 1

2 Introdução ANTES HOJE Aplicações extremamente simples;
Apenas um programador; Processo de desenvolvimento de SW simples. HOJE Aplicaçõ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

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

4 Critérios de Avaliação das Linguagens de Programação
Legibilidade Capacidade de Escrita Confiabilidade Custo Outros Critérios Estudo de Linguagens de Programação - Prof. Marcelo Marinho

5 Legibilidade Facilidade 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

6 Legibilidade Caracterí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

7 Legibilidade - Simplicidade
Linguagem 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

8 Legibilidade - Simplicidade
Multiplicidade 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 + 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

9 Legibilidade - Ortogonalidade
Um 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

10 Legibilidade - Ortogonalidade
A falta de ortogonalidade acarreta exceções às regras da linguagem. A ortogonalidade está relacionada à simplicidade Quanto 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

11 Legibilidade - Ortogonalidade
Falta 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. exemplos Estudo de Linguagens de Programação - Prof. Marcelo Marinho

12 Legibilidade - Ortogonalidade
Muita ortogonalidade também pode causar problema Algol 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

13 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

14 Legibilidade - Instruções de Controle
Uso de comandos goto Um 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

15 Legibilidade - Instruções de Controle
Em 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

16 Legibilidade - Tipos de Dados
Tipos 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

17 Legibilidade - Estruturas
Estruturas 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

18 Informações de um conjunto de funcionários de uma empresa
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

19 Legibilidade - Sintaxe
Formas Identificadoras Restringir o tamanho dos identificadores prejudica a legibilidade. FORTRAN 77: máximo de 6 caracteres para identificadores Nome_Empregado Tamanho_Maximo Basic (ANSI, 1978): identificador com 1 letra ou 1 letra seguida de um dígito: A b z9 Estudo de Linguagens de Programação - Prof. Marcelo Marinho

20 Legibilidade - Sintaxe
Palavras Especiais A 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

21 Legibilidade - Sintaxe
Palavras 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

22 Legibilidade - Sintaxe
Forma e significado A 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

23 Capacidade de Escrita Medida 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

24 Capacidade de Escrita Características que contribuem para capacidade de escrita: Simplicidade e Ortogonalidade Suporte para Abstração Expressividade Estudo de Linguagens de Programação - Prof. Marcelo Marinho

25 Capacidade de Escrita - Simplicidade
Número muito grande de componentes de construções Alguns programadores podem não estar familiarizados com todos Uso inadequado de alguns recursos Desuso de recursos mais eficientes e elegantes que outros Uso acidental de recursos desconhecidos provocando resultados inesperados Estudo de Linguagens de Programação - Prof. Marcelo Marinho

26 Capacidade de Escrita - Ortogonalidade
Muita 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

27 Capacidade de Escrita - Suporte a Abstração
Abstração significa definir e usar estruturas ou operações complexas, ignorando os detalhes de construção. Abstração de processos Capacidade 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

28 Capacidade de Escrita - Suporte a Abstração
Abstraçã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

29 Capacidade de Escrita - Expressividade
Expressividade 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

30 Confiabilidade Considera-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 Tipos Tratamento de Exceções Aliasing Legibilidade e Capacidade de Escrita Estudo de Linguagens de Programação - Prof. Marcelo Marinho

31 Confiabilidade - Verificação de Tipos
Testar 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

32 Confiabilidade - Tratamento de Exceções
Capacidade 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

33 Confiabilidade - Aliasing
Define 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

34 Confiabilidade - Legibilidade e Capacidade de Escrita
Programas difíceis de ler são difíceis de escrever e de modificar Estudo de Linguagens de Programação - Prof. Marcelo Marinho

35 Características que contribuem para o custo:
Treinamento de Programadores Escrita de Programas Compilação de Programas Execução de Programas Sistema de Implementação da Linguagem Confiabilidade Manutenção de Programas Estudo de Linguagens de Programação - Prof. Marcelo Marinho

36 Custo Treinamento de programadores Escrita de programas na linguagem
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

37 Custo Execução de programas Sistema de implementação da Linguagem
Função da qualidade do código produzido Equilíbrio entre o custo de compilação e o custo de execução Sistema de implementação da Linguagem Funçã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

38 Custo Confiabilidade Manutenção
Função das falhas causadas pela ausência de elementos que garantam a corretude do programa Manutenção Funçã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

39 Outros Critérios de Avaliação
Portabilidade 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

40 Critérios de Avaliação da Linguagem
Os critérios são pesados diferentemente a partir de perspectivas diversas Projetistas da linguagem Elegância e capacidade de atrair uso generalizado Implementadores da linguagem Dificuldades de implementar as construções e recursos da linguagem Usuários da linguagem Capacidade de escrita e legibilidade Estudo de Linguagens de Programação - Prof. Marcelo Marinho


Carregar ppt "Critérios de Avaliação das Linguagens de Programação"

Apresentações semelhantes


Anúncios Google