SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
Sidney Roberto
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
AlbertoVach
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
essa
 
Programação 1
Programação 1Programação 1
Programação 1
essa
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
essa
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
LCCIMETRO
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
Wagner Zaparoli
 

La actualidad más candente (19)

Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
Programação 1
Programação 1Programação 1
Programação 1
 
Software
SoftwareSoftware
Software
 
1.1.paradigmas
1.1.paradigmas1.1.paradigmas
1.1.paradigmas
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 

Destacado

4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
Péricles Miranda
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacao
pablogranola
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
Paulo Muniz
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
Carlos Melo
 
Atps paradigmas da linguagem
Atps paradigmas da linguagemAtps paradigmas da linguagem
Atps paradigmas da linguagem
Rafael Cianci
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Adriano Teixeira de Souza
 
Respostas mankiw - capítulo 1 (superior)
Respostas mankiw  - capítulo 1 (superior)Respostas mankiw  - capítulo 1 (superior)
Respostas mankiw - capítulo 1 (superior)
Luciano Pires
 
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolso
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolsoContabilidade custos gasto, investimento, custo, despesa, perda, desembolso
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolso
custos contabil
 
Modelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNTModelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNT
Rosineia Oliveira dos Santos
 

Destacado (16)

4 introdução ao paradigma funcional
4 introdução ao paradigma funcional4 introdução ao paradigma funcional
4 introdução ao paradigma funcional
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacao
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Resumo de aulas lp1
Resumo de aulas lp1Resumo de aulas lp1
Resumo de aulas lp1
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
Atps paradigmas da linguagem
Atps paradigmas da linguagemAtps paradigmas da linguagem
Atps paradigmas da linguagem
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Linguagens Especificas de Dominio
Linguagens Especificas de DominioLinguagens Especificas de Dominio
Linguagens Especificas de Dominio
 
Matando o Java e Mostrando o Python
Matando o Java e Mostrando o PythonMatando o Java e Mostrando o Python
Matando o Java e Mostrando o Python
 
Paradigmas do Ruby
Paradigmas do RubyParadigmas do Ruby
Paradigmas do Ruby
 
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
TDC2016POA | Trilha Programacao Funcional - Por que sua próxima aplicação web...
 
Respostas mankiw - capítulo 1 (superior)
Respostas mankiw  - capítulo 1 (superior)Respostas mankiw  - capítulo 1 (superior)
Respostas mankiw - capítulo 1 (superior)
 
Modelo de Artigo Científico
Modelo de Artigo CientíficoModelo de Artigo Científico
Modelo de Artigo Científico
 
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolso
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolsoContabilidade custos gasto, investimento, custo, despesa, perda, desembolso
Contabilidade custos gasto, investimento, custo, despesa, perda, desembolso
 
Modelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNTModelo de artigo científico básico - com normas ABNT
Modelo de artigo científico básico - com normas ABNT
 

Similar a Paradigmas de Linguagens de Programação - Introdução

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
essa
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Gabriel Rubens
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
Ray Fran Pires
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Gabriel Rubens
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
Adriano Teixeira de Souza
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
Rosicleia Frasson
 

Similar a Paradigmas de Linguagens de Programação - Introdução (20)

Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
linguagens_de_programacao.ppt
linguagens_de_programacao.pptlinguagens_de_programacao.ppt
linguagens_de_programacao.ppt
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
Trabalho linguagem python
Trabalho linguagem  pythonTrabalho linguagem  python
Trabalho linguagem python
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Programacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfProgramacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdf
 
Apostila c
Apostila cApostila c
Apostila c
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
 
C 04 linguagem_de_programacao
C 04 linguagem_de_programacaoC 04 linguagem_de_programacao
C 04 linguagem_de_programacao
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Noções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores DigitaisNoções Básicas do Software dos Computadores Digitais
Noções Básicas do Software dos Computadores Digitais
 

Más de Adriano Teixeira de Souza

Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Adriano Teixeira de Souza
 

Más de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 

Paradigmas de Linguagens de Programação - Introdução

  • 2. Nome  Cidade  Em que área trabalha  Que tecnologias utiliza no dia-a-dia  Expectativas para a disciplina Prof. Adriano Teixeira de Souza
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 17. 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
  • 19. 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