Baixe o app para aproveitar ainda mais
Prévia do material em texto
PARADIGMAS DE PROGRAMAÇÃO Slide: 03 Processadores de Linguagens Compilação vs Interpretação Compilação Interpretação Abordagem Híbrida Projetos no DEV C++ Compilar Projetos 1- Processadores de Linguagens As Linguagens de Programação são baseadas nas ideias de Von Neumann, pois a maioria dos computadores são similares à arquitetura original de Von Neumann. 1- Processadores de Linguagens Linguagens convencionais são baseadas no modelo convencional de Von Neumann, as tais linguagens damos o nome de IMPERATIVAS. Na Arquitetura de Von Neumann ocorre um processo chamado de CICLO DE INSTRUÇÃO. REPITA BUSCA UMA INSTRUÇÃO DECODIFICA EXECUTA ATÉ NÃO HOUVER MAIS INSTRUÇÕES 1- Processadores de Linguagens Busca a Instrução Tem operando? Busca Operando Executa a Instrução Não Sim Fim UPCOD Operação Descrição 00 ADD (ACC)(ACC)+(OPE) 01 SUB (ACC)(ACC)-(OPE) 10 LDA (ACC)(OPE) 11 STR (OPE)(ACC) CPU RDM 10000001 REM 00000000 RI 00000001 ACC UC DEC ULA CI MP xx upcode 0 00000011 00000001 Incrementa CI Decodifica a Instrução 01000000 00 000001 01 000000 10 000011 11 000100 00 000101 1- Processadores de Linguagens Sobre a arquitetura de Von Neumann, algumas camadas de software foram construídas ao longo dos anos, como podem ser observados a seguir. LP Hardware Sistema Operacional EMULADOR COMPILADOR INTERPRETADOR Prog A Prog D Prog B Prog C LP 1 LP 2 LP 3 2- Compilação vs Interpretação Como pode ser visto no ciclo de instrução, as Linguagens de máquina são executadas diretamente. Para a execução de programas escritos em linguagens de alto nível existem duas técnicas principais: Compilação e Interpretação. Código Fonte Código Objeto COMPILADOR Escrito numa determinada LP Realiza tradução do Código Fonte Sistema Op. entende o Código Objeto Às vezes também chamado de Programa Fonte Às vezes também chamado de Programa Objeto para o Código Objeto 2.1- Compilação O compilador transforma um programa (código fonte) escrito em uma Linguagem de Programação (LP) e gera um programa equivalente na linguagem que o Sistema Operacional possa entender (código objeto). 2.1- Compilação A compilação tem a vantagem de prover execução mais rápida de programas. Consiste nas seguintes etapas: Analisador Léxico: Reúne os caracteres do programa fonte em unidades Léxicas que são os identificadores, as palavras reservadas (especiais), os operadores e os símbolos de pontuação. O analisador Léxico ignora os comentários no programa fonte. Analisador Sintático: Pega as unidades do analisador Léxico e usa-as para construir estruturas hierárquicas chamadas de árvore de análise, as quais representam a estrutura sintática do programa. Gerador de código intermediário: Reproduz o programa em uma linguagem diferente, no nível intermediário entre o programa fonte e a saída final do compilador. Analisador Semântico: Utiliza o código intermediário e verifica erros difíceis, se não impossíveis de serem achados pelo analisador sintático, como, por exemplo, erros de tipos. 2.1- Compilação Análise Síntese 2.1.1- Link Editor O compilador cria chamadas a programas dos sistemas necessários quando o programa do usuário necessita deles. O processo de coletar programa de sistemas e vincula-los aos programas de usuário é chamado de vinculação ou carregamento. Esse processo é feito por um programa do sistema chamado de LinkEditor. 2.1.2- Linguagens Compiladas Segue uma lista de Linguagens de Programação que são tipicamente compiladas: C C++ Fortran ADA Delphi (Object Pascal) Algol Cobol Visual Basic Visual FoxPro Visual Prolog ML Elffel Common Lisp 2.2- Interpretação Pura Na interpretação pura, um programa age como uma simulação de software de uma máquina, cujos ciclos buscar/executar lida com instruções de programa em linguagem de alto nível, ao invés de instruções de máquina. Código Fonte Exibe Resultados Interpretador Escrito numa determinada LP Executa declaração a declaração Para cada declaração, o interpretador executa ações e apresenta os resultados 2.2- Interpretação Pura REPITA BUSCA UMA INSTRUÇÃO DECODIFICA EXECUTA ATÉ NÃO HOUVER MAIS INSTRUÇÕES Ciclo de instrução REPITA BUSCA UMA DECLARAÇÃO DETERMINA AS AÇÕES A SEREM EXECUTADAS EXECUTE AS AÇÕES ATÉ NÃO HOUVER MAIS DECLARAÇÕES Interpretação Pura Um interpretador é um programa que executa repetidas vezes a seguinte sequência: É muito parecido com a forma como a máquina interpreta as instruções de baixo nível no ciclo de instrução 2.2.1- Exemplos de LPs Interpretadas Segue uma lista de Linguagens de Programação que são tipicamente interpretadas: JavaScript Basic ASP ECMASCRIPT Icon 2.3- Comparação 2.3- Comparação 2.4- Sistemas de Implementação Híbridos Segue uma lista de Linguagens de Programação que parcialmente compilados e interpretados: Java Lua Perl C# EXERCÍCIOS 1 – Pesquise nos livros ou na Internet e responda porque a Arquitetura de Von Neumann ainda vigora como arquitetura dominante nos hardwares de computadores atuais? 2 – Quais as diferenças básicas entre os processos de compilação, interpretação pura e abordagem híbrida? 3 – Em quais das abordagens (compilação, interpretação pura, abordagem híbrida) a linguagem LUA se encaixa? Explique como é o processo dessa linguagem e quais as vantagens em se utilizar esse processo? 4 – A que se deve o seguinte slogan da Linguagem de Programação java? “Escreva uma vez, rode em qualquer lugar”. Explique o porque desse slogan.
Compartilhar