Aula 2: Computadores

Translated by Luís Pereira

O que é um computador? De acordo com a Columbia Encyclopedia é "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: http://www.wikipedia.org.
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 calculos 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 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 familia Motorola.
Processors 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 convem ser referidos. Alguns electrodomésticos mais avançados, como receptors de satellite ou sistemas de cinema, correm programas muito sofisticados que seguem as regras a seguir apresentadas nesta aula. 

Nota: com a velocidade que a tecnologia avança 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. Exemplos em baixo.

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
4) Um programa
A maioria dos computadores também têm:
5) 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. Electrons 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 o ouro) e os
isoladores (como o vidro e o plástico).
 

No nível seguinte temos a Electronica. A electrónica liga os materiais com
propriedades diferentes transformados num componete  para utilização.
Note que o diodo que conduz corrente numa só direcção, e o transistor,
cuja conductividade é controlada por voltagem exterior. 
The picture shows the first
transistor, as invented at Bell Labs in 1947.

A seguir encontramos o nível da Electrónica Digital. São utilizadas as chamadas "gates": OR, NOR, AND, NAND, XOR, só para mencionar
algumas. Estas "gates" são feitas de componentes de electrónica básica como transistores. Gates are the cornerstone of digital computers. Temos
que nos lembrar que todos os calculos são feitos a este nível. Quando juntamos 2+2, algures no PC as gatesestão mudando e processando
calculus como "1 OR 1 = 1". Outro componente da electrónica digital é a memória. Também são feitos de transistors (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 gatesestão ligados o que permite que programas complexos corram. Desde o primeiro circuito integrado, que o número de de transistors num unico IC vem duplicando de dois em dois anos, aproximadamente. A esta regra chama-se lei de Moore que ainda é válida, embora os limites fisicos estejam á vista. Ver a figura à esquerda.

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

.

No nível seguinte começa a programação real. Começamos com programas binaries, ou (em formato legivel) 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 conteudo do endereço 0000101000 no registo A. Esta linguagem é quase imposível a ler 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 codigo da linguagem da máquina vai ser caregado (sem mais traduições) na memória and executed. Ficehiros com nomes finalizados com ".exe" e ".com" in MS-DOS and Windows são deste tipo.

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 a executar os pequenos programas escritos em micro assembler. Esta é a forma
  ADDA $2050
ou numa forma menos legivel (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 evoluiram das linguagens mais antigas como o assembler, etc. Muitas destas linguagens foram inventadas durante os anos 1960 e 1970. Para aplicação existe uma linguagem de programação. 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 exite 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 flexiveis. Podemos escrever uma grande variedade de aplicações nestas linguagens. Podemos, por exemplo, escrever um programa que simule o funcionamento de um diodo, ou calcular um transistor ao nível fisico. 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 podevos 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 video
ou, a um nível mais profundo
  0011011100011111110001111010001111
Para este propósito existem compiladores. Eles traduzem o que é legivel 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
  myprogram.exe

que pode ser executado escrevendo
  meuprograma
e o resultado aparecerá no ecran quando tudo correr correctamente
 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 clicar no seu icon, 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 sem ser verificar se nós digitamos ou clicamos em algo. Que desperdicio 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 chamada de Windows. Por baixo dela, ainda tinhamos o mesmo sistema de linha de comandos do MS-DOS , mas os clicks do rato nos icones e objectos traduziam-se em comandos. Podiamos clicar numa 'pasta' e ver o seu conteudo. 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 dolares (20.000.000.000 dolares) em 1995. Em 2000 subiu para 65 biliões. Note que se trata de 10 dolares 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, click aqui para um teste online. Note que esta não será a forma do teste final!


Peter Stallinga, Universidade do Algarve, 6 fevereiro 2002