Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda...

33
Linguagens de Programação Classificação

Transcript of Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda...

Page 1: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

Linguagens de Programação Classificação

Page 2: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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)

Page 3: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 4: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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...

Page 5: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

Exemplo de programa em hexadecimal

LINGUAGEM DE MÁQUINA – HEXADECIMAL

Page 6: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

Linguagens de Programação Linguagem de

Máquina/Representação

Execução direta pela máquina, sem

tradução

Page 7: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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??

Page 8: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 9: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 10: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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)

Page 11: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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...;

Page 12: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 13: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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”);

}

}

Page 14: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 15: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

Linguagens de Programação Linguagens de Alto Nível

• Algumas linguagens de programação, e o ano em que foram desenvolvidas:

Page 16: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

Visão geral do histórico das linguagens

Page 17: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 18: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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);

Page 19: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 20: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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”);

}

}

Page 21: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 22: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 23: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 24: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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)

Page 25: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

• 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

Page 26: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

• 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

Page 27: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 28: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 29: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 30: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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;

Page 31: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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)

Page 32: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

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

Page 33: Linguagens de Programação Classificação · • Linguagem assembly - de montagem (segunda geração) • Linguagem de alto nível (terceira geração) • Linguagem de muito alto

COMPILAÇÃO

É preciso ter um compilador na máquina onde se desenvolve o programa, mas não onde ele é executado

Desvantagens Vantagens