Buscar

Um pouco da história das linguagens de programação

Prévia do material em texto

1 
 
Um pouco da história das linguagens de programação 
 
Na década de 50, com o intuito de facilitar a vida do programador, minimizando 
seu esforço e fazê-lo abstrair-se do endereçamento direto de memória e da combinação 
de bits, surgiam as primeiras linguagens de montagem (assembly), onde as operações 
realizadas pelo processador eram representadas por mneumônicos como ADD (Adicione), 
SUB (Subtraia), MOV (carrega valores para o registrador) e etc. 
 
É importante ressaltar que cada processador tinha seu respectivo conjunto de 
instruções em linguagem de montagem, na relação de 1 para 1 para o conjunto de 
instruções do processador em linguagem de máquina (set de instruções do processador). 
 
A tabela 2, abaixo, mostra que em linguagem de montagem toda instrução tem 
uma notação simbólica associada (fornecida pelo fabricante do processador). 
 
 
 
Instrução em código de 
máquina 
Hexadecimal 
Instrução em linguagem 
de montagem 
Comentários sobre a instrução 
A1 01 10 MOV AX, [0110] 
Copiar o conteúdo de 0110 no registro 
AX 
03 06 01 12 ADD AX, [0112] 
Adicionar o conteúdo de 0112 à AX e 
por o resultado no AX 
A3 01 14 MOV [0114], AX 
Armazenar AX no endereço da 
memória 0114 
 
Tabela 2: exemplo de programa em linguagem de montagem 
 
Incialmente, tal qual na linguagem de máquina o tipo de problema a ser resolvido 
era simples, geralmente numérico e não existia técnica de programação. Porém a 
necessidade de programação crescia e os programas também, assim as linguagens de 
montagem mais avançada criaram o conceito de macro, que pode-se dizer foi a base da 
criação da técnica da programação modular. Um macro é um trecho de código (módulo) 
que se repete ao longo de um programa, que era escrito uma única vez e chamado 
sempre que necessário. 
 
Abaixo, a figura 1 (Exemplo de código assembly com macro) mostra 2 colunas a 
primeira com o código sem macro e a segundo com o código com a macro de nome 
 
 
2 
 
CHANGE. Perceba que o código é o mesmo alterando apenas o conteudo (P,Q,R,S) que 
vai ser armazendo nos registradores (EAX e EBX). A macro change usa parâmetros (P1 e 
P2) e é chamada 2 vezes, para realizar as trocas de conteúdos desejados). 
 
 
Figura 1: exemplo de código Assembly com Macro 
 
Na final da década de 50 e início da década de 60 surgem as primeiras linguagens 
de alto nível, que são assim chamadas pela sintaxe dos comandos que são bem próximas 
a linguagem humana (no inglês, no caso). A primeira linguagem dessa geração de 
linguagens, que seria a 3ª. Geração (1ª. Geração, a linguagem de máquina e 2ª geração, 
a linguagem assembly) foi o Fortran, desenvolvida inicialmente para computadores IBM, 
destinada a aplicações numérico-científicas (poucos dados e muita computação). Não 
focava a eficiência dos programas na medida em que as estruturas de controle eram 
todas focadas em GOTO (desvio incondicional), que são a implementação das macros nas 
linguagens de 3ª. Geração. Nesse estado da arte, começa a surgir a idéia de 
programação modular, ou seja criação de sub-rotinas para parte de programas que se 
repetem, mas a programação com desvios dificultava a leitura e manutenção dos códigos 
dos programas 
 
A tabela 3, abaixo, mostra o exemplo de um programa em Basic, uma linguagem 
de programação das décadas 60/70, usando desvio incondicional (GOTO), uma forma de 
simular repetições. 
 
 
 
 
 
 
3 
 
 
 
10 REM RESOLVE EQUACAO DO SEGUNDO GRAU 
20 READ A,B,C 
30 IF A=0 THEN GOTO 410 
40 LET D=B*B-4*A*C 
50 IF D<0 THEN GOTO 430 
60 PRINT "SOLUCAO" 
70 IF D=0 THEN GOTO 100 
80 PRINT "PRIMEIRA SOLUCAO",(-B+SQR(D))/(2*A) 
90 PRINT "SEGUNDA SOLUCAO",(-B-SQR(D))/(2*A) 
100 GOTO 20 
200 PRINT "SOLUCAO UNICA",(-B)/(2*A) 
300 GOTO 20 
400 PRINT "A DEVE SER DIFERENTE DE ZERO" 
410 GOTO 20 
420 PRINT "NAO HA SOLUCOES REAIS" 
430 GOTO 20 
490 DATA 10,20,1241,123,22,-1 
500 END 
 
 
 Tabela 3: exemplo de programa em basic, usando GOTO 
 
No início da década de 70 iniciou-se o movimento de técnica de programação 
estruturada, na tentativa de tornar os códigos dos programas mais legíveis. A essa altura 
os programas eram lotados de instruções de desvio incondicional (os chamados GOTO), 
que tiravam a seqüência lógica das instruções do programa e tornavam a leitura e 
conseqüente entendimento do programa em algo muito difícil. Nessa época as 
linguagens de programação eram pobres em estruturas de controle (decisão e repetição) 
e não verificavam consistência de tipos, onde destacavam-se na época: Fortran, Basic e 
Cobol (as mais usadas). 
 
Em 1971 foi criada por Niklaus Wirth a linguagem Pascal, para fins acadêmicos 
de ensino da programação estruturada. Seu pequeno número de comandos básicos pode 
ser combinado de forma a torna-la mais poderosa, mas sem perder a clareza lógica de 
suas construções. O uso de subprogramas permite a técnica de refinamentos sucessivos 
(metodologia top-down) conseguindo hierarquia na estrutura do programa. 
 
Além da técnica de refinamentos sucessivos, a programação estruturada 
caracteriza-se pela construção de programas com 3 estruturas básicas de controle: 
sequencia, decisão e repetição (iteração). 
 
 
 
4 
 
A tabela 4, abaixo, mostra um programa em Pascal que representa a linguagem 
clássica, onde predominava a técnica de programação estruturada. 
 
 
program Soma_Pares; 
 uses crt; 
 var 
 superior, soma, num: integer; 
 begin 
 soma:=0; 
 write ('Entre com o limite superior'); 
 readln (superior); 
 num:=2; 
 
 repeat 
 soma:=soma+num; 
 num:=num+2; 
 until (num > superior); 
 
 writeln('A soma dos números pares de 2 até ', superior,' é ', soma); 
 readln; 
 end. 
 
 
Tabela 4: exemplo de programa em Pascal – Programação estruturada 
 
Durante os anos 80 houve um rápido crescimento do uso de computadores 
pessoais, em função do barateamento do hardware. Surge a fábrica de software e com 
ela a necessidade de produzir e atualizar software com mais rapidez, pois a demanda é 
grande. Assim sendo a reutilização de código, que já vinha sendo perseguida pela técnica 
de programação estruturada, passa a ser um conceito central para a produtividade no 
desenvolvimento de software. Na mesma época, iniciou-se as mudanças das 
metodologias de projeto de programas orientadas para o processo, para orientadas a 
dados, o que precisou que as linguagens implementassem os tipos abstratos de dados 
(TADs). Inicia-se então a programação orientada a objeto, que teve inicio com a 
abstração de dados, a qual encapsula o processamento com objeto de dados oculta o 
acesso a eles e adiciona herança e vinculação dinâmica de tipos.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes