Compilação e Interpretação

Fazer download em docx, pdf ou txt
Fazer download em docx, pdf ou txt
Você está na página 1de 14

Compilação e Interpretação

Quando escrevemos um programa, escrevemos o Código Fonte,


que é aquilo que o programador escreve usando a linguagem de
programação, porém, esse código não é entendido pelo
computador. Para o computador entender esse código, ele deve ser
transformado em código executável, e para isso, existem dois
processos, a Compilação e a Interpretação.

• Linguagens Compiladas: C, C++


• Linguagens Interpretadas: PHP, JavaScript
• Linguagens Hibridas (Pré-compiladas +
Máquina Virtual): Java, C#
Linguagem Compilada

Quando a linguagem é Compilada, o programador escreve um programa na


linguagem (no exemplo, em C++, é um programa que calcula a média de
dois números), e esse programa é compilado para excutar sobre o sistema
operacional. Ou seja, para cada Sistema Operacional desejado (seja
Windows, Mac, Linux, etc.), deverá ter um Compilador específico para
cada Sistema Operacional.

Obs: No processo de Compilação poderá ter necessidade de adaptações,


algumas vezes, dependendo do programa, para rodar em Sistemas
Operacionais diferentes.

Vantagem: O programa roda mais rápido do que a linguagem Interpretada.

Desvantagem: Precisa compilar cada um dos códigos, gerar o executável de


cada Sistema Operacional.
Linguagem Interpretada

Quando a linguagem é Interpretada (mesmo exemplo, porém, na


linguagem PHP), para cada Sistema Operacional diferente, ele tem
um Interpretador, que é um software que é capaz de ler o Código
Fonte que o programador escreveu e converte gradualmente o
Código Fonte em executável.
Obs: Nesse caso, o mesmo Código Fonte irá executar em Sistemas
Operacionais diferentes, desde que você tenha instalado o
interpretador específico daquele sistema, sem precisar passar por
nenhum tipo de alteração no código fonte, processo de compilação
ou geração de arquivo de arquivo executável.

Vantagem: Escrever o Código Fonte somente uma vez.


Desvantagem: O processo é mais lento do que a execução de um
arquivo Compilado.
Linguagem Hibrida

Quando a linguagem é Hibrida, o programador escreve um


