31
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Embed Size (px)

Citation preview

Page 1: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Linguagem de programação I A

Carlos Oberdan Rolim

Ciência da ComputaçãoSistemas de Informação

Versão: 27022014_01

Page 2: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Introdução

Page 3: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Sumário

Motivos para estudar Conceitos de Linguagens de Programação

Domínios da Programação

Critérios de Avaliação de Linguagens

Custos

Trade-offs

Influências sobre o Projeto da Linguagem

Metodologias

Categorias de linguagens

Métodos de Implementação

Page 4: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Motivos para estudar CLPs

Aumento da capacidade de expressar idéias;

Conhecer os recursos e limites das linguagens nos permite

otimizar o uso da mesma;

Maior conhecimento para a escolha de linguagens

apropriadas;

Page 5: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Motivos para estudar CLPs

Muitos programadores aprendem por conta...

Conhecer os diferentes recursos da diferentes linguagens facilita o

processo de escolha de uma linguagem compatível com o nível de

abstração exigido pelo problema

Capacidade aumentada para aprender novas linguagens;

Page 6: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Domínios da programação

Diferentes empregos da computação

- Áreas de uso

Aplicações Científicas

- O grande motivo da computação;

- Estruturas de dados simples, laços de contagem e seleções;

- Fortran e Algol 60, linguagem assembly;

Aplicações Comerciais

- Final década de 50;

- Geração de relatórios, armazenamento de números decimais

- COBOL

Page 7: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Domínios da programação

Inteligência Artificial

- Utilização de computação simbólica em vez de numérica;

- LISP (1959) e Prolog (1970)

Programação de Sistemas

- Sistema Operacional (software básico)

- Algol e C

Page 8: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Domínios da programação

Linguagem de scripting

- Listas de comandos a serem executados

- AWK, Perl, Python

Programação Web

- Popularização da Internet

- Mudou completamente a forma de pensar e desenvolver sistemas

- Inicio como simples páginas

- Sistemas completos

- Linguagens server side x client side

o PHP

o JavaScript

- Linguagens compiladas x interpretadas x hibridas

Page 9: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Critérios de avaliação da linguagem

Legibilidade (Readability)

- Quão facilmente um programa pode ser lido e entendido

Capacidade de escrita (Writability)

- Quão facilmente uma linguagem pode ser usada para criar programas

Confiabilidade (Reliability)

- Conformidade com as especificações sob todas as condições

Custo

- O custo final de uma linguagem é uma função de suas características

Page 10: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Legibilidade (Readability)

Simplicidade global

- Linguagens com um pequeno número de componentes básicos são mais fáceis de

aprender

- Multiplicidade de recursos (mais de uma maneira para realizar uma operação particular)

- Sobrecarga (overloading) de um operador, ou seja, um único símbolo possui mais de um

significado.

Um exemplo em C para incrementar uma variável inteira simples:

cont = cont +1

cont += 1

cont++

++cont

Page 11: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Legibilidade (Readability)

Ortogonalidade

- Diz respeito a capacidade da LP permitir ao programador combinar seus conceitos básicos

sem que se produzam efeito anômalos nessa combinação.

- Assim uma LP é tão mais ortogonal quanto menor for o numero de exceções aos seus

padrões regulares.

- LPs ortogonais são interessantes porque o programador pode prever, com segurança, o

comportamento de uma determinada combinação de conceitos

Page 12: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Legibilidade (Readability)

Instruções de controle

- A existência de estruturas de controle bem conhecidas (exemplo: while)

while (incr < 20) {

while (sum <= 100) {

sum += incr;

}

incr++;

}

loop1:

if (incr >= 20) goto out;

loop2:

if (sum > 100) goto next;

sum += incr;

goto loop2;

next:

incr++;

goto loop1;

out:

Page 13: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Legibilidade (Readability)

Tipos de dados e estruturas

- A presença de facilidades adequadas para definir tipos de dados e estruturas de dados

- Exemplo: suponha que em uma linguagem não exista um tipo de dado booleano e um tipo numérico seja usado para substituí-lo:

o timeOut = 1 (significado não claro)

o timeOut = true (significado claro)

Page 14: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Legibilidade (Readability)

Considerações sobre a sintaxe

- Formas identificadoras

oRestringir os identificadores a tamanhos muito pequenos prejudica a

legibilidade

- Palavras especiais

oFormas das palavras especiais de uma linguagem (exemplo: while,

class, for e begin-end)

oPalavras especiais de uma linguagem podem ser usadas como nomes

de variáveis?

- Forma e significado

oProjetar instruções de forma que sua aparência indique sua finalidade

Page 15: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Capacidade de Escrita (Writability)

Simplicidade e ortogonalidade- Poucos construtores, um pequeno número de primitivas, um pequeno

conjunto de regras para combiná-los

Suporte para abstração- A capacidade de definir e de usar estruturas ou operações

complexas de maneira que permita ignorar muitos dos detalhes

Expressividade- Um conjunto relativamente conveniente de maneiras de especificar

operadores

- Exemplos:

• count++ é mais conveniente do que count = count + 1

• a inclusão do for em muitas linguagens modernas

Page 16: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Confiabilidade (Reliability)

Verificação de tipos- Testar se existem erros de tipos

