

Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Saiba como a programação começou com a linguagem de máquina e evoluiu para o assembly e, finalmente, para as linguagens de alto nível. Entenda as diferenças entre eles e como cada uma serve para diferentes finalidades.
Tipologia: Notas de estudo
1 / 3
Esta página não é visível na pré-visualização
Não perca as partes importantes!


No começo, programar um microprocessador para executar uma determinada tarefa não era uma das coisas mais fáceis que existiam. O programador estava preso a utilizar-se da Linguagem de Máquina, que era a programação diretamente em binário ou em hexadecimal. Guardar o que cada código, ou seja, cada número binário ou seu equivalente em hexadecimal significava para o microprocessador, não era fácil. Logo foi criada a primeira linguagem de programação, a linguagem Assembly. Na linguagem assembly, cada código que possui um significado especial para o microprocessador - que é chamado de instrução - recebe um nome, chamado genericamente de Mnemônico. É muito mais fácil de se memorizar um nome do que um código qualquer, além de ser muito mais fácil de se programar por nomes. Por exemplo, uma comparação típica (você não precisa ainda saber o que exatamente significa tudo isto, o objetivo aqui é a comparação):
Microprocessador 8086
Ling. de máquina Assembly B0 FF MOV AL, 0FFh A2 00 20 MOV [2000h], AL
Microprocessador 6800
Ling. de máquina Assembly 86 FF LDA A, # FF 97 00 20 STA A, $
Microprocessador 6502
Ling. de máquina Assembly A9 FF LDA # FF 8D 00 20 STA $
O que significa isto tudo e qual o nosso objetivo com isto? Todos os três programas para os três microprocessadores apresentados executam a mesma tarefa: colocar o valor 255 na posição de memória 2000h. Você deve ter reparado duas coisas. A primeira, o assunto que nós estávamos discutindo: é muito mais fácil programar em assembly do que em linguagem de máquina (é muito mais fácil você guardar MOV AL do que B0, por exemplo). A segunda, que para cada microprocessador possuímos um conjunto de instruções próprio. Ou seja, não há qualquer correlação entre as instruções dos diversos tipos de microprocessadores existentes no mercado. O que estipulará uma família de microprocessadores será justamente a existência de uma similaridade no conjunto de instruções dos microprocessadores que constituam uma família. Por assim dizer, um 8086, um 8088, um 80286, um 80386 etc. constituem uma família de microprocessadores por possuírem instruções similares. Quem sabe programar em assembly em um 8086 saberá programar em um 80286, salvo, é claro, as instruções adicionais que cada microprocessador possuirá e que não será muito difícil aprender. Esta família de microprocessadores é chamada Intel Iapx86, 80x86 ou simplesmente Intel e é a família de microprocessadores que está presente no padrão IBM PC de microcomputadores. Outros microprocessadores como o 6800, o 68000, 68020, etc. constituem uma outra família de microprocessadores, por possuírem instruções similares entre si, porém completamente diferentes da família Intel. Esta outra família é chamada 680x0 ou simplesmente Motorola e é a família de microprocessadores que está presente em microcomputadores como o MacIntosh, o Amiga e estações de computação gráfica.
Porém devemos lembrar que mesmo sendo o Assembly uma linguagem de baixo nível, o microprocessador não a entende - ele entende somente linguagem de máquina. O microprocessador não sabe o que é MOV AL, o mnemônico para a instrução B0. Ele entende somente números, e portanto só sabe interpretar B0. Esta conversão pode ser feita basicamente de duas maneiras: ou “na mão” mesmo, utilizando-se a tabela de instruções fornecida pelo fabricante ou utilizando-se de um programa para tal. Este programa é chamado genericamente de Assembler , ou seja, montador. O Assembler lê um programa lido em Assembly e converte-o para linguagem de máquina. Entenda que não há qualquer tipo de tradução indireta: a linguagem Assembly é apenas os opcodes (números que representam instruções específicas) com um rótulo particular, chamado, como vimos, mnemônico.
LINGUAGENS DE ALTO NÍVEL
Em um microcomputador você necessita de recursos muito mais avançados do que a linguagem de máquina e o assembly - consideradas como linguagem de baixo nível pois trabalham intimamente com o microprocessador - podem oferecer. Assim surge um outro grupo de linguagens, as chamadas linguagens de alto nível. As linguagens de alto nível não estão tão íntimas do microprocessador, mas em compensação oferecem comandos, que são conjuntos de uma ou mais instruções, capazes de executar uma tarefa completa. Como exemplos de linguagens de alto nível, podemos citar BASIC, FORTRAN, Pascal e C, sendo esta última considerada uma linguagem de “médio nível”, por permitir tanto a programação em baixo nível como em alto nível. Mesmo sendo executadas em computadores - e conseqüentemente em microprocessadores - diferentes, as linguagens permanecem inalteradas. Isto porque você não estará programando o microprocessador diretamente: a linguagem será um programa sendo executado sobre o microprocessador. Logo, a linguagem de alto nível se encarregará de traduzir os comandos de seu programa em alto nível - que o microprocessador não conhece - para um programa de baixo nível - que o seu microprocessador conhece. Assim, temos a mesma linguagem de programação de alto nível para vários computadores diferentes, porém a maneira com que eles irão conversar com o microprocessador será diferente. E o mais importante: isto será transparente para o programador. Assim, um programa escrito em Turbo Pascal no Apple II será idêntico a um programa escrito em Turbo Pascal no IBM PC, salvo - é claro
Dentro das próprias linguagens de alto nível existem linguagens "melhores" ou "piores" em termos de recursos e estruturação. Por exemplo o BASIC não é tão bem estruturado como o Pascal e nem tão rígido em suas declarações, também. Mas já vimos que o BASIC era uma linguagem que foi adotada como "padrão" nos primórdios da micro-informática, pois os fabricantes colocavam esta linguagem em forma residente em seus microcomputadores. Assim a linguagem BASIC tornou-se a linguagem de programação mais popular existente até hoje.
Mas mesmo sendo popular, o próprio BASIC difere-se de um microcomputador para o outro, dependendo, principalmente, do fabricante da linguagem (já que a linguagem será um programa sendo executado, como vimos) e do microprocessador que estava sendo utilizado. Por exemplo o AppleSoft Basic (Apple II) difere-se totalmente do GWBasic (CP/M, MSX e IBM PC). Apesar da estrutura ser basicamente igual, certos comandos são simplesmente criados ou então excluídos em virtude das capacidades principalmente de Hardware e do próprio microprocessador do microcomputador.
Voltando à questão de existirem linguagens de alto nível com "maior nível" do que outras, peguemos o exemplo do BASIC vs. Pascal vs. C. Se quiséssemos limpar a tela do computador e escrever no canto superior esquerdo da tela a frase "Oi, tudo bem ?". Teríamos:
GWBasic AppleSoft Basic
10 CLS 10 HOME 20 PRINT "Oi, tudo bem ?" 20 PRINT "Oi, tudo bem ?"
Comentários: CLS / HOME - Limpam a tela PRINT - Imprime a mensagem entre aspas
Turbo Pascal
PROGRAM ESCREVE;