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

Post on 28-Jun-2015

5.576 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Prof. Adriano Teixeira de Souza

Nome

Cidade

Em que área trabalha

Que tecnologias utiliza no dia-a-dia

Expectativas para a disciplina

Prof. Adriano Teixeira de Souza

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

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

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

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

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

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

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

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

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

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

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

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

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

Prof. Adriano Teixeira de Souza

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

Prof. Adriano Teixeira de Souza

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

Prof. Adriano Teixeira de Souza

top related