paradigmas de linguagens de programação - introdução

20
Prof. Adriano Teixeira de Souza

Upload: adriano-teixeira-de-souza

Post on 28-Jun-2015

5.576 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Paradigmas de Linguagens de Programação - Introdução

Prof. Adriano Teixeira de Souza

Page 2: Paradigmas de Linguagens de Programação - Introdução

Nome

Cidade

Em que área trabalha

Que tecnologias utiliza no dia-a-dia

Expectativas para a disciplina

Prof. Adriano Teixeira de Souza

Page 3: Paradigmas de Linguagens de Programação - Introdução

Conteúdo programático ◦ Motivação para o estudo de Linguagens de Programação ◦ Critérios para Avaliação de Linguagens ◦ Métodos de Implementação de Linguagens ◦ Paradigmas de Linguagens de Programação ◦ Evolução Histórica das Linguagens de Programação ◦ Ambientes de Programação ◦ Estilos de Codificação e Padronização ◦ Expressões e Atribuição ◦ Estruturas de Controle ◦ Gerenciamento de Memória ◦ Tratamento de Exceções ◦ Modularização, componentização e reutilização de

código ◦ Escalabilidade

Prof. Adriano Teixeira de Souza

Page 4: Paradigmas de Linguagens de Programação - Introdução

Aulas teórico - praticas Discussões sobe o assunto Listas de exercícios Trabalhos Avaliação bimestral Nota 1º bimestre ◦ Avaliação bimestral (peso de 50%) ◦ Trabalhos e listas de exercícios (peso de 35% ) ◦ Participação e envolvimento em sala (peso 15%)

Nota 2º bimestre ◦ Avaliação bimestral (peso de 50%) ◦ Artigo científico (20% peso) ◦ Trabalhos e listas de exercícios (peso de 15% ) ◦ Participação e envolvimento em sala (peso 15%)

Prof. Adriano Teixeira de Souza

Page 5: Paradigmas de Linguagens de Programação - Introdução

Linguagem de Programação: ◦ Linguagem usada por uma pessoa para expressar

um processo através do qual um computador pode resolver um problema.

Porque tantas? ◦ Propósitos diferentes

◦ Avanços tecnológicos

◦ Interesses comerciais

Prof. Adriano Teixeira de Souza

Page 6: Paradigmas de Linguagens de Programação - Introdução

Maior habilidade em resolver problemas: ◦ Melhor domínio;

Melhor uso de uma LP ◦ Extrair o máximo de sua funcionalidade e eficiência;

Maior embasamento para escolha de linguagens ◦ Não escolher apenas a linguagem que estiver mais

familiarizado

Melhor escolha de uma LP ◦ Adequação ao problema

Maior facilidade em aprender novas LPs;

Prof. Adriano Teixeira de Souza

Page 7: Paradigmas de Linguagens de Programação - Introdução

Legibilidade ◦ Quão facilmente um programa pode ser lido e entendido

Capacidade de Escrita ◦ Quão facilmente uma linguagem pode ser usada para

criar programas Confiabilidade ◦ Conformidade com as especificações sob todas as

condições Custo ◦ O custo final de uma linguagem é uma função de suas

características

Portabilidade ◦ Possibilidade de ser executada sob diversos sistemas

operacionais e plataformas de harware

Prof. Adriano Teixeira de Souza

Page 8: Paradigmas de Linguagens de Programação - Introdução

Simplicidade global: uma linguagem com um grande número de componentes básicos é mais difícil de aprender do que com poucos desses componentes → programadores tendem a aprender subconjunto dela.

Multiplicidade de recursos complica a legibilidade:

cont = cont + 1 cont += 1 cont++ ++cont

Prof. Adriano Teixeira de Souza

Page 9: Paradigmas de Linguagens de Programação - Introdução

Facilidade de ler e escrever programas ◦ Legibilidade influi:

desenvolvimento e depuração de programas

manutenção de programas

desempenho de equipes de programação

Fatores que melhoram a legibilidade: ◦ Abstração de dados ◦ Comandos de controle ◦ Modularização de programas ◦ Documentação ◦ Convenções léxicas, sintaxe e semântica

Exemplo em Java: nomes de classes iniciam por letra maiúscula, nomes de campos usam letras minúsculas

