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

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

TIPOS ABSTRATOS DE DADOS
Funções em C Prof. Fabiano Utiyama.
Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Construção de Algoritmos 2
Introdução à Ciência da Computação Linguagens de Programação.
Estruturas de Repetição
Perspectivas baseadas em procedimentos e orientadas por objectos Conceitos principais: Encapsulamento, Herança, Polimorfismo (Encapsulation, Hierarchy,
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
Introdução a Informática
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
Curso Sistemas de Informação Disciplina: Arquitetura de Software
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Linguagens de Programação
Aula 2 Aspectos Preliminares
Introdução a Linguagem de Programação C
Introdução a Programação JAVA
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Paradigmas de programação
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
JAVA: Conceitos Iniciais
Conceitos de Linguagem de Programação
Linguagem de programação I A
Programação I Aula 2 (Métodos)
Caracterização e Objetivos das LP
Tipos de Dados Paradigmas de Programação
Avaliação da Linguagem de Programação
Verificação de Tipos e Escopos
Nomes, Variáveis e Vinculações
Expressões e Instrução de Atribuição
DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.
Java Bytecode Software Básico Mitsuo Takaki.
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Orientação a Objetos Parte I
Linguagem Pascal Prof. Sérgio Rodrigues.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Paradigmas de Linguagens de Programação Aula 2
Introdução a Linguagens de Programação
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algumas notas sobre a linguagem de programação C
Programação Orientada a Objetos - Java
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Programação de PIC em C Exposição das funções básicas para
Aula 1 – Profª Danielle Costa
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
JAVA Sintaxe.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Linguagens de Programação Introdução Prof. Renato Melo.
Faculdade Pernambucana - FAPE Setembro/2007
Fundamentos de linguagens de programação
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Introdução à Programação
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
Introdução Sintaxe Básica da Linguagem JAVA
Módulo II Capítulo 1: Orientação a Objetos
Influencias sobre o Projeto da Linguagem
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
Estimativa, Teste e Inspeção de Software
1. 2 Prof. Maurício Rodrigues de Morais Programação Orientada a Objetos II.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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: A1 b3 z9 Estudo de Linguagens de Programação - Prof. Marcelo Marinho

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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