paradigmas de linguagens de programação - introdução
TRANSCRIPT
![Page 1: Paradigmas de Linguagens de Programação - Introdução](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/1.jpg)
Prof. Adriano Teixeira de Souza
![Page 2: Paradigmas de Linguagens de Programação - Introdução](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/16.jpg)
Prof. Adriano Teixeira de Souza
![Page 17: Paradigmas de Linguagens de Programação - Introdução](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/18.jpg)
Prof. Adriano Teixeira de Souza
![Page 19: Paradigmas de Linguagens de Programação - Introdução](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/558fc6cd1a28ab804e8b46c9/html5/thumbnails/20.jpg)
Prof. Adriano Teixeira de Souza