programa no Código Fonte da linguagem (mesmo exemplo, porém,
na linguagem C#), e o Código Fonte passa por um processo de Pré-
Compilação, gerando um código intermediário, chamado de
Bytecode, que, por sua vez, estará em uma linguagem
intermediária, chamada de Common Intermediate Language, que é
agnóstica em relação a plataforma, ou seja, o mesmo código
executa em plataformas diferentes.
Obs: O Bytecode é executado em cima da Máquina Virtual de cada
sistema, ou seja, para rodar em cada Sistema Opreacional, deverá
ter instalado, no Sistema Operacional, uma Máquina Virtual
específica do Sistema Operacional, que é o .NET CLR

Vantagens: O Bytecode já passou pelo processo de compilação,


tendo uma garantia de que ele está correto sintaticamente, além de
ser mais rápido e não precisar alterar o código em Sistemas
Operacionais diferentes.
Explicando para uma criança:
Vamos imaginar que a compilação e a interpretação são como
formas diferentes de um cozinheiro preparar uma receita de bolo.

Compilação:
Imagine que você tem uma receita escrita em japonês, mas
você só entende português. Antes de você poder fazer o
bolo, você precisa traduzir toda a receita para o português.
Isso é um pouco como a compilação. O computador pega o
código inteiro que uma pessoa escreveu, como se fosse a
receita em japonês, e traduz tudo de uma vez para uma
linguagem que ele entende antes de começar a "cozinhar" ou
executar o programa.
Vantagens:
 Rápido para servir: Depois que está tudo traduzido, o
bolo pode ser feito rapidamente todas as vezes.
 Seguro: Ninguém pode ver a receita original enquanto
você está cozinhando.
Desvantagens:
 Demora para começar: Você precisa esperar a
tradução inteira antes de poder começar a fazer o bolo.
 Menos flexível: Se você quer mudar a receita, tem que
traduzir tudo de novo.
Interpretação
Agora, imagine que, ao invés de traduzir a
receita toda de uma vez, um amigo traduz
cada passo para você enquanto você cozinha.
Isso é como a interpretação. O computador lê
e executa o código linha por linha, traduzindo
cada pequena parte enquanto vai "cozinhando"
o programa.
Vantagens:
 Começa rápido: Você pode começar a
cozinhar o bolo imediatamente, sem
esperar pela tradução completa.
 Flexível: É fácil mudar a receita no meio
do caminho se você quiser.
Desvantagens:
 Mais lento para servir: Cada passo
precisa ser traduzido na hora, então pode
demorar mais para terminar o bolo.
 Menos seguro: Outras pessoas podem ver
a receita original enquanto você cozinha.
Hibrida
Finalmente, imagine que você tem um sistema
onde seu amigo já traduziu alguns passos
importantes da receita antecipadamente e
outros ele traduz na hora enquanto você
cozinha. Isso é como uma linguagem híbrida,
onde partes do código são pré-traduzidas
(compiladas) e outras são traduzidas na hora
que são necessárias (interpretadas).
Vantagens:
 Balanço de velocidade: Combina a
rapidez de ter partes já traduzidas com a
flexibilidade de traduzir outras na hora.
 Flexibilidade com eficiência: Permite
mudanças durante a execução sem perder
tanto tempo.
Desvantagens:
 Complexidade: Pode ser mais complicado
preparar tudo, já que algumas partes são
tratadas de uma forma e outras de outra.
Estrutura de uma aplicação C# .NET

Uma aplicação construída em uma linguagem


orientada a objetos, como é o caso do C#, ela é
composta por Classes, que vão representar a
aplicação.

As Classes podem ser agrupadas em Namespace,


que é um agrupamento lógico de classes
relacionadas.
Numa aplicação podemos ter as Classes que vão
representar as Entidades de um negócio, como Produto,
Cliente, Pedido, ou seja, Entidades que representam o
negócio e os dados que o sistema deve armazenar.

Ou seja, essas Classes que representam as Entidades, elas


podem ser organizadas ou agrupadas em um Namespace
que se chama Entities, ou Entidades.

Da mesma forma, podemos ter Classes que representam


Serviços do sistema ou outras coisas como Repositories,
que são Classes que acessam os dados.
Além do Namespace, temos o conceito de Assembly,
sendo esse um Build, que vai corresponder a um DLL ou
Executável. O Assembly é um agrupamento FÍSICO de
Classes relacionadas.

Exemplo: Um sistema enorme que é dividido em sub-


projetos ou sub-sistemas.

O módulo Financeiro, que contém tudo do sistema que é


relacionado a Financeiro, podemos agrupar num
Assembly Financeiro, da mesma forma que podemos
agrupar outro módulo que mexe com gráficos, podemos
criar um sub-projeto Gráficos, e dentro desse Namespace
eu posso colocar outros Namespaces e outras Classes
Temos, também, o conceito de Aplicação
ou Solução. A Aplicação é um
agrupamento de Assemblies relacionados,
podendo ser composto por vários
Assemblies.

OBS: No Visual Studio temos o conceito


de Solution (Aplicação) e Project
(Assembly).
Explicando para uma criança:
Vamos imaginar que estamos falando sobre uma grande caixa de
ferramentas e um conjunto de instruções para construir coisas
legais como brinquedos ou jogos de computador!
C#
C# (se pronuncia "Cê-Sharp") é como um manual de instruções.
Ele ensina você a escrever as instruções para fazer seu brinquedo
funcionar. Se você quiser construir um robô que fala ou um jogo de
computador, você usa C# para escrever as regras e o que ele deve
fazer.
.NET
.NET (lê-se "Dot Net") é como uma caixa de ferramentas gigante.
Dentro dela, você tem todas as ferramentas e peças que você
precisa para construir seus brinquedos. Você pode pegar essas
peças e ferramentas para ajudar a tornar real o que você escreveu
usando o C#.
.NET Framework

Imagine que esta é a primeira caixa de ferramentas que foi feita.


Ela tem muitas ferramentas legais, mas você só pode usá-la na sua
casa (ou seja, apenas em computadores que rodam Windows).
.NET Core

Esta é uma nova caixa de ferramentas que foi feita para ser usada
em qualquer lugar. Você pode levá-la para a casa de seus amigos e
usá-la em diferentes tipos de computadores, não apenas os
Windows, mas também em Macs e computadores Linux.
.NET Standard

Esta é como um conjunto especial de regras que dizem o que todas


as caixas de ferramentas .NET devem ter. Então, se você aprender
a usar essas regras, você pode construir brinquedos que podem ser
montados usando qualquer uma das caixas de ferramentas .NET.
Mono

Mono é como uma versão da caixa de ferramentas que foi feita


para ser usada especialmente em lugares onde a .NET Framework
original não podia ir, como computadores Linux ou Mac muito
antes do .NET Core existir. É como um kit de ferramentas de
viagem!
Xamarin

Xamarin é uma parte super legal da caixa de ferramentas que


permite que você crie brinquedos (ou aplicativos) que funcionam
em telefones celulares. Se você quer fazer um jogo que funcione
tanto em iPhones quanto em telefones Android, você usaria
Xamarin.
Então, resumindo, C# é o que você usa para escrever as instruções,
e .NET é a caixa de ferramentas que ajuda você a transformar essas
instruções em brinquedos e jogos reais que você pode usar e se
divertir!

Você também pode gostar