Mostrando postagens com marcador linguagem de programação. Mostrar todas as postagens
Mostrando postagens com marcador linguagem de programação. Mostrar todas as postagens

sábado, 9 de agosto de 2008

Estudo de Caso

O presente estudo de caso abordará a utilização de um dos tipos de tradutores – compilador – pela tecnologia Framework.Net e um exemplo de aplicação prática desse modelo através da ferramenta Asp.Net.
O Framework.Net é uma tecnologia utilizada para se construir e executar aplicações .Net (ponto Net) e possui a seguinte estrutura:

Figura1: Estrutura do Framework.Net (esta figura encontra-se na apresentação)

A partir da figura, pode-se observar que esta tecnologia faz uso de duas camadas de compiladores para implementar o mecanismo de tradução, o que revela a existência de um duplo processo de geração de código: o primeiro, composto pela camada de compiladores específicos (Compiler) de cada linguagem de programação, visto que, cada compilador só consegue traduzir um conjunto específico de regras de sintaxe, é responsável por receber o código fonte escrito em uma dada linguagem de programação e convertê-lo para um código intermediário que, no caso em questão, será padronizado; o segundo, composto por um compilador chamado JIT (Just in Time Compiler), tem por finalidade traduzir o código intermediário vindo da camada de compiladores específicos em código objeto, representado pela camada Native Code, que estará pronto para ser executado pelo sistema operacional (Operating System Services).
Um bom exemplo de utilização desse modelo é encontrado no Asp.Net. Asp.Net é um ambiente de desenvolvimento para aplicações .Net. Este ambiente possui uma característica muito importante, o suporte a diversas linguagens de programação, ou seja, um programador poderá escolher a linguagem de programação em que o mesmo usará para codificar um site. Isso é possível devido à utilização do Framework.Net por parte do Asp.Net, pois a capacidade de suportar diversas linguagens e conseguir executar um site após ser construído está relacionada ao duplo processo de geração de código existente no Framework.Net, que já foi exposto anteriormente.

domingo, 1 de junho de 2008

Diferenças de nomenclatura

Um tradutor efetua a conversão entre duas linguagens, sendo o primeiro texto chamado de 'código fonte' e o transformado em 'código objeto' . O tradutor pode converter por exemplo a linguagem do algoritmo 'pascal' em linguagem binária, java, fortran entre outros. Veja a figura abaixo:

De maneira geral, os tradutores efetuam portanto a conversão de textos redigidos em uma linguagem para formas equivalentes redigidas em outra linguagem. Se a primeira linguagem for uma linguagem de alto nível, o tradutor receberá o nome de compilador. Veja a figura:

Do ponto de vista da linguagem-objeto, esta também pode ser ou não uma linguagem de alto nível. É possível, por exemplo, que o texto-fonte esteja redigido em 'FORTRAN', e que um tradutor aceite tal texto e o converta para alguma linguagem de baixo nível (linguagem de montagem, ou linguagem de máquina) ou então para alguma outra linguagem de alto nível, tal como 'PASCAL' ou 'BASIC'. Um tradutor que efetue conversões entre duas linguagens de alto nível é denominado 'filtro', se a linguagem objeto for muito semelhante à linguagem fonte. Veja a figura a seguir:


Muitas vezes, programas que efetuam traduções entre dois dialetos de mesma linguagem, ou que permitem converter para uma forma padronizada um texto que inclua extensões de uma linguagem disponível, são denominados 'pré-processadores'. Basicamente, a função dos pr-e-processadores, neste caso, consiste na eliminação de construções de nível mais alto que o da linguagem-base, e na correspondente inserção de textos equivalentes, compostos exclusivamente de construções da linguagem-base. Veja a figura abaixo:



Outro exemplo de aplicação de pré-processadores é no processamento da definição e utilização de macros em linguagem de alto nível. Em muitos casos, os compiladores destas linguagens não oferecem ao usuário tais recursos, sendo as macros manipuladas externamente, por um pré-processador encarregado de manipular e eliminar tais construções do texto-fonte, para que possa ser traduzido pelo compilador.

quinta-feira, 24 de abril de 2008

Conceitos básicos para o entendimento de compiladores e interpretadores.

Para que haja um melhor entendimento sobre compiladores e interpretadores é necessário primeiro que tenhamos o conhecimento de alguns conceitos básicos. São eles:

- Linguagem de programação: É um conjunto finito de símbolos com os quais se escrevem programas de computador. Há várias classificações dadas as linguagens de programação, porém citaremos três tipos delas, pois são as mais utilizadas:


1. Linguagem de alto nível: É a linguagem que mais se aproxima do ser humano. Exemplos: Pascal, C , COBOL, SQL.


2. Linguagem de nível intermédiário: Fica em um nível intérmediário entre a linguagem de alto nível e a linguagem de baixo nível. Exemplo: Assembly do Pentium.


3. Linguagem de baixo nível: É o código que o computador executa diretamente, é conhecida como linguagem binária (composta por 0’s e 1’s).

- Código fonte:
É um conjunto de palavras escritas de forma ordenada composto pelas instruções de uma das linguagens de programação. Como exemplo, temos abaixo um código fonte de um programa em linguagem de programação C.

Normalmente, o código fonte é escrito em uma linguagem de programação de alto nível, com grande capacidade de abstração, e o código objeto é escrito em uma linguagem de baixo nível, como uma sequência de instruções a ser executada pelo processador, porém tais informações só são processadas quando o código fonte è compilado em código objeto. Daí a necessidade de um tradutor , responsável por traduzir um tipo de linguagem, código, para outro. Existem dois tipos, mais comuns, de tradutores: os compiladores e os interpretadores, os quais explicaremos de forma detalhada mais adiante.