Arquitetura em níveis Para que servem estes níveis? Tipos de

Propaganda
Arquitetura em níveis
Introdução a Linguagens de
Programação
Rebeca Schroeder
[email protected]
Para que servem estes níveis?
• Abstração da complexidade;
• Interface entre hardware e software de baixo
nível;
• Padronização das instruções, linguagens de
máquina, etc...
• Vantagens: diferentes implementações sobre a
mesma arquitetura;
• Desvantagem: algumas vezes impossibilita
inovações.
Tipos de softwares
•
•
Software: Programas escritos em linguagem de
programação que permitem ao usuário a utilização do
computador para diversas tarefas;
Software Básico: Controla componentes físicos e
lógicos do computador, permitindo ao usuário interagir
com esses componentes sem a necessidade de
conhecimento especializado (baixo nível):
–
–
–
•
Software Aplicativo: Desempenham funções
específicas para determinadas atividades e usuários:
–
Linguagens de Programação
• Usadas para descrever seqüências de
passos que levam à solução de um
problema
• Permitir que os usuários (programadores)
especifiquem como estes passos devem
ser seqüenciados para resolver um
problema
• Especificar algoritmos com precisão.
Sistemas operacionais;
Utilitários: anti-vírus, compactadores, backups,...
Linguagens de programação;
Planilhas eletrônicas, bancos de dados, navegadores..
Linguagem de Programação
• O que é linguagem?
– Meio de comunicação
• E Linguagem de programação?
– Software através do qual podemos
desenvolver programas para informarmos
ao computador o que queremos que seja
feito
Pensamento
Humano (nãoestruturado)
Programa
Computador
1
Linguagem de Programação
• Definições
– Notação para escrever programas, através dos quais
podemos nos comunicar com o hardware e dar as
ordens adequadas para a realização de um
determinado processo
– Conjunto de regras que providencia a maneira de
dizer a um computador que operações executar.
– Conjunto de símbolos (vocabulário) e regras
(gramática) que especifica como transmitir
informações entre usuários e computador.
Primeiras Linguagens
•
•
Programadores usavam linguagem de máquina
– Seqüências de dígitos binários (0s e 1s).
– Por exemplo, a instrução “some 1 + 1” deveria ser representada
como: 10100100
Muitas desvantagens:
– Grande probabilidade de erro em todos os estágios do processo
de programação.
– Mesmo sendo com algoritmos simples resulta em longos
programas, o que dificulta o processo de validação e detecção
de erros.
– O cálculo de endereços de memória devem ser feitos
manualmente, com um árduo trabalho e uma grande
probabilidade de erros.
Linguagens de Alto Nível x
Linguagens de Baixo Nível
• Alto nível
– Minimiza as dificuldades da programação em
Linguagem de Baixo Nível pois se aproxima da
linguagem humana
– Problemas podem ser solucionados muito mais
rapidamente e com muito mais facilidade.
– O programa em linguagem de alto nível é
normalmente fácil de seguir e entender cada
passo da execução.
– Fácil portabilidade em diferentes CPUs.
Tipos de Linguagem
• Linguagens de baixo nível
– Restritas a linguagem de máquina.
– Forte relação entre as operações implementadas
pela linguagem e as operações implementadas pelo
hardware.
• Linguagens de alto nível
– Aproximam-se das linguagens utilizadas por
humanos para expressar problemas e algoritmos.
– Cada declaração em uma linguagem de alto nível
equivale a várias declarações em uma linguagem de
baixo nível.
Linguagem de Baixo Nível
Linguagem de
Máquina
Significado
0010 0001 1110
carrega no registrador 1 o conteúdo da posição de memória 14
0010 0010 1111
carrega no registrador 2 o conteúdo da posição de memória 15
0001 0001 0010
soma o conteúdo do registrador 1 com o conteúdo do registrador 2 e
coloca no registrador 1
0011 0001 1111
armazena o conteúdo do registrador 1 na posição de memória 15
Linguagem de
Máquina
0010 0001 1110
Linguagem de Baixo
Nível
LOAD R1, val1
0010 0010 1111
LOAD R2, val2
0001 0001 0010
ADD R1, R2
0011 0001 1111
STORE R1, val2
Linguagens de Alto Nível x
Linguagens de Baixo Nível
• Baixo nível
– Indicada para funções que precisam implementar
instruções de máquina específicas que não são
suportadas por linguagens de alto nível.
– Impossibilidade de uso de linguagens de alto nível
(hardware simples).
2
Linguagens
Linguagem de
Máquina
0010 0001 1110
Histórico
Linguagem de Baixo Linguagem de Alto
Nível
Nível
LOAD R1, val1
0010 0010 1111
LOAD R2, val2
0001 0001 0010
ADD R1, R2
0011 0001 1111
STORE R1, val2
val2 = val1 + val2
Histórico
• Quarta geração: São linguagens declarativas e não
procedimentais, isto é, permitem dizermos o que
queremos que seja feito e não como queremos que seja
feito.
• Quinta geração: são normalmente conhecidas como
linguagens orientadas a objetos (OO – Object Oriented).
Alguns autores incluem também nesta geração os
sistemas especialistas, desenvolvimento de inteligência
artificial, execução de programas em paralelo.
Existem centenas de linguagens de programação,
agrupadas em 5 gerações:
• Primeira geração: linguagem de máquina.
• Segunda geração: linguagem de baixo nível.
• Terceira geração: linguagens de alto nível.
São linguagens de aplicação geral que se
caracterizam por suportarem variáveis,
matrizes, instruções condicionais, instruções
repetitivas, funções e procedimentos.
Exemplos de linguagens de 3ª geração são,
PASCAL, C, etc...
Processamento de linguagens
•
•
•
•
Embora seja teoricamente possível a construção de
computadores especiais, capazes de executar programas
escritos em uma linguagem de programação qualquer, os
computadores existentes hoje em dia são capazes de executar
somente programas em uma linguagem de nível baixo, a
linguagem de máquina.
Linguagens de máquina: rapidez de execução de programas,
menor custo de implementação em hardware.
Linguagens de programação: facilidade na construção e da
confiabilidade de programas.
Existem basicamente duas alternativas para que os programas
criados em uma linguagens de programação possam
entendidos pela máquina: interpretação e tradução.
Processamento de linguagens
Processamento de linguagens
Interpretação:
• As ações indicadas pelos comandos da
linguagem são diretamente executadas.
Executa repetidamente a seguinte
seqüência:
Tradução:
• Programas escritos em linguagem de alto
nível são traduzidos para versões
equivalentes em linguagem de máquina,
antes de serem executados. Passos básicos:
1. Obter o próximo comando do programa.
2. Determinar que ações devem ser
executadas.
3. Executar estas ações.
1.Traduzir programa para código objeto
(compilador).
2.Traduzido para código relocável (montador), em
linguagem de máquina.
3.Carregar programa inteiro na memória principal,
como código executável de máquina.
3
Processamento de Linguagens
Código
Fonte
Tradutor
Código
Objeto
• Compilador: No sentido mais geral, qualquer
programa que transforme um conjunto de símbolos
em outro obedecendo a uma série de regras
sintáticas e semânticas; no sentido mais comum, um
programa que traduz todo o código-fonte de
programas escritos em uma linguagem de alto nível
em código-objeto antes da execução do programa. O
código-objeto é o código de máquina, ou alguma
variação do código de máquina.
Processamento de Linguagens
•
Código-fonte: não é executável diretamente pelo processador
- permite apenas que o programador consiga definir o programa
em uma forma legível aos humanos.
•
Código-objeto: é o código produzido pelo compilador; é uma
forma intermediária, similar a linguagem de máquina do
computador. Apesar de estar representado em binário, não é
executável diretamente pelo processador, pois normalmente, o
código-objeto referencia partes de programa que não estão
necessariamente definidas no mesmo arquivo que o gerou, por
exemplo, arquivos de bibliotecas de sub-rotinas.
•
Editores de ligação (ou linkeditores): Um programa que
reúne módulos compilados e arquivos de dados para criar um
programa executável. Os linkeditores têm também outras
funções, como a criação de bibliotecas.
Processamento de Linguagens
Código-fonte
Compilador
Código-objeto
Linker
Biblioteca
do sistema
Sistema operacional
Código executável
4
Download