OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Documentos relacionados
PROGRAMAÇÃO I. Introdução

Programação de Computadores

Introdução à Computação

Programação de Computadores

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Aula 2 - Programação de Computadores - CI208 1/21

Programação de Computadores

Linguagens de Programação Classificação

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Introdução à Computação: Máquinas Multiníveis

Sistemas Operacionais

Algoritmos. Prof. Jonatas Bastos Site:

Introdução à Computação

Introdução à Computação

Algoritmos e Programação

Métodos de implementação de linguagens. Kellen Pinagé

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação

Linguagens de Programação

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Algoritmos e Programação

Algoritmos e Programação

Sistema Computacional

Introdução. (Aula 2) Organização Estruturada de Computadores

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

Memória. Arquitetura de Von Neumann. Universidade do Vale do Rio dos Sinos Laboratório I Prof.ª Vera Alves 1 CPU. Unidade de controle ULA

Conceitos básicos sobre computadores (continuação)

Introdução ao Python. Programa Computacional

Olá pessoal, Hoje vamos entender os conceitos sobre linguagem de programação. Definição, tipos de linguagens e as linguagens mais utilizadas

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Desenvolvimento de Aplicações Desktop

Introdução à Programação de Computadores Fabricação Mecânica

Introdução a Ciência da Computação

Conceitos Básicos. Fundamentos de Programação de Computadores

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Introdução à Computação Parte 2

Programação Básica. Introdução à programação de computadores

Conceitos de Linguagens de Programação

Compiladores. Geração de Código Objeto

3. Linguagem de Programação C

Programação Estruturada Aula - Introdução a Linguagem de Programação

Compiladores. Introdução à Compiladores

16. Compilação no Linux

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Linguagens de Programação

Aula teórica 7. Preparado por eng.tatiana Kovalenko

Estrutura e funcionamento básico de um computador

Programação de Computadores:

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

a) Computador b) Estrutura do sistema i. Hardware ii.software c) Linguagens de Programação i. Paradigmas e Programação 1.

1.1 Linguagens de Programação

Arquitetura e Organização de computadores

Fundamentos de Programação 1

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

1 Introdução à Programação O que é? Para que serve?... 1

Procedimentos. Sistemas de Computação

INTRODUÇÃO À PROGRAMAÇÃO. Introdução. Sérgio Carlos Portari Júnior

Infraestrutura de Hardware. Funcionamento de um Computador

Patrícia de Siqueira Ramos. UNIFAL-MG, campus Varginha. 21 de Março de 2018

Arquitetura e Organização de computadores

Projeto de Compiladores

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

ORGANIZAÇÃO DE COMPUTADORES

Informática I. Aula Aula 18-29/10/2007 1

MC-102 Aula 01. Instituto de Computação Unicamp

Informática I. Aula 9. Aula 9-17/05/2006 1

Máquinas. Visão geral O que você precisa Fatores de sucesso O futuro. realizar algo, precisa que alguém m lhe indique o que fazer V.V.

Montador (assembler)

Compiladores. Introdução

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

Introdução a Programação

Informática I. Aula 14. Aula 14-10/10/2007 1

AJProença, Sistemas de Computação, UMinho, 2017/18 1

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.

Introdução à Computação

Linguagem de Montagem do NeanderX

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Programação I A Linguagem C. Prof. Carlos Alberto

Aula 3 Máquina Multinível

Noções de compilação

Computação Eletrônica

Noções de compilação

CP Introdução à Informática Prof. Msc. Carlos de Salles

Laboratório de Programação 1 Algoritmos e a Lógica de Programação

FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Apresentação. Informação geral + Conceitos iniciais

EA876 - Introdução a Software de Sistema

Programação Básica. Introdução à programação de computadores

Linguagem de Programação

Introdução ao Fortran 90

Transcrição:

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO Prof. Msc. Carlos José Giudice dos Santos carlos@oficinadapesquisa.com.br www.oficinadapesquisa.com.br

Compiladores e Interpretadores

Compiladores e Interpretadores [01] Nós já sabemos que computadores só entendem linguagem binária. Desse modo, quando programamos um computador em alguma linguagem de programação, esta linguagem deve ser traduzida para uma linguagem binária. Em relação a esse processo de tradução para uma linguagem binária, existem dois tipos de linguagens: Linguagens compiladas Linguagens interpretadas Os dois tipos de linguagem tem características próprias, vantagens e desvantagens.

Compiladores e Interpretadores [02] Uma boa analogia para se entender o que é uma linguagem compilada é o processo de dublagem de filmes. Todos os filmes geralmente são produzidos no idioma nativo de um país. Por exemplo, os filmes e desenhos de Hollywood são produzidos em inglês, que é o idioma nativo dos EUA. Quando esse filme vai ser comercializado em um país com idioma diferente, todas as falas do filme são traduzidas, do início ao fim, em um processo chamado de dublagem. Repare que nesse processo a tradução é realizada toda de uma só vez, ou seja, todo o filme é dublado, trocando o áudio original produzido em outro idioma (que não entendemos) para um outro áudio em nosso idioma (que somos capazes de compreender).

Compiladores e Interpretadores [03] O processo de interpretação de linguagens de programação é diferente. Para podermos entender, uma boa analogia é a do intérprete. Imagine que você está em um país (por exemplo, a China) e não fala e nem consegue entender nada do que as pessoas dizem. Se você precisar pedir algo para uma pessoa, ela não vai te entender porque ela não fala a sua língua. Nesse caso, você vai precisar de um intérprete. Assim, cada frase que você falar para o intérprete será traduzida para o idioma do país que você está, e desse modo, você se fará entender por meio do intérprete, que traduz, em tempo real, frase após frase. Agora que aprendemos a diferença básica, vamos conhecer um pouco mais as características de cada uma.

