Aula 2: Computadores

Translated by Luís Pereira

O que é um computador? De acordo com a Encyclopedia Columbia é "um dispositivo capaz de executar um conjunto de operações aritméticas e lógicas. Um computador distingue-se de uma máquina de calcular, como por exemplo uma calculadora electrónica, por ser capaz de guardar um programa (para que possa repetir as suas operações e tomar decisões lógicas), devido ao número e complexidade das operações que podem ser executadas, e pela possibilidade de executar, guardar e aceder dados sem intervenção humana."

Existem vários tipos de computadores. Hoje, quando falamos em computadores, queremos dizer computadores digitais. Ao longo da história, também existiram computadores mecânicos e analógicos (electrónico).
O Primeiro computador mecânico foi criado por Charles Babbage no principio do século 19 (por volta de 1815)! Por esta razão, Babbage é frequentemente chamado "O pai da computação". Famosa é também a Difference Engine. Se quer saber mais sobre Charles Babbage, clique aqui.
O primeiro computador electrónico, processando dados no formato digital foi o ENIAC pouco antes da segunda grande guerra (1939). O primeiro computador comercial disponível foi o UNIVAC (1951). Nessa altura pensava-se que uma mão cheia de computadores, distribuídos pelo mundo, seriam suficientes para efectuarem todos os cálculos necessários. Hoje em dia, a grande maioria das pessoas no Ocidente tem um computador em casa, muito mais poderoso que esses primeiros computadores.

Os computadores estão organizados por tamanho e número de pessoas que os pode usar ao mesmo tempo:

Supercomputadores
Máquinas sofisticadas desenvolvidas para executarem cálculos complexos a grande velocidade; são utilizados para modelar grandes sistemas dinâmicos, como por exemplo os padrões do tempo. 
Um exemplo é o Cray SV2 (ver figura),  que tem as dimensões de uma sala média
Mainframes
(Servidor principal)
Os maiores e mais poderosos sistemas para fins comuns, são desenvolvidos para as necessidades de uma grande organização, servindo centenas de terminais ao mesmo tempo. Imaginem companhias de seguros com todos os seus documentos internos partilhados através de uma rede. Todos os empregados podem aceder e editar os mesmos dados.
Minicomputadores Embora algo pequenos, também são computadores multiutilizador, pensados para satisfazer as necessidades de uma pequena empresa servindo até uma centena de terminais.
Microcomputers Computadores servidos por um microprocessador, são divididos em computadores pessoais e estações de trabalho. Computadores pessoais são os que a maioria das pessoas têm em casa. 
                      Exemplos: 
IBM PC e compatíveis com um microprocessador como o Intel Pentium IV, 1.5 Ghz. Computadores portáteis são uma variante dos micro-computadores.
Apple Macintosh  incorporando processador da família Motorola.
Processors
(processador dedicado)
Muitos electrodomésticos, como as máquinas de lavar e fornos, contêm um pequeno processador para controlar o equipamento. São computadores muito pequenos que foram programados nas máquinas ainda na fábrica e não podem ser programados pelos utilizadores. Podem assim não ser considerados computadores, mas convém ser referidos. Alguns electrodomésticos mais avançados, como receptores de satélite ou sistemas de cinema, correm programas muito sofisticados que seguem as regras a seguir apresentadas nesta aula. 

Nota: Considerando a velocidade de avanço da tecnologia, podemos dizer que "os supercomputadores de hoje são os microcomputadores(pessoais) de amanhã"


Hardware vs. software

Dois termos que importa distinguir são hardware e software. Hardware é tudo o se pode tocar e sentir. Sofware são os programas que correm no hardware. Alguns exemplos a seguir.

Todos os computadores são constituídos pelo menos por:

1) Um processador
2) Memória para armazenar o programa
3) Um dispositivo de entrada: (ex.: teclado, rato, porta de ligação a Internet.)
4) Um programa 
5) Um dispositivo de saída(ex.: monitor, impressora, fax, porta de ligação a Internet)
A maioria dos computadores também têm:
6) Um dispositivo de entrada, para mudar o programa, introduzir novos
dados para serem processados ou controlar os processos correntes.

Vejamos alguns componentes do computador

Tabela: elementos de hardware


Rato dispositivo de entrada  Para controlar os processos do computador
CPU Processador Central Processing Unit (Unidade Central de Processamento)
Peça que faz o trabalho. Calcula, controlas os dados, etc.
Joystick
dispositivo de entrada  Controlador para jogos
Teclado dispositivo de entrada  Para dar instruções ao computador ou introduzir dados para processamento
Memória
armazenamento Guardar programas e dados para processamento
Monitor
Dispositivo de saída Mostra os resultados dos processos
Impressora
Dispositivo de saída Imprime os resultados dos processos
Modem Dispositivo de entrada/saída MOdulador-DEModulador comunicar com outros, computadores pela linha telefónica
Placa de rede Dispositivo de entrada/saída Comunicar com outros computadores através de uma rede
Disco
  rigido/disquete
