linguagens de programação classificação · • linguagem assembly - de montagem (segunda...
TRANSCRIPT
Linguagens de Programação Classificação
Linguagens de Programação Classificação
• A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível):
• Linguagem de máquina (primeira geração)
• Linguagem assembly - de montagem (segunda geração)
• Linguagem de alto nível (terceira geração)
• Linguagem de muito alto nível (quarta geração)
Linguagens de Programação Linguagem de Máquina-1ª Geração
• Linguagem de máquina é o código que o computador executa diretamente,
• É composta de 0´s e 1´s, e neste caso é conhecida como linguagem binária,
• A linguagem de máquina é escrita de acordo com as características de um determinado processador,
• Por isto é totalmente dependente do hardware, e do fabricante do processador;
Linguagens de Programação Linguagem de Máquina/Representação
• Instruções de linguagem de máquina são representadas por códigos na forma de palavras binárias. Por exemplo:
•0100010100011101010101000010010
101...
Exemplo de programa em hexadecimal
LINGUAGEM DE MÁQUINA – HEXADECIMAL
Linguagens de Programação Linguagem de
Máquina/Representação
Execução direta pela máquina, sem
tradução
Linguagens de Programação Linguagem de
Máquina/Hexadecimal
• Linguagem Hexadecimal: sequência de bits pode ser representada por números hexadecimais
•Notação em hexadecimal
• 1011000000000001b = B001h
Programação impraticável para escrita e leitura (mesmo com hexadecimal)... O
que fazer??
Linguagens de Programação Linguagem Assembly - 2ª Geração
• A linguagem assembly (linguagem de montagem) permite que o programador utilize nomes (chamados mnemônicos) e símbolos em lugar dos números,
• Utiliza palavras abreviadas (mnemônicos) indicando operações
•MOV R1, R2
• mnemônico MOV (abreviação de MOVE)
• dois registradores como parâmetros: R1 e R2
• processador comanda o movimento do conteúdo de R2 para R1
• equivalente à instrução Java R1 = R2;
Linguagens de Programação Linguagem Assembly (de Montagem)
ADD R1, R2
• mnemônico ADD (abreviação de ADDITION)
• dois registradores como parâmetros: R1 e R2
• processador comanda a adição do conteúdo de R1 ao conteúdo de R2 e o resultado é armazenado em R1
• equivalente à instrução em Java R1=R1+R2;
•Simplificações da linguagem assembly:
• escolhe nomes descritivos para as posições de memória,
• usa mnemônicos para representar códigos de operação;
Linguagens de Programação Linguagem Assembly (de Montagem)
• A conversão da linguagem assembly para a linguagem de máquina se chama montagem
• E é feita por um programa chamado montador (ou assembler)
Linguagem de Montagem (Assembly)
Linguagem de Máquina
Programa Montador (Assembler)
Linguagens de Programação Linguagem Assembly (de Montagem)
• A linguagem assembly é também única para cada tipo de CPU (processador),
• Utiliza instruções de baixo nível que operam com registros e memórias diretamente,
• Não pode ser reutilizada em famílias de processadores diferentes,
• Famílias geralmente mantém um certo nível de interoperabilidade
•Família x86 processador Pentium suporta o assembly do 80486, que suporta o do 80386...;
Linguagens de Programação Linguagem Assembly (de Montagem)
• Aplicações para a linguagem assembly:
• Controle de processos com resposta em tempo real
• devido à possibilidade de gerar programas mais eficientes
• Comunicação/transferência de dados:
• devido à possibilidade de acessar diretamente o hardware
• Otimização de sub-tarefas da programação de alto nível
• um programa não precisa somente ser escrito em linguagem assembly ou linguagem de alto nível
Linguagens de Programação Linguagens de Alto Nível-(3ª Geração)
• Linguagens de alto nível apresentam uma sintaxe mais próxima da linguagem natural ,
• Usam palavras reservadas extraídas do vocabulário corrente (int, public, if, ...)
class HelloWorld
{
public static void main (String[] args) {
System.out.println (“HelloWorld”);
}
}
Linguagens de Programação Linguagens de Alto Nível
• Permitem a manipulação dos dados nas mais diversas formas:
• números inteiros,
•reais,
•matrizes, etc...
• A linguagem assembly trabalha com bits e bytes, armazenados em memória;
Linguagens de Programação Linguagens de Alto Nível
• Algumas linguagens de programação, e o ano em que foram desenvolvidas:
Visão geral do histórico das linguagens
Linguagens de Programação Linguagens de Alto Nível
• Os programas escritos nessas linguagens são convertidos para a linguagem de máquina através de um programa compilador, ou de um interpretador
Linguagem de Alto Nível
Linguagem de Máquina
Compilador ou interpretador
Linguagens de Programação Linguagens de Muito Alto Nível-(4ª Geração)
• As linguagens de quarta geração têm uma estrutura mais próxima da linguagem humana do que as linguagens de programação de alto nível
• Definem “o que” deve ser feito, e não “como” deve ser feito
• Como exemplo de linguagens de quarta geração tem-se:
• linguagens de consulta a banco de dados,
• linguagens de prototipação (ferramentas case);
Linguagens de Programação Linguagens de Muito Alto Nível
As linguagens de consulta foram desenvolvidas para manipular bases de dados. Exemplo: linguagem SQL
Linguagens de Consulta
Apresenta os dados dos campos nome e telefone da tabela Funcionario:
select nome, telefone FROM Funcionario;
Linguagens de Programação Processamento de Linguagens
Computadores atuais são capazes de executar somente programas em uma linguagem de nível baixo, a linguagem de máquina
Linguagem de
Alto Nível
(Código Fonte)
Análise sintática
e semântica
Linguagem de
Máquina
(Código
Executável)
Execução
class HelloWorld
{
public static void main (String[]args)
{
System.out.println(“HelloWorld”);
}
}
Linguagens de Programação Processamento de Linguagens
Como fazer esta tradução? Do código fonte para o código executável?
Linguagem de
Alto Nível
(Código Fonte)
class HelloWorld
{
public static void main (String[]args)
{
System.out.println(“HelloWorld”);
}
}
Análise sintática
e semântica
Linguagem de
Máquina
(Código
Executável)
Execução
Linguagens de Programação Processamento de Linguagens
Há ainda a possibilidade de uma mescla das duas (em um sistema híbrido), como é o caso da linguagem Java;
Compilação e interpretação são os processos pelos quais o código fonte é traduzido em código de
máquina
Linguagens de Programação Interpretação
Código Fonte Análise sintática
e semântica
Código
Executável
Zeros e uns...
Estas análises são feitas em cada linha por vez
1. class HelloWorld{ Execução linha 1
2. public static void
main(String[] args) { Execução linha 2
Linguagens de Programação Interpretação
1. class HelloWorld{ Execução linha 1
2. public static void
main(String[] args) { Execução linha 2
• As ações indicadas pelos comandos da linguagem são diretamente executadas
• Existe, para executar cada ação possível, um subprograma (escrito na linguagem de máquina do computador hospedeiro)
• Um interpretador é um programa que executa repetidamente a seguinte seqüência:
• Obter o próximo comando do programa
• Determinar que ações devem ser executadas
• Executar estas ações
Linguagens de Programação Interpretação
• Características do processo de interpretação:
• Não gera um arquivo de código executável
• Toda a vez que for executar o programa, terá que ler o código fonte
• É necessário ter o interpretador na máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado
• É independente de plataforma
Linguagens de Programação Interpretação
Código Fonte Análise sintática
e semântica
Código
Executável
Zeros e uns...
Estas análises são feitas em todo o código fonte, para depois gerar o código executável
class HelloWorld
{
public static void main (String[]args) {
System.out.println(“HelloWorld”);
}
}
Linguagens de Programação Interpretação
Código Fonte Análise sintática
e semântica
Código
Executável
Zeros e uns...
Programas escritos em linguagem de alto nível são compilados para versões equivalentes em linguagem de máquina, antes de serem executados
Linguagens de Programação Interpretação
INTERPRETAÇÃO
Toda vez que for executar o programa, terá que ler o código fonte.
Não gera um arquivo de código executável; é comum que gere bytecode
É necessário ter o interpretador na máquina onde o código fonte foi desenvolvido, bem como onde o código fonte será executado
Quando comparada com a compilação, a primeira vez da execução de uma interpretação é mais rápida. Mas as demais execuções serão mais lentas
É independente de plataforma (desde que o próprio interpretador tenha sido portado)
Desvantagens Vantagens
Linguagens de Programação Compilação
• Características do processo de compilação:
• A primeira vez que for executar um programa será relativamente demorado, pois será necessário compilá-lo,
• Mas nas próximas execuções, será mais rápido
• Gera código executável,
• Como gera o executável, não é necessário recompilar novamente para executar o programa;
Linguagens de Programação Compilação
• Características do processo de compilação (cont):
• É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado
• É dependente de plataforma, pois o código fonte gerado é preparado para rodar em uma plataforma específica (Windows, Linux, Apple, etc)
COMPILAÇÃO
É dependente de plataforma, pois o código de máquina gerado é preparado para rodar em uma plataforma específica
Como gera o executável, não é necessário recompilar novamente para executar o programa
Gera código executável
A primeira vez que for executar um programa será relativamente demorado, pois será necessário compilá-lo. Mas nas próximas execuções, será mais rápido
Desvantagens Vantagens
COMPILAÇÃO
É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado
Desvantagens Vantagens