SamuelUFU (discussão | contribs)
 
(35 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Esta pesquisa deve fornecer um conteúdo atualizado sobre o tema acima. Não esqueça de incluir as 
== Conceito ==
referëncias (fontes) no último item, reforçando que não deve ser um Copy/Paste e sim uma síntese
*O '''software interpretador''' é um programa de computador que executa instruções escritas em uma linguagem de programação. Por exemplo, as linguagens Basic, Prolog, Python e Java, são frequentemente interpretadas. Um interpretador geralmente usa uma das seguintes estratégias para a execução do programa:
das pesquisas que fizer.
**Executar o código fonte diretamente ou
<br>
**Traduzir o código fonte em alguma representação intermediária e depois executar este código.
*Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma linguagem simplificada, chamada de '''código intermediário''', que pode ser diretamente “executado” por um programa chamado interpretador. Podemos imaginar o código intermediário como uma linguagem de máquina de um "computador abstrato" projetado para executar o código fonte.
*Interpretadores são, em geral, menores que compiladores e facilitam a implementação de construções complexas em linguagens de programação. Entretanto, o tempo de execução de um programa interpretado é geralmente maior que o tempo de execução deste mesmo programa compilado, pois o interpretador deve analisar cada declaração no programa a cada vez que é executado e depois executar a ação desejada, enquanto que o código compilado apenas executa a ação dentro de um contexto fixo, anteriormente determinado pela compilação. Este tempo no processo de análise é conhecido como '''overhead interpretativa'''.


= Conceito =
== Princípio de funcionamento ==
<br>
*O código é traduzido linha a linha, ao contrário dos [[Compiladores]], que traduz totalmente o código, gerando um executável.
*O interpretador passa o tempo todo lendo e executando código.


= Princípio de funcionamento =
== Análise Léxica ==
<br>
* '''Definição'''
**Análise léxica é o processo realizado sobre um texto, digamos um programa de computador ou então uma linguagem de marcação como HTML, que divide este em '''lexemes''' e os converte para uma sequência de '''tokens''', os quais são usados para alimentar um '''parser'''. Um programa que realiza análise léxica é geralmente chamado de '''lexer''', '''scanner''' ou '''tokenizer'''.
* '''Tokens/Lexemes'''
**''Lexemes'' são unidades sintáticas relevantes do contexto do lexer, por exemplo para um lexer voltado a uma certa linguagem de programação alguns lexemes poderiam ser: 1, "olá", for, ==, variableName, function.
Um ''token'' é uma estrutura que categoriza um lexeme, ele contêm um nome abstrato que representa o grupo do lexeme e um possível valor deste caso o grupo não seja único.


= Análise Léxica =
== Análise Sintática ==
<br>
*Durante a análise sintática, o programa-fonte é armazenado numa estrutura denominada ''árvore do programa''
*Depois, essa estrutura é percorrida, para que os comandos do programa sejam executados
*Exemplo: operações matemáticas
    1 + 2 * 3
https://upload.wikimedia.org/wikipedia/commons/d/db/Parsing-example.png


= Análise Sintática =
== Bytecode ==
<br>
*Em ciência da computação, '''bytecode''' é o resultado de um processo semelhante ao dos compiladores de código-fonte que não é imediatamente executável. Em oposição, o bytecode irá ser interpretado numa máquina virtual, que fará a execução. Assim, o bytecode é um estágio intermediário entre o código-fonte (escrito numa linguagem de programação específica) e a aplicação final, sendo a sua vantagem principal a dualidade entre a portabilidade — o bytecode irá produzir o mesmo resultado em qualquer arquitetura — e a ausência da necessidade do pré-processamento típico dos compiladores — o bytecode é encarado como um produto final, cuja validação da sintaxe e tipos de dados (entre outras funções dos compiladores) não será necessária.


= Bytecode =
== Exemplos de interpretadores ==
<br>
*Browsers
*Excel, Basic, Access...
*AutoLisp
*Prolog
*Matlab


= Exemplos de interpretadores =
== Referências Bibliográficas ==
<br>
http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s04.html ''(25/05/2017 - 16:20)''<br/>
 
https://pt.stackoverflow.com/questions/113578/o-que-%C3%A9-analise-l%C3%A9xica ''(04/06/2017 - 17:57)''<br/>
• Navegadores;
http://www.comp.ita.br/~mokarzel/arquivos/CES41%20Cap%201-b.ppt ''(04/06/2017 - 18:20)''<br/>
 
https://pt.wikipedia.org/wiki/Bytecode ''(04/06/2017 - 18:33)''<br/>
• Excel, Word, Basic, Access, ... ;
http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm ''(04/06/2017 - 18:46)''
 
• SmallTalk;
 
• AutoLisp;
 
• Prolog (algumas versões);
 
• Matlab;
 
• Lisp.
 
• Internet
 
• Ruby
 
• Jruby
 
• Ironruby
 
• Macruby
 
 
 
 
[[Arquivo: ruby-3-728.jpg]]
 
= Referências Bibliográficas =
<br>
 
 
Disponível em :< http://www.din.uem.br/~yandre/ICC/introducao-grande.pdf>. Acesso em 13 de abril de 2016.
 
Disponível em : <https://www.researchgate.net/profile/Joao_Ferreira25/publication/267947976_PROGRAMAS_PARA_A_INTERNET_VISANDO_A_DETERMINAO_DO_TAMANHO_DE_LOTE_TIMO_E_O_BALANCEAMENTO_DE_LINHA/links/54bdcfa20cf27c8f2814ce36.pdf>. Acesso em 13 de abril de 2016
 
Disponível em: <http://paginapessoal.utfpr.edu.br/danielc/Ensino/Graduacao/2015.1/ET42G/et42g-2015.1/Aula2.pdf>. Acesso em 13 de abril de 2016.
 
Disponível em: <https://books.google.com.br/books?hl=pt-BR&lr=&id=nv4ZbkhP-nsC&oi=fnd&pg=PR7&dq=compilador+interpretador&ots=Z3dGxM9_Mc&sig=gK2yoJdcRWUppATNa07Q_VdnjZ8>. Acesso em
 
Disponível em: <http://tutoria.ualg.pt/2013/pluginfile.php/72095/mod_resource/content/3/comp_1314_01.pdf>. Acesso em 14 de abril de 2016.Disponível em:
 
Disponível em: <http://unipe.tanure.net/arquivos/20091/comp2/aula1.pdf>. Acesso em 14 de abril de 2016.
 
Disponível em: <http://professores.dcc.ufla.br/~terra/public_files/2011_apostila_logica.pdf>, Acesso em 14 de abril de 2016.
 
Disponível em: <https://www.oficinadanet.com.br/artigo/1527/diferencas_entre_compiladores_e_interpretadores>. Acesso em 14 de abril de 2016.
'''

Edição atual tal como às 21h48min de 4 de junho de 2017

Conceito

  • O software interpretador é um programa de computador que executa instruções escritas em uma linguagem de programação. Por exemplo, as linguagens Basic, Prolog, Python e Java, são frequentemente interpretadas. Um interpretador geralmente usa uma das seguintes estratégias para a execução do programa:
    • Executar o código fonte diretamente ou
    • Traduzir o código fonte em alguma representação intermediária e depois executar este código.
  • Para isso, certos tipos de tradutores transformam uma linguagem fonte em uma linguagem simplificada, chamada de código intermediário, que pode ser diretamente “executado” por um programa chamado interpretador. Podemos imaginar o código intermediário como uma linguagem de máquina de um "computador abstrato" projetado para executar o código fonte.
  • Interpretadores são, em geral, menores que compiladores e facilitam a implementação de construções complexas em linguagens de programação. Entretanto, o tempo de execução de um programa interpretado é geralmente maior que o tempo de execução deste mesmo programa compilado, pois o interpretador deve analisar cada declaração no programa a cada vez que é executado e depois executar a ação desejada, enquanto que o código compilado apenas executa a ação dentro de um contexto fixo, anteriormente determinado pela compilação. Este tempo no processo de análise é conhecido como overhead interpretativa.

Princípio de funcionamento

  • O código é traduzido linha a linha, ao contrário dos Compiladores, que traduz totalmente o código, gerando um executável.
  • O interpretador passa o tempo todo lendo e executando código.

Análise Léxica

  • Definição
    • Análise léxica é o processo realizado sobre um texto, digamos um programa de computador ou então uma linguagem de marcação como HTML, que divide este em lexemes e os converte para uma sequência de tokens, os quais são usados para alimentar um parser. Um programa que realiza análise léxica é geralmente chamado de lexer, scanner ou tokenizer.
  • Tokens/Lexemes
    • Lexemes são unidades sintáticas relevantes do contexto do lexer, por exemplo para um lexer voltado a uma certa linguagem de programação alguns lexemes poderiam ser: 1, "olá", for, ==, variableName, function.

Um token é uma estrutura que categoriza um lexeme, ele contêm um nome abstrato que representa o grupo do lexeme e um possível valor deste caso o grupo não seja único.

Análise Sintática

  • Durante a análise sintática, o programa-fonte é armazenado numa estrutura denominada árvore do programa
  • Depois, essa estrutura é percorrida, para que os comandos do programa sejam executados
  • Exemplo: operações matemáticas
   1 + 2 * 3

Parsing-example.png

Bytecode

  • Em ciência da computação, bytecode é o resultado de um processo semelhante ao dos compiladores de código-fonte que não é imediatamente executável. Em oposição, o bytecode irá ser interpretado numa máquina virtual, que fará a execução. Assim, o bytecode é um estágio intermediário entre o código-fonte (escrito numa linguagem de programação específica) e a aplicação final, sendo a sua vantagem principal a dualidade entre a portabilidade — o bytecode irá produzir o mesmo resultado em qualquer arquitetura — e a ausência da necessidade do pré-processamento típico dos compiladores — o bytecode é encarado como um produto final, cuja validação da sintaxe e tipos de dados (entre outras funções dos compiladores) não será necessária.

Exemplos de interpretadores

  • Browsers
  • Excel, Basic, Access...
  • AutoLisp
  • Prolog
  • Matlab

Referências Bibliográficas

http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch05s04.html (25/05/2017 - 16:20)
https://pt.stackoverflow.com/questions/113578/o-que-%C3%A9-analise-l%C3%A9xica (04/06/2017 - 17:57)
http://www.comp.ita.br/~mokarzel/arquivos/CES41%20Cap%201-b.ppt (04/06/2017 - 18:20)
https://pt.wikipedia.org/wiki/Bytecode (04/06/2017 - 18:33)
http://www.inf.ufsc.br/~barreto/cca/arquitet/arq4.htm (04/06/2017 - 18:46)