armazenamento Guardar dados e programas num formato não volátil (os dados permanecem quando se desliga o PC)
CD-ROM dispositivo de entrada  Carregar programas ou dados na memória
Placa de som
Dispositivo de saída Tocar música ou outros sons
Scanner dispositivo de entrada  Digitalizar imagens

Camadas físicas e lógicas de um PC

Ao nível mais baixo que podemos chamar de Físico, os electrões são responsáveis pela condução electrica dos materiais. Os materiais usados nos computadores chamam-se semicondutores, o que quer dizer que eles têm uma resistência entre os metais (como o cobre e ouro) e os isolantes (como o vidro e o plástico).
 

No nível seguinte temos a Electrónica. A electrónica liga materiais com propriedades diferentes transformados num componente  para sua utilização. Note por exemplo o díodo que conduz corrente numa só direcção (na imagem acima), e o transístor,
cuja conductividade é controlada por voltagem exterior. 
Fotografía do primeiro transístor, tal como foi inventado nos Laboratórios Bell em 1947

A seguir encontramos o nível da Electrónica Digital. São utilizadas as chamadas portas ("gates"): OR, NOR, AND, NAND, XOR, só para mencionar algumas. Estas portas são feitas de componentes de electrónica básica tais como transistores. As portas são os elementos fundamentais que estão na base dos computadores digitais. Temos que nos lembrar que todos os cálculos são feitos a este nível. Quando adicionamos 2 +2, algures no PC as  portas estão mudando e processando cálculos do tipo "1 OR 1 = 1". Outro componente da electrónica digital é a memória. Também são formadas por transístores (e capacitadores no caso da RAM dinâmica) e podem guardar temporariamente informação.
 
 
Moores law for transitor
                density


O nível seguinte é o dos Circuitos Integrados. Nestes circuitos, milhões e milhões de portas estão ligadas o que permite a execução de programas complexos. Desde que foi manufacturado o primeiro circuito integrado, acontece que o número de transístores num único IC se vem duplicando de dois em dois anos aproximadamente. A esta regra chama-se lei de Moore que ainda é válida, embora os limites físicos estejam á vista. Ver a figura à esquerda.

Para fazer uma comparação popular. Se o mesmo avanço se tivesse verificado na industria automóvel, um carro moderno poderia andar a 5 milhões de km/h, consumia uma gota de combustível aos 100.000 km e poderia levar sentadas 10000 pessoas.

.

No nível seguinte começa a programação real. Começamos com programas binários, ou (em formato legível) Micro-assembler. Isto é programação directa no processador: coloca endereço xxx no registo de endereço, active linhas de endereço, esperar xx ns, adicionar registo X ao registo Y, etc. ("registos" são pequenas unidades de memória dentro do processador)

No nível seguinte temos a Linguagem da Máquina. Um exemplo:
 101000100000101000
O que pode significar: põe o conteúdo do endereço 0000101000 no registo A. Esta linguagem é quase impossível de lêr para os humanos. Por isso, foram inventados os Macro-assembler o que já é um pouco melhor.
Mas lembra que quando um programa vai correr, o código da linguagem da máquina vai ser carregado (sem mais traduições) na memória e executado. Ficheiros com nomes finalizados (chamada extensão) com as letras ".exe" e ".com" são deste tipo (como nos sistemas operativos MS-DOS e Windows).

Para o nível seguinte, que já se parece mais com programação real, temos o Macro-assembler. Neste nível nós instruimos o processador para executar os pequenos programas escritos em micro assembler. Estes tem por exemplo a forma  seguinte:
  ADDA $2050
ou numa forma menos legível (pelo menos para as pessoas);
  101000100000101000
o que significa: "adicionar o conteúdo da memória do endereço $2050 ao registo A". Linguagens de programação modernas como o Pascal e C são traduzidas para esta forma com a ajuda de compiladores.

No nível seguinte temos finalmente as Linguagens de Programação. Estas linguagens são regularmente chamadas de "linguagens de quarta geração", porque evoluíram das linguagens mais antigas como o assembler, etc. Muitas destas linguagens foram inventadas durante os anos 1960 e 1970. Em 1995 existiam cerca de 2500 linguagens de programação diferentes. (para quem estiver interessado, ver http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm). Para programadores profissionais existe o C e C++, para aplicações simples o BASIC. Para fins educacionais foi inventado o Pascal, especialmente para ensinar ideias de programação.

Presentemente, novas gerações de linguagens evoluem. Todas elas envolvem o conceito de Programação Orientada a Objectos, um conceito que não iremos usar nas nossas aulas, mas que se tornou indispensável nos ambientes de programação modernos. Podemos chamar-lhes a "quinta geração de linguagens"