Manipulação de Exceções- Capacidade de interceptar erros em tempo de execução e por em

prática medidas corretivas

Page 17: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Confiabilidade (Reliability)

Apelidos (Aliasing)- Presença de dois ou mais métodos, ou nomes, distintos que

referenciam a mesma célula de memória

Legibilidade (Readability) e Capacidade de Escrita (Writability)- Uma linguagem que não suporta maneiras naturais de expressar os

algoritmos usará, necessariamente, abordagens não-naturais. Assim, a legibilidade será reduzida.

- A legibilidade afeta a confiabilidade tanto na escrita quanto na manutenção.

Page 18: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Custo

Treinamento dos programadores para usar a linguagem

Escrita de programas na linguagem

Compilação dos programas na linguagem

Execução dos programas

Sistema de implementação da linguagem:

- IDE (Integrated Development Environment) free x pagas

Confiabilidade

- Confiabilidade baixa leva a altos custos

Manutenção dos programas

Page 19: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Trade-offs

Critérios Conflitantes: confiabilidade X custo de execução

- Verificação dinâmica de tipos;

- Índices de arrays

expressividade X legibilidade

- conjunto poderoso de operadores leva a expressões matemáticas concisas mas pouco legíveis

flexibilidade X segurança

- uniões em C;

Page 20: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Outros critérios de avaliação

Portabilidade

- Quão facilmente um programa pode ser movido de uma

implementação para outra

Generalidade

- Seu uso em uma gama de aplicações

Boa definição (Well-definedness)

- A precisão e o quanto a definição oficial da linguagem é completa

Page 21: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Influências sobre o projeto da linguagem

Arquitetura do Computador

- Linguagens são desenvolvidas com base na arquitetura

mais usada, conhecida como arquitetura von Neumann*

*(se caracteriza pela possibilidade de uma máquina digital armazenar

seus programas no mesmo espaço de memória que os dados, podendo

assim manipular tais programas – usa CPU e Memória)

Page 22: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Influências sobre o projeto da linguagem

Metodologias de programação

- Novas metodologias de desenvolvimento de software (exemplo,

desenvolvimento orientado a objetos) levam a novos paradigmas de

programação, e novas linguagens de programação

Page 23: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Metodologias

Ausência de metodologia

Programação estruturada

oDécada de 70;

oMetodologias de projeto top-down e botton-up;

oOrientação aos processos;

oAlgol, Pascal, C.

Page 24: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Metodologias

Programação orientada a objetos

oDécada de 80

oAbstração de dados, herança, encapsulamento;

ovinculação dinâmica de tipos;

oSmalltalk; C++; Java

Programação orientada a eventos

oAplicação “reage” a eventos

Page 25: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Metodologias

Programação orientada a aspectos

oobjetivo separar o código segundo a sua importância para a

aplicação, permitindo que o programador encapsule o código

secundário em módulos separados do restante da aplicação

Page 26: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Categorias de linguagens

Imperativas: utilizam a variável como elemento de abstração da célula de memória; (C, Java)

Funcionais: Principal maneira de computar é através da aplicação de funções para os parâmetros fornecidos - somente recursão; (LISP)

Page 27: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Categorias de linguagens

Lógicas: baseadas em regras; não há um fluxo particular de execução; Aplicam-se um conjunto de regras a um conjunto de dados através de uma função de inferência obtendo-se novos dados; (Prolog)

Marcação: não especificam computações, mas descrevem a aparência geral de documentos (html, latex)

Page 28: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Métodos de implementação

1) Compilação- Traduz um programa de alto-nível para o código de máquina

- Tradução lenta

- Execução rápida

- O processo de compilação possui várias fases:oAnálise léxica

• Converte caracteres de um programa fonte em unidades léxicas

oAnálise sintática

• Transforma unidades léxicas em parse trees, as quais representam a estrutura sintática do programa

oAnálise semântica

• Gera código intermediário

oGeração de código

• Código de máquina é gerado

- Exemplos: C, Cobol, Ada, Pascal...

Page 29: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

Programa Fonte

Analisador

léxico

Analisador

sintático

Gerador de Código

Intermediário (e

analisador sintático)

Gerador de

Código

Otimização

Computador

Tabela de

símbolos

Unidades Léxicas

Árvores de Análise (parse trees)

Código Intermediário

Linguagem de Máquina

Resultados

(Opcional)

Dados de

Entrada

Métodos de implementação (compilação)

Page 30: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

2) Interpretação Pura

- Sem tradução

- Execução lenta (10 a 100 vezes mais lento que programas compilados)

- Requer mais espaço

- Exemplo: Javascript, scripts UNIX

Métodos de implementação

Programa Fonte

Dados de

Entrada

Resultados

Interpretador

Page 31: Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: 27022014_01

3) Sistemas de implementação Híbridos

- Um meio-termo entre compilador e interpretador puro

- Baixo custo de tradução

- Velocidade de execução média

- Mais rápido do que interpretação pura

- Ex.: Perl, Java

Programa Fonte

Analisador

léxico

Analisador

sintático

Gerador de Código

Intermediário (e

analisador sintático)

Unidades Léxicas

Árvores de Análise (parse trees)

Código Intermediário

Dados de

Entrada

Resultados

Interpretador

Métodos de implementação