Professional Documents
Culture Documents
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
Legibilidade
Facilidade
Quanto
maior a legibilidade de programas, mais fcil a manipulao dos mesmos para correo, extenso e melhoramento (manuteno)
Legibilidade
Caractersticas
que
contribuem
para
legibilidade: Simplicidade Ortogonalidade Instrues de Controle Tipos e Estruturas de Dados Sintaxe Efeito Colateral
Legibilidade - Simplicidade
Linguagem
com grande nmero de componentes bsicos mais difcil de ser aprendida do que uma com poucos desses componentes.
Legibilidade - Simplicidade
Multiplicidade de formas com um mesmo significado Em C:
count = count + 1; count += 1; count++; ++count;
Em C:
+ Para somar nmeros inteiros como para ponto-flutuante. * para multiplicao de nmeros quanto para operaes de manipulao de ponteiros
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
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.
Legibilidade - Ortogonalidade
A falta A
Quanto
mais ortogonal, menos excees s regras da linguagem. mais fcil de ser aprendida, lida e
Linguagem
entendida.
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.
Legibilidade - Ortogonalidade
Muita
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)
Legibilidade - Ortogonalidade
A simplicidade da linguagem o resultado da combinao de um nmero pequeno de primitivas e o uso limitado do conceito de ortogonalidade.
Para
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;
Legibilidade - Estruturas
Estruturas
fornecem mtodos para representar valores relacionados de uma forma mais legvel, do que por exemplo usando colees de arrays separados.
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
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;
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.
releitura
Capacidade de Escrita
Caractersticas
contribuem
para
Simplicidade e Ortogonalidade
Suporte para Abstrao Expressividade
Estudo de Linguagens de Programao - Prof. Marcelo Marinho
Nmero
Alguns
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)
Abstrao
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)
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).
Expressividade
Em Em
Confiabilidade
Caractersticas
que
contribuem
para
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:
Confiabilidade - Aliasing
Recurso perigoso. Em C:
Unies e ponteiros.
Programas
Custo
Caractersticas
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
Compilao de programas
Funo do tempo de espera pela compilao (na 1verso de ADA os custos eram muito altos)
Custo
Execuo de programas
Funo da qualidade do cdigo produzido Equilbrio entre o custo de compilao e o custo de
execuo
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
Portabilidade
Facilidade
Generalidade
Aplicabilidade a uma ampla faixa de utilizaes
Boa Definio
Perfeio e preciso do documento que define a Linguagem
de Programao
Os
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