As linguagens de programação modernas são flexíveis. Podemos escrever uma grande variedade de aplicações nestas linguagens. Podemos, por exemplo, escrever um programa que simule o funcionamento de um díodo, ou calcular um transístor ao nível físico. Completamos assim o ciclo; podemos utilizar o computador para fazer os componentes básicos e melhores e mais rápidos computadores.

Exemplos:

 BASIC   IF A=20 THEN PRINT"Hello World" 
 PASCAL   if (a=20) then writeln('Hello World');
 C  if (a==20) printf("Hello world\n");
 FORTRAN  IF (A .EQ. 20) PRINT ,'Hello World'

Não esquecer que se escrevermos em PASCAL
  writeln('Hello world');
e corrermos o programa, estamos de facto a controlar o fluxo de electrões
ao mais baixo nível. Isto pode-vos dar uma boa ideia de controlo ...
 
 


Compiladores

Como foi dito antes, as linguagens modernas de programação têm de ser traduzidas da forma que os utilizadores compreendem para a linguagem dos computadores. Quando escrevemos
  writeln('Benfica - Sporting   3 - 0');
Isto tem de ser traduzido em
  MOVAI $0102       ; carregar 'B' no registo A
  MOVAO $1245     ; mover o conteúdo do registo para a placa de vídeo
ou, a um nível mais profundo
  0011011100011111110001111010001111
Para este propósito existem compiladores. Eles traduzem o que é legível para as pessoas para a o que é executado pelo computador Quando começamos um ficheiro contendo o nosso programa meuprograma.pas, traduzimos com o compilador para um ficheiro chamado meuprograma.exe que pode ser executado escrevendo só meuprograma e o resultado aparecerá no ecrão quando tudo correr bem.

 Benfica - Sporting   3 - 0

Na maioria das versões modernas das linguagens de programação, iremos trabalhar no chamado IDE (integarted development environment - ambiente integrado de desenvolvimento), o que significa que podemos escrever um programa e com um simples toque podemos compilar o programa, ver os erros da nossa escrita, e, caso não existam erros durante a compilação, executar o programa e ver os resultados. Esses ambientes proporcionam grande velocidade de desenvolvimento de software, mas não nos devemos esquecer que o compilador está traduzindo o programa para nós. Iremos discutir os compiladores e o seu uso mais tarde nas aulas práticas.


Sistemas Operativos

Sistemas Operativos são programas que estão constantemente a correr no nosso computador e estão interpretando os comandos que nós damos. Por exemplo, quando nós queremos "correr" o nosso programa, podemos escrever o seu nome ou premir no seu ícone, ou de qualquer outra forma. O sistema operativo vai então:

1) carregar o programa do disco para a memória
2) executa-lo

Quando o nosso programa está terminado, é removido da memória novamente, mas o sistema operativo continua a correr, esperando pela próxima instrução. De facto, um computador por si só não faz mais nada que verificar se nós digitamos ou premimos alguma tecla. Que desperdício de energia....

O Sistema operativo mais famoso terá sido possivelmente o MS-DOS da Microsoft. Este era uma sistema operativo em linha de comando, quer dizer, tinha que se escrever as instruções no computador através do teclado. Por exemplo   DIR C:\
Mais tarde, uma interface gráfica foi adicionada ao MS-DOS e foi chamada Windows. Por baixo dela, ainda tínhamos o mesmo sistema de linha de comandos do MS-DOS , mas os clicks do rato nos ícones e objectos traduziam-se em comandos. Podiamos premir numa 'pasta' e ver o seu conteúdo. Clicar numa pasta era igual a escrever "DIR" mas com os resultados apresentados em modo gráfico. Ao longo dos anos, Windows tornou-se mais avançado e nos dias de hoje é um sistema operativo de multitarefa (o que quer dizer que mais do que um programa pode ser executado ao mesmo tempo) e é utilizado pela maioria das pessoas mundialmente.

Por causa do monopólio detido pela Microsoft, os 27% de acções que o co-fundador Bill Gates representam 20 biliões de dólares (20.000.000.000 dólares) em 1995. Em 2000 subiu para 65 biliões. Note que se trata de 10 dólares (o mesmo valor sensivelmente em euros de hoje)  por cada pessoa na terra, seja ele americano ou um chinês numa aldeia remota da China.

Alternativas para o Windows são o Unix/Linux, que tem a vantagem de ser gratuito, e o MacOS para os Macintosh.
.
 
 


Mini teste:

Para testar os conhecimentos adquiridos nesta aula, prima aqui para um teste imediato. Note que esta não será a forma do teste final!


Peter Stallinga, Universidade do Algarve, 6 fevereiro 2002