paradigmas de linguagens de programação - introdução
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