Você está na página 1de 40

Critrios de Avaliao das Linguagens de Programao

Marcelo Marinho (marinho.mlm@gmail.com)

Introduo

ANTES
Aplicaes extremamente simples; Apenas um programador; Processo de desenvolvimento de SW simples.

HOJE
Aplicaes complexas e sofisticadas; Equipes (teams) de programadores; Processo de desenvolvimento de SW disciplinado; Sistemas confiveis.
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Introduo

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Critrios de Avaliao das Linguagens de Programao

Legibilidade Capacidade de Escrita Confiabilidade Custo Outros Critrios

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade

Facilidade

de leitura e entendimento de programas escritos em uma determinada linguagem.

Quanto

maior a legibilidade de programas, mais fcil a manipulao dos mesmos para correo, extenso e melhoramento (manuteno)

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade

Caractersticas

que

contribuem

para

legibilidade: Simplicidade Ortogonalidade Instrues de Controle Tipos e Estruturas de Dados Sintaxe Efeito Colateral

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Simplicidade

Linguagem

com grande nmero de componentes bsicos mais difcil 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 Programao - Prof. Marcelo Marinho

Legibilidade - Simplicidade
Multiplicidade de formas com um mesmo significado Em C:
count = count + 1; count += 1; count++; ++count;

Sobrecarga de operadores: nico smbolo tem mais de um significado

Em C:
+ Para somar nmeros inteiros como para ponto-flutuante. * para multiplicao de nmeros quanto para operaes de manipulao de ponteiros

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Ortogonalidade
Um conjunto relativamente pequeno de construes
primitivas pode ser combinado em um nmero relativamente pequeno de maneiras para construir as estruturas de controle e de dados da linguagem.

Qualquer

possvel combinao 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 varivel ou estrutura de dados.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Ortogonalidade

A falta A

de ortogonalidade acarreta excees s regras da linguagem. ortogonalidade simplicidade est relacionada

Quanto

mais ortogonal, menos excees s regras da linguagem. mais fcil de ser aprendida, lida e

Linguagem
entendida.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Ortogonalidade

Falta de ortogonalidade de C:
Registros
(estruturas) podem ser retornados de funes, mas matrizes no; 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 funo; Parmetros so passados por valor, exceto arrays que so passados por referncia.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Ortogonalidade

Muita

ortogonalidade tambm pode causar problema

Algol 68
Um condicional pode aparecer do lado esquerdo de uma atribuio juntamente com outras instrues, contanto que o resultado seja uma localizao de memria if (i=4)

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Ortogonalidade

A simplicidade da linguagem o resultado da combinao de um nmero pequeno de primitivas e o uso limitado do conceito de ortogonalidade.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Instrues de Controle

Uso de comandos goto


Um
programa que pode ser lido de cima para baixo mais fcil de entender do que um programa que obriga o leitor a dar saltos para seguir o fluxo da execuo.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Instrues de Controle

Em algumas linguagens, goto necessrio:

Para

facilitar a legibilidade, programas com

goto: Devem preceder seus alvos, exceto quando usados em


laos; Seus alvos devem estar prximos; Seu nmero deve ser limitado;
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Tipos de Dados

Tipos Por

de dados facilitam a identificao do uso de variveis e dos domnios de valores que podem representar. exemplo, em C no existem tipos booleanos, ao contrrio do Pascal: Em C:
ocorreu_erro_de_leitura = 1;

Em Pascal:
ocorreu_erro_de_leitura := true;

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Estruturas

Estruturas

fornecem mtodos para representar valores relacionados de uma forma mais legvel, do que por exemplo usando colees de arrays separados.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Informaes de um conjunto de funcionrios de uma empresa. Em C pode-se fazer o seguinte:

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Sintaxe
Formas Identificadoras Restringir o tamanho dos identificadores prejudica
a legibilidade. FORTRAN 77: mximo de 6 caracteres para identificadores Nome_Empregado Tamanho_Maximo Basic (ANSI, 1978): identificador com 1 letra ou 1 letra seguida de um dgito: A1 b3 z9
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Sintaxe
Palavras Especiais A maneira como
as palavras especiais (begin, end, for, while) so 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 Programao - Prof. Marcelo Marinho

Legibilidade - Sintaxe
Palavras Especiais Outro ponto importante
a limitao do uso de para a criao de

palavras reservadas identificadores. FORTRAN 90: DO, END, INTEGER e REAL podem ser nomes de variveis. REAL REAL;

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Legibilidade - Sintaxe
Forma e significado A forma de uma
declarao deve pelo menos parcialmente indicar seu propsito e significado, melhorando a legibilidade.

Em C, static tem dois significados diferentes: Caso 1: Dentro de uma funo, uma varivel static
criada em tempo de compilao. Caso 2: Fora de funes, em um mdulo (arquivo), uma varivel static uma varivel global a todas as funes de um mdulo.
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita
Medida da facilidade para criar programas destinado
a um domnio de problema escolhido.

A maioria das caractersticas que afetam legibilidade


