Você está na página 1de 4

Introdução à Programação - Parte 1/2

David Sanguinetti
form.sanguinetti@gmail.com

Contents
1 Introdução 1

2 Nota Histórica 1

3 As primeiras linguagens de programação 2


3.1 Asembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 A, B, C! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Ainda mais além... Linguagens interpretadas . . . . . . . . . . . 3

4 Referências 4

1 Introdução
Programar não é nada de particularmente novo. A toda a hora e todo o instante
o fazemos no quotidiano: nem que seja programar o que faremos nos 5 min.
seguintes. O gesto concreto e palpável de programar encontramo-lo à noite
quando se programa o despertador para tocar na manhã seguinte, ou de manhã,
quando se programa o microondas para aquecer o pequeno-almoço durante x
segundos.

2 Nota Histórica
O primeiro visionário a conceber uma máquina capaz de ser programada para
agir de acordo com uma qualquer necessidade do utilizador foi Charles Babbage,
em 1834 que, embora esta máquina com válvulas e vapor não tenha sido con-
cluı́da com o autor em vida, ficou popularizada como a primeira séria tentativa
de criar máquinas reconfiguráveis — neste caso, através de cartões perfurados
— de acordo com a necessidade.
Esta máquina programável captou a atenção de Ada Lovelace que, sendo
formada em Matemática, teve a iniciativa de criar o primeiro progama para
o motor analı́tico de Babbage, colocando-o a calcular e imprimir uma sequência
de números Bernoulli.
O primeiro computador efectivamente a ver a luz do dia foi o ENIAC, ap-
resentado no ano de 1943 pelo Departamento de Defesa Norte-Americano, que
servia para calcular a trajectória balı́stica da artilharia. O princı́pio básico de
programação destes computadores — que ocupavam salas enormes —, era o de

1
Figure 1: O motor analı́tico de Charles Babbage

1
ligar e desligar cabos e tubos que, em determinadas configurações efectuavam
as operações pretendidas.

Figure 2: O ENIAC (Electronic Numerical Integrator and Computer)

Hoje em dia o princı́pio de programação de uma máquina é exactamente


o mesmo, mas aplicado num pequeno chip de silı́cio chamado CPU (Central
Processing Unit) onde o facto fı́sico de “passa-corrente”/“não-passa-corrente” é
representado por uns e zeros:
110 1111 0110 01110110

3 As primeiras linguagens de programação


3.1 Asembly
Naturalmente, algo que se apresente sob esta condição (110 1111 0110 01110110)
será nada inteligı́vel, aborrecido, e sujeito a erros enormes por parte de quem
queira programar usando exclusivamente esta chamada linguagem máquina, que
é a única que o computador compreende.
Surge então a linguagem Assembly, onde o próximo programa é exemplo:
dosseg
. model s m a l l
. s t a c k 100h

. data
1 Daqui que nasce o conceito de bug/insecto, que era quando algum insecto se introduzia

nos tubos, atrapalhando a computação

2
h e l l o m e s s a g e db ’ H e l l o , World ! ’ , 0 dh , 0 ah , ’ $ ’

. code
main p r o c
mov ax , @data
mov ds , ax

mov ah , 9
mov dx , o f f s e t h e l l o m e s s a g e
int 21h

mov ax , 4 C00h
int 21h
main endp
end main
porque um processador, com todos os seus milhões e milhões de nano inter-
ruptores, a única coisa que sabe fazer é operações de somar 0’s e 1’s e, depois
de passar um assembler no código acima, este será convertido para linguagem
máquina e mostrará no ecrã “Hello World”.

3.2 A, B, C!
Mexer nos registos dos processadores com as instruções acima, pode parecer
mais simples que operar directamente com bits, mas na verdade estes detalhes
devem ser escondidos, recorrendo a uma linguagem de um nı́vel mais alto como
por exemplo:
/∗ H e l l o World program ∗/

#i n c l u d e <s t d i o . h>

main ( )
{
p r i n t f ( ” H e l l o World ” ) ;
exit (0);
}
O mesmo “Hello World”, desta vez usando a linguagem de programação C.
Como se pode constatar existe um decréscimo substancial de linhas de código
necessárias e é muito mais intuitivo.
O C assume-se como uma linguagem ainda hoje muito necessária por ser das
mais próximas da máquina, sem prejudicar significativamente a inteligibilidade
do código. include significa “incluir” e é fácil perceber que o programador pre-
tende incluir algo — neste caso um cabeçalho de input/output; mas a máquina
não compreende outra lı́ngua que não a dela, logo é necessário recorrer a um com-
pilador, que não é mais que um programa que faz “a ponte” entre a linguagem de
programação de alto nı́vel para instruções equivalentes que a máquina consiga
compreender.

3
3.3 Ainda mais além... Linguagens interpretadas
Com o avançar dos anos, da tecnologia e o surgimento de novos e cada vez mais
exigentes consumidores de micro-informática, linguagens de programação mais
acessı́veis e potentes tiveram de ser criadas. Porém o confronto que a seguir se
apresenta já consta desde os antı́podas da micro-informática:
• Facilidade de utilizaço ao versus Potência;

• Segurança versus Eficiência;


• Rigidez versus modularidade.
Estamos na era das máquinas virtuais que se encarregam de traduzir a lin-
guagem de programação cada vez mais próxima da linguagem natural paraa
uma linguagem que a máquina executante consiga compreender.
Uma máquina virtual assegura também que o mesmo pedaço de código pode
ser executado em vários ambientes (Windows, Linux/Unix e Mac Os x) e tipos
de processador (Intel, PowerPC, AMD).
Exemplos destas linguagens são:
• Microsoft C# (.Net Framework )

• Java (Java Virtual Machine)


Destas duas, só a última assegura na plenitude os objectivos propostos no con-
ceito de máquina virtual2 .

4 Referências

[1] Schildt, Herbert, Java, The Complete Reference, McGraw Hill, Seventh Edi-
tion, Kindle Edition, 2007
[2] Wang, Wallace, Beginning Programming All-in-One Desk Reference For
Dummies, Wiley, Kindle Edition, 2008.

2 também
o .Net Framework foi um projecto iniciado com esse intuito, mas gorado ao
fim de pouco tempo pela própria Microsoft. Não obstante, um grupo de programadores
independentes transpuseram com algum sucesso C# em Linux, no projecto Mono

Você também pode gostar