Prof. Adriano Teixeira de Souza

Page 10: Paradigmas de Linguagens de Programação - Introdução

Medida de quão facilmente uma linguagem pode ser usada para criar programas para um domínio de problema escolhido.

Suporte para abstração: capacidade de definir e, depois, usar estruturas ou operações complicadas de uma maneira que permita ignorar muitos dos detalhes.

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

Prof. Adriano Teixeira de Souza

Page 11: Paradigmas de Linguagens de Programação - Introdução

Um programa é confiável se ele se comportar seguindo suas especificações sob todas as condições.

Verificação de tipos ◦ Testar se existem erros de tipos, pelo compilador

ou durante a execução.

Manipulação de Exceções ◦ Capacidade de interceptar erros em tempo de

execução e por em prática medidas corretivas

◦ Ex: C++ e Java incluem essas facilidades. C e Fortran não

Prof. Adriano Teixeira de Souza

Page 12: Paradigmas de Linguagens de Programação - Introdução

Treinamento dos programadores para usar a linguagem

Escrita de programas na linguagem Compilação programas na linguagem Execução dos programas ◦ Muitas verificações na execução deixando a

execução lenta (Ex: Linguagem interpretada)

Sistema de implementação da linguagem: ◦ Existência de compiladores free

Confiabilidade ◦ Confiabilidade baixa leva a altos custos

Manutenção dos programas

Prof. Adriano Teixeira de Souza

Page 13: Paradigmas de Linguagens de Programação - Introdução

Portabilidade ◦ Quão facilmente um programa pode ser movido de

uma implementação para outra Ex: executar em vários sistemas operacionais, e

plataformas de hardware

Generalidade ◦ Seu uso em uma gama de aplicações

Boa definição ◦ A precisão e a completeza da definição oficial da

linguagem

Existência de boas ferramentas ◦ Compiladores ◦ Debuggers

Prof. Adriano Teixeira de Souza

Page 14: Paradigmas de Linguagens de Programação - Introdução

Compilação ◦ Programas são traduzidos para a linguagem de

máquina

Interpretação pura ◦ Programas são interpretados por outro programa

conhecido como interpretador

Sistemas de implementação híbridos ◦ Um meio-termo entre compiladores e

interpretadores puros

Prof. Adriano Teixeira de Souza

Page 15: Paradigmas de Linguagens de Programação - Introdução

Traduz programas em alto-nível (linguagem fonte) em código de máquina (linguagem de máquina)

Tradução lenta, execução rápida

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

Converte caracteres de um programa fonte em unidades léxicas ◦ Análise sintática

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

◦ Análise semântica Gera código intermediário

◦ Geração de código Código de máquina é gerado

Prof. Adriano Teixeira de Souza

Page 16: Paradigmas de Linguagens de Programação - Introdução

Prof. Adriano Teixeira de Souza

Page 17: Paradigmas de Linguagens de Programação - Introdução

Sem tradução Fácil implementação de programas (erros de

execução podem ser facilmente e rapidamente mostrados)

Execução lenta (de 10 a 100 vezes mais lenta do que programas compilados)

Geralmente requer mais espaço Cada vez mais raro em linguagens de alto-

nível Embora não seja uma linguagem simples,

JavaScript é puramente interpretado

Prof. Adriano Teixeira de Souza

Page 18: Paradigmas de Linguagens de Programação - Introdução

Prof. Adriano Teixeira de Souza

Page 19: Paradigmas de Linguagens de Programação - Introdução

Um meio-termo entre compilador e interpretador puro

Um programa em uma linguagem de alto-nível é traduzido para uma linguagem intermediária que permite fácil interpretação

Mais rápido do que interpretação pura

Exemplos ◦ Programas em Perl são parcialmente compilados para

detectar erros antes da interpretação ◦ Implementações iniciais de Java eram híbridas

A forma intermediária, byte code, provinha portabilidade para qualquer máquina que tivesse o interpretador de byte code e um sistema de run-time (juntos, esses são chamados de Java Virtual Machine)

Prof. Adriano Teixeira de Souza

Page 20: Paradigmas de Linguagens de Programação - Introdução

Prof. Adriano Teixeira de Souza