1. Carlos Wagner 1
Técnico em Informática
● Prof.: Carlos Wagner
– Linux Básico
– Programação 1
– Introdução a Sistemas Distribuídos e Segurança de
Redes
– Montagem e manutenção
2. Carlos Wagner 2
Linguages de Programação e
Compiladores
● Linguagens de programação são conjuntos de
padrões e comandos usados para dar ordens aos
computadores;
● Compiladores são os programas que transformam
os programas escritos em linguagens de
programação (de baixo ou alto nível) para a
linguagem de máquina, própria da plataforma do
equipamento.
3. Carlos Wagner 3
Linguages de Programação e
Compiladores
● Linguagens de baixo nível estão mais relacionadas
com a arquitetura dos equipamentos e portanto são
diferentes entre si;
● LPs de alto nível estão mais longe dos detalhes das
máquinas e são padronizadas.
4. Carlos Wagner 4
Paradigmas de programação
● Fornecem e determinam a visão que o
programador possui sobre a estruturação e
execução do programa:
– Procedural;
– Estruturada;
– Modular;
– Orientada a objetos;
– Linear.
5. Carlos Wagner 5
Paradigmas de programação
● Procedural ou programação imperativa:
baseado no conceito de chamadas a
procedimentos (rotinas, subrotinas, métodos
ou funções)
– Facilidade em reutilizar código;
– Facilita organizar o fluxo do programa;
● Ex.: Ada, Algol, Basic, C/C++, Cobol,
D, ECMAScript, Frtran...
6. Carlos Wagner 6
Paradigmas de programação
● Estruturada: preconiza, recomenda que todos
os programas possíveis podem ser reduzidos
a apenas três estruturas: sequência, decisão e
repetição.
– Ex.: C/C++, Pascal, Basic, Cobol
7. Carlos Wagner 7
Paradigmas de programação
● Orientado a objetos: baseado na composição
e interação de diversas unidades de software
chamadas objetos. Objetos são instâncias das
Classes que definem atributos e métodos que
devem ser usados e manipulados para
executarem os programas.
– Ex.: C++, Object Pascal, Smalltalk, C#,
Ada
8. Carlos Wagner 8
Compiladores
● Um compilador é um programa de sistema
que traduz um programa descrito em uma
linguagem de programação de alto nível para
um programa equivalente em código de
máquina para um determinado processador.
9. Carlos Wagner 9
Compiladores
● Uma LP consiste essencialmente de uma
sequência de strings ou símbolos com regras
oara definir quais dessas sequenências são
válidas na linguagem (sintaxe)
● A interpretação do significado de uma
sequência válida de símbolos corresponde à
semântica da linguagem.
● A sintaxe de uma LP é expressa na forma de
uma gramática.
10. Carlos Wagner 10
Linguagens interpretadas
● Nem todas as linguagens precisam ser
compiladas. Algumas podem ser interpretadas
e outras ainda devem ser executadas em
máquinas virtuais.
● As linguagens interpretadas precisam de um
programa (interpretador) que leem o código
fonte do programa e executam os comandos
contidos no arquivo.
11. Carlos Wagner 11
Linguagens interpretadas
● Nem todas as linguagens precisam ser
compiladas. Algumas podem ser interpretadas
e outras ainda devem ser executadas em
máquinas virtuais.
● As linguagens interpretadas precisam de um
programa (interpretador) que leem o código
fonte do programa e executam os comandos
contidos no arquivo.
13. Carlos Wagner 13
Linguagens que geram bytecode
● Algumas Lps podem rodar em verdadeiras
plataformas que incluem até máquinas virtuais.
Estas tecnologias normalmente passam por um
processo que gera um arquivo intermediário
chamado bytecode que é específico para a VM
daquela linguagem. Este bytecode então pode ser
interpretado e executado para aquela VM em
qualquer plataforma.
– Ex.: Java, C#, .Net, Lua, Adobe Flash...
15. Carlos Wagner 15
Compiladores de compiladores
● Ou gerador de compilador, gerador de analisador
sintático ou ainda gerador de parser – é um
algoritmo, um componente de software ou um
programa de computador que gera o código fonte de
um analisador sintático, interpretador ou compilador
de uma linguagem de programação.
● Na maioria dos casos ele é alimentado com a
descrição sintática e semântica da linguagem
independente de arquitetura, junto com uma uma
descrição do conjunto de instruções da arquitetura
independente de linguagem de programação.
16. Carlos Wagner 16
Compiladores de compiladores
● ANTLR
● Bison
● Coco/R
● DMS Software Reengineering Toolkit
● ELI
● Grako, a Python EBNF-to-PEG parser generator.
● Lemon
● parboiled, a Java library for building parsers.
● Packrat parser
● PQCC, a compiler-compiler that is more than a parser generator.
● SYNTAX, an integrated toolset for compiler construction
● VisualLangLab, a visual parser generator for JVM languages.
● Yacc
● XPL
17. Carlos Wagner 17
Técnico em Informática
● Carlos Wagner
– Fone: 8413-6949
– cwagnersc@gmail.com
– http://cwagnersc.blogspot.com
– http://www.facebook.com/CWagnersc