tambm afetam a capacidade de escrita Escrever um programa exige uma freqente do que j foi escrito.

releitura

Domnio dos problemas influncia no julgamento da


capacidade de escrita de uma linguagem COBOL para produo de relatrios comerciais XAPL ideal para manipular matrizes.
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita

Caractersticas

que capacidade de escrita:

contribuem

para

Simplicidade e Ortogonalidade
Suporte para Abstrao Expressividade
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita Simplicidade

Nmero
Alguns

muito grande de componentes de construes


programadores podem no 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 Programao - Prof. Marcelo Marinho

Capacidade de Escrita Ortogonalidade

Muita ortogonalidade pode resultar em Uma vez que quase todas as combinaes
primitivas so legais, o compilador no consegue descobrir erros no cdigo.

Em C:
if (i = 4)

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita - Suporte a Abstrao

Abstrao

significa definir e usar estruturas ou operaes complexas, ignorando os detalhes de construo.

Abstrao de processos
Capacidade de agrupar cdigo que implementa um
algoritmo em um ponto do programa, sem a necessidade de replic-lo onde for necessrio (funes ou procedimentos)

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita - Suporte a Abstrao

Abstrao de dados
rvores
binrias podem ser implementadas em C++ e Java usando uma abstrao na forma de uma classe.

Nota:
Em
orientao a objetos, um objeto uma abstrao tanto para dados (atributos, conhecimento de um objeto) quanto para processos (mtodos que implementam mensagens, so as responsabilidades de um objeto).

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Capacidade de Escrita Expressividade

Expressividade
Em Em

refere-se facilidade de expressar computaes em uma linguagem


C: cont++ mais conveniente e breve que cont = cont + 1 Pascal e C: for mais conveniente para laos de contagem que while

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Confiabilidade

Considera-se um programa confivel quando


executa o que foi atribudo de modo esperado, sobre quaisquer condies.

Caractersticas

que

contribuem

para

confiabilidade: Verificao de Tipos Tratamento de Excees Aliasing Legibilidade e Capacidade de Escrita


Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Confiabilidade - Verificao de Tipos


Testar se existem erros de tipo em um programa em
tempo de compilao ou de execuo.

C original: no era fortemente tipado Uma chamada a uma funo que

exige um tipo float de

entrada pode aceitar um tipo int Pascal, Ada e Java: fazem a verificao da faixa de subscrito de uma varivel array em tempo de execuo.

Em C:

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Confiabilidade - Tratamento de Excees


Capacidade
EIFFEL,
de interceptar erros em tempo de execuo, pr em prtica medidas corretivas e prosseguir
Object Pascal, Ada, C++, Java e C# incluem capacidade de manipular excees Em JAVA: try{ System.out.println(a[i]); }catch (IndexOutofBoundsException) { System.out.println(Errode Indexao); } Pascal, C e Fortran no possuem essa capacidade

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Confiabilidade - Aliasing

Define nomes distintos para referenciar


a uma mesma rea de memria.

Recurso perigoso. Em C:
Unies e ponteiros.

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Confiabilidade - Legibilidade e Capacidade de Escrita

Programas

difceis de ler so difceis de escrever e de modificar

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Custo

Caractersticas

que contribuem para o

custo: Treinamento de Programadores Escrita de Programas Compilao de Programas Execuo de Programas Sistema de Implementao da Linguagem Confiabilidade Manuteno de Programas
Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Custo

Treinamento de programadores

Funo da simplicidade, ortogonalidade e da experincia do programador

Escrita de programas na linguagem

Funo da capacidade de escrita em relao ao domnio do problema abordado

Compilao de programas

Funo do tempo de espera pela compilao (na 1verso de ADA os custos eram muito altos)

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Custo

Execuo de programas
Funo da qualidade do cdigo produzido Equilbrio entre o custo de compilao e o custo de
execuo

Sistema de implementao da Linguagem


Funo
do preo das ferramentas de implementao (compiladores/interpretadores) e de sua disponibilidade para muitas plataformas

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Custo

Confiabilidade
Funo
das falhas causadas pela ausncia de elementos que garantam a corretude do programa

Manuteno
Funo,
principalmente,
ou 4

da
vezes

legibilidade
o custo

da
de

linguagem Equivale a 2 desenvolvimento

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Outros Critrios de Avaliao

Portabilidade
Facilidade

de mudana dos programas de uma plataforma


para outra Padronizao fundamental Java.

Generalidade
Aplicabilidade a uma ampla faixa de utilizaes

Boa Definio
Perfeio e preciso do documento que define a Linguagem
de Programao

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Critrios de Avaliao da Linguagem

Os

critrios so pesados diferentemente a partir de perspectivas diversas

Projetistas da linguagem
Elegncia e capacidade de atrair uso generalizado

Implementadores da linguagem
Dificuldades de implementar as construes e recursos da
linguagem

Usurios da linguagem
Capacidade de escrita e legibilidade

Estudo de Linguagens de Programao - Prof. Marcelo Marinho

Você também pode gostar