Linguagens Compiladas [01] As linguagens compiladas passam por quatro etapas desde o programa escrito em uma linguagem de alto nível até a etapa em que o programa, em código de máquina, é executado pelo computador: Fase 1 Compilação: Nesta fase temos um programa escrito em uma linguagem de alto nível, que é chamado de programa fonte. Este programa fonte passa por um processo chamado de compilação, em que um programa chamado de compilador (compiler) traduz o programa fonte para um programa escrito em linguagem Assembly. O resultado final será um arquivo (não executável), geralmente com a extensão.asm (de Assembly).

Linguagens Compiladas [02] Fase 2 Montagem: Nesta fase temos um programa escrito em uma linguagem de baixo nível (Assembly) que, a partir de um programa chamado de montador (assembler), transforma o programa escrito em Assembly em um ou mais arquivos em linguagem de máquina. Geralmente é gerado um arquivo com o mesmo nome do arquivo em Assembly (chamado de módulo), mas com a extensão.obj, que contém cada instrução da linguagem em Assembly convertido para uma versão binária da instrução. Podem ser gerados também outros arquivos com a extensão.obj, que são rotinas em linguagem de máquina. Arquivos com a extensão.obj são associados geralmente ao Relocatable Object Code. Os outros arquivos gerados possuem informações que são necessárias para colocar as instruções corretamente na memória.

Linguagens Compiladas [03] Fase 3 Link-edição: Nesta fase temos um programa escrito em uma linguagem de baixo nível com a extensão.obj que juntará todas as rotinas em linguagem de máquina para serem armazenadas de forma simbólica na memória. O programa que faz isso chama-se linkeditor. O objetivo do link-editor é resolver as referências de memória, ou seja, determinar os rótulos de dados e de instruções. O link-editor também transforma o arquivo com extensão.obj em um arquivo executável (geralmente com a extensão.exe). Arquivos com extensão.exe são realocáveis na memória, ou seja, podem ser carregados em qualquer parte da memória. Arquivos executáveis com a extensão.com são absolutos, ou seja, só podem ser carregados sempre em uma localização específica de memória.

Linguagens Compiladas [04] Fase 4 Carregamento: Nesta fase já temos um programa executável, ou seja, basta que ele seja carregado para a memória para que seja executado. O programa responsável em carregar este arquivo para a memória a fim de ser executado faz parte do sistema operacional e é conhecido como carregador ou loader. Geralmente o carregador lê o cabeçalho do arquivo executável para determinar o tamanho dos segmentos de texto e de dados. Após essa leitura, o carregador aloca um espaço na memória grande o suficiente para o texto e os dados. Feito isso, carrega o programa (instruções e dados) na memória, inicializa os registradores do processador e começa a executar o programa.

Linguagens Compiladas [05] A principal vantagem das linguagens compiladas é a rapidez de execução, uma vez que o programa executável já está totalmente traduzido para linguagem de máquina. A principal desvantagem das linguagens compiladas acontece no processo de desenvolvimento do programa, pois é um processo que requer muitas modificações, e a cada modificação que é feita no código fonte do programa é necessário fazer todas as etapas de novo (compilação, montagem, link-edição e carregamento) para poder testar a modificação realizada no programa fonte. Exemplos de linguagens compiladas: C, C++, Pascal, Fortran, Delphi, Visual Basic, Objective C.

Linguagens Interpretadas [01] As linguagens interpretadas passam por apenas um programa entre o programa fonte e a sua execução. Este programa é chamado de interpretador, que funciona da seguinte maneira: Lê cada instrução do programa fonte; Verifica se a sintaxe está certa (se a instrução está escrita corretamente). Converte para linguagem de máquina e ordena a execução. Isto significa que o programa não fica armazenado na memória, ou seja, cada instrução é carregada na memória, e após sua execução, ela é perdida, liberando memória para a próxima instrução ser carregada e executada.

Linguagens Interpretadas [02] A principal vantagem das linguagens interpretadas é a economia de memória, já que apenas uma linha de instrução fica armazenada na memória de cada vez. O que ocorre é que a evolução do hardware permitiu um grande aumento da memória RAM, permitindo que os compiladores fossem usados sem problemas em microcomputadores. A principal desvantagem das linguagens interpretadas é a lentidão na execução, uma vez que um programa tem que ser traduzido sempre, linha a linha, mesmo que já tenha sido executado uma vez e não tenha modificações. Esta desvantagem também deixou de ser um problema graças à evolução do hardware, que produz processadores cada vez mais rápidos. Exemplos de linguagens interpretadas: C#, Java, Lisp, Logo, PHP, Python, Ruby, entre outras.

BIBLIOGRAFIA CONSULTADA FORBELLONE, André Luiz Villar. Lógica de programação: a construção de algoritmos e estruturas de dados. 3.ed. São Paulo: Pearson Prentice Hall, 2005. SEBESTA, Robert. W. Conceitos de linguagens de programação. 9. ed. Porto Alegre: Bookman, 2011. TANEMBAUM, Andrew S. Organização estruturada de computadores. 5. ed. São Paulo: Pearson Prentice Hall, 2011.