terça-feira, 19 de outubro de 2010

A História dos computadores e da computação

Hoje em dia, os computadores estão presentes em nossa vida de uma forma nunca vista anteriormente. Sejam em casa, na escola, na faculdade, na empresa, ou em qualquer outro lugar, eles estão sempre entre nós. Ao contrário do que parece, a computação não surgiu nos últimos anos ou décadas, mas sim há mais de 7 mil anos atrás.

Por este motivo, desenvolvemos este artigo, que conta a história e a evolução da computação e dos computadores em geral, desde a antiguidade até os dias de hoje. Desta maneira, você poderá ficar por dentro das principais formas de computação utilizadas pela humanidade. O texto está dividido em 4 partes e irá abordar temas diversos como ábaco: máquina de pascal, lógica de Boole, computadores mainframes, Steve Jobs, Bill Gates, entre vários outros.

Para começar, vamos falar sobre uma forma de calcular muito simples mas que também foi muito útil nas culturas antigas: o ábaco.

Ábaco, a primeira calculadora da história


Exemplo de ábaco russoMuitos povos da antiguidade utilizavam o ábaco para a realização de cálculos do dia-a-dia, principalmente nas áreas de comercio de mercadorias e desenvolvimento de construções civis. Ele pode ser considerado como a primeira máquina desenvolvida para cálculo, pois utilizava um sistema bastante simples, mas também muito eficiente na resolução de problemas matemáticos. É basicamente um conjunto de varetas de forma paralela, que contém pequenas bolas que realizam a contagem.

Seu primeiro registro é datado no ano de 5500 a.c., pelos povos que constituíam a Mesopotâmia. Contudo, o ábaco também foi usado posteriormente por muitas outras culturas: Babilônia, Egito, Grécia, Roma, Índia, China, Japão, etc. Cada um destes povos possui uma versão de específica desta máquina, entretanto, preservando a sua essência original. Seu nome roma antiga era "Calculus", termo de onde a palavra cálcuo foi derivada.

O fato deste instrumento ter sido difundido entre todas estas culturas se deve principalmente a dois fatores. O contato entre povos distintos é o primeiro deles, o que fez com que o ábaco fosse copiado de um lugar para vários outros no mundo. Por outro lado, a necessidade da representação matemática fez com os sistemas de contagens utilizados no cotidiano fossem implementados de forma mais prática.

Sobre as operações matemáticas, ele é bastante útil para a soma e subtração. Já a multiplicação e divisão, o ábaco comum não é muito recomendado, somente algumas versões mais complexas que padrão.

Régua de Cálculo

Durante vários séculos, o ábaco foi sendo desenvolvido e aperfeiçoado, sendo a principal ferramenta de cálculo por muito tempo. Entretanto, os principais intelectuais da época do renascimento necessitavam descobrir maneiras mais eficientes de efetuar cálculos. Logo, em 1638, depois de Cristo, um padre inglês chamado William Oughtred , criou uma tabela muito interessante para a realização de multiplicações muito grandes. A base de sua invenção foram as pesquisas sobre logaritmos, realizadas pelo escocês John Napier.

Régua de Cálculo

Até este momento, a multiplicação de números muito grandes era algo muito trabalhoso e demorado de ser realizado. Porém, Napier descobriu várias propriedades matemáticas interessantes e as deu o nome de logaritmos. Após, disso, multiplicar valores se tornou uma tarefa mais simples.

O mecanismo do William era consistido de um régua que já possuía uma boa quantidade de valores pré-calculados, organizados em forma que os resultados fossem acessados automaticamente. Uma espécie de ponteiro indicava o resultado do valor desejado.

Máquina de Pascal

Apesar da régua de cálculo de William Oughtred ser útil, os valores presentes nela ainda eram pre-definidos, o que não funcionaria para calcular números que não estivessem presentes na tábua. Pouco tempo depois, em 1642, o matemático francês Bleise Pascal desenvolveu o que pode ser chamado da primeira calculadora mecânica da história, a máquina de Pascal.

Máquina de Pascal



Seu funcionamento era baseado no uso de rodas interligadas, que giravam na realização dos cálculos. A ideia inicial de Pascal era desenvolver uma máquina que realizasse as quatro operações matemáticas básicas, o que não aconteceu na prática, pois ela era capaz apenas de somar e subtrair. Por esse motivo, ela não foi muito bem acolhida na época.

Alguns anos após a Máquina de Pascal, em 1672, o alemão Gottfried Leibnitz conseguiu o que pascal não tinha conseguido, criar uma calculadora que efetuava a soma e a divisão, além da raiz quadrada.

Computador

Computador (ou ordenador) é uma máquina capaz de variados tipos de tratamento automático de informações ou processamento de dados. Exemplos de computadores incluem o ábaco, a calculadora, o computador analógico e o computador digital. Um computador pode prover-se de inúmeros atributos, dentre eles armazenamento de dados, processamento de dados, cálculo em grande escala, desenho industrial, tratamento de imagens gráficas, realidade virtual, entretenimento e cultura.

No passado, o termo já foi aplicado a pessoas responsáveis por algum cálculo. Em geral, entende-se por computador um sistema físico que realiza algum tipo de computação. Existe ainda o conceito matemático rigoroso, utilizado na teoria da computação.

Assumiu-se que os computadores pessoais e laptops são ícones da Era da Informação; e isto é o que muitas pessoas consideram como "computador". Entretanto, atualmente as formas mais comuns de computador em uso são os sistemas embarcados, pequenos dispositivos usados para controlar outros dispositivos, como robôs, câmeras digitais ou brinquedos.

As primeiras máquinas de computar
Pascaline, máquina calculadora feita por Blaise Pascal.

John Napier (1550-1617), escocês inventor dos logaritmos, também inventou os ossos de Napier, que eram tabelas de multiplicação gravadas em bastão, o que evitava a memorização da tabuada.

A primeira máquina de verdade foi construída por Ediin([[1895)sendo capaz de somar, subtrair, multiplicar e dividir. Essa máquina foi perdida durante a guerra dos trinta anos, sendo que recentemente foi encontrada alguma documentação sobre ela. Durante muitos anos nada se soube sobre essa máquina, por isso, atribuía-se a Blaise Pascal (1623-1662) a construção da primeira máquina calculadora, que fazia apenas somas e subtrações.

A máquina Pascal foi criada com objetivo de ajudar seu pai a computar os impostos em Rouen, França. O projeto de Pascal foi bastante aprimorado pelo matemático alemão Gottfried Wilhelm Leibniz (1646-1726), que também inventou o cálculo, o qual sonhou que, um dia no futuro, todo o raciocínio pudesse ser substituído pelo girar de uma simples alavanca.

Todas essas máquinas, porém, estavam longe de ser um computador de uso geral, pois não eram programáveis. Isto quer dizer que a entrada era feita apenas de números, mas não de instruções a respeito do que fazer com os números.
Babbage
Réplica (parte) do Calculador Diferencial criado por Charles Babbage.

A origem da idéia de programar uma máquina vem da necessidade de que as máquinas de tecer produzissem padrões de cores diferentes. Assim, no século XVIII foi criada uma forma de representar os padrões em cartões de papel perfurado, que eram tratados manualmente. Em 1801, Joseph Marie Jacquard (1752-1834) inventa um tear mecânico, com uma leitora automática de cartões.

A ideia de Jacquard atravessou o Canal da Mancha, onde inspirou Charles Babbage (1792-1871), um professor de matemática de Cambridge, a desenvolver uma máquina de “tecer números”, uma máquina de calcular onde a forma de calcular pudesse ser controlada por cartões.

Tudo começou com a tentativa de desenvolver uma máquina capaz de calcular polinômios por meio de diferenças, o calculador diferencial. Enquanto projetava seu calculador diferencial, a idéia de Jacquard fez com que Babbage imaginasse uma nova e mais complexa máquina, o calculador analítico, extremamente semelhante ao computador atual.

Sua parte principal seria um conjunto de rodas dentadas, o moinho, formando uma máquina de somar com precisão de cinquenta dígitos. As instruções seriam lidas de cartões perfurados. Os cartões seriam lidos em um dispositivo de entrada e armazenados, para futuras referências, em um banco de mil registradores. Cada um dos registradores seria capaz de armazenar um número de cinquenta dígitos, que poderiam ser colocados lá por meio de cartões a partir do resultado de um dos cálculos do moinho.

Além disso tudo, Babbage imaginou a primeira máquina de impressão, que imprimiria os resultados dos cálculos, contidos nos registradores. Babbage conseguiu, durante algum tempo, fundos para sua pesquisa, porém não conseguiu completar sua máquina no tempo prometido e não recebeu mais dinheiro. Hoje, partes de sua máquina podem ser vistas no Museu Britânico, que também construiu uma versão completa, utilizando as técnicas disponíveis na época.

Junto com Babbage, trabalhou a jovem Ada Augusta, filha do poeta Lord Byron, conhecida como Lady Lovelace e Ada Lovelace. Ada foi a primeira programadora da história, projetando e explicando, a pedido de Babbage, programas para a máquina inexistente. Ada inventou os conceitos de subrotina, uma seqüência de instruções que pode ser usada várias vezes, loop, uma instrução que permite a repetição de uma seqüência de cartões, e do salto condicional, que permite saltar algum cartão caso uma condição seja satisfeita.

Ada Lovelace e Charles Babbage estavam avançados demais para o seu tempo, tanto que até a década de 1940, nada se inventou parecido com seu computador analítico. Até essa época foram construídas muitas máquinas mecânicas de somar destinadas a controlar negócios (principalmente caixas registradoras) e algumas máquinas inspiradas na calculadora diferencial de Babbage, para realizar cálculos de engenharia (que não alcançaram grande sucesso).
A máquina de tabular

O próximo avanço dos computadores foi feito pelo americano Herman Hollerith (1860-1929), que inventou uma máquina capaz de processar dados baseada na separação de cartões perfurados (pelos seus furos). A máquina de Hollerith foi utilizada para auxiliar no censo de 1890, reduzindo o tempo de processamento de dados de sete anos, do censo anterior, para apenas dois anos e meio. Ela foi também pioneira ao utilizar a eletricidade na separação, contagem e tabulação dos cartões.

A empresa fundada por Hollerith é hoje conhecida como International Business Machines, ou IBM.
Os primeiros computadores de uso geral
Z1, computador eletro-mecânico construído por Konrad Zuse.

O primeiro computador eletro-mecânico foi construído por Konrad Zuse (1910–1995). Em 1936, esse engenheiro alemão construiu, a partir de relês que executavam os cálculos e dados lidos em fitas perfuradas, o Z1. Zuse tentou vender o computador ao governo alemão, que desprezou a oferta, já que não poderia auxiliar no esforço de guerra. Os projetos de Zuse ficariam parados durante a guerra, dando a chance aos americanos de desenvolver seus computadores.

Foi na Segunda Guerra Mundial que realmente nasceram os computadores atuais. A Marinha americana, em conjunto com a Universidade de Harvard, desenvolveu o computador Harvard Mark I, projetado pelo professor Howard Aiken, com base no calculador analítico de Babbage. O Mark I ocupava 120m³ aproximadamente, conseguindo multiplicar dois números de dez dígitos em três segundos.

Simultaneamente, e em segredo, o Exército Americano desenvolvia um projeto semelhante, chefiado pelos engenheiros J. Presper Eckert e John Mauchy, cujo resultado foi o primeiro computador a válvulas, o Eletronic Numeric Integrator And Calculator (ENIAC)[2], capaz de fazer quinhentas multiplicações por segundo. Tendo sido projetado para calcular trajetórias balísticas, o ENIAC foi mantido em segredo pelo governo americano até o final da guerra, quando foi anunciado ao mundo.
ENIAC, computador desenvolvido pelo Exército Americano.

No ENIAC, o programa era feito rearranjando a fiação em um painel. Nesse ponto John von Neumann propôs a idéia que transformou os calculadores eletrônicos em “cérebros eletrônicos”: modelar a arquitetura do computador segundo o sistema nervoso central. Para isso, eles teriam que ter três características:

1. Codificar as instruções de uma forma possível de ser armazenada na memória do computador. Von Neumann sugeriu que fossem usados uns e zeros.
2. Armazenar as instruções na memória, bem como toda e qualquer informação necessária a execução da tarefa, e
3. Quando processar o programa, buscar as instruções diretamente na memória, ao invés de lerem um novo cartão perfurado a cada passo.

Visão simplificada da arquitetura de Von Neumann.

Este é o conceito de programa armazenado, cujas principais vantagens são: rapidez, versatilidade e automodificação. Assim, o computador programável que conhecemos hoje, onde o programa e os dados estão armazenados na memória ficou conhecido como Arquitetura de von Neumann.

Para divulgar essa idéia, von Neumann publicou sozinho um artigo. Eckert e Mauchy não ficaram muito contentes com isso, pois teriam discutido muitas vezes com ele. O projeto ENIAC acabou se dissolvendo em uma chuva de processos, mas já estava criado o computador moderno.


Arquitetura de hardware


LEGENDA: 01- Monitor; 02- Placa-Mãe; 03- Processador; 04- Memória RAM; 05- Placas de Rede, Placas de Som, Vídeo, Fax...; 06- Fonte de Energia; 07- Leitor de CDs e/ou DVDs; 08- Disco Rígido (HD); 09- Mouse (Rato); 10- Teclado.

Mesmo que a tecnologia utilizada nos computadores digitais tenha mudado dramaticamente desde os primeiros computadores da década de 1940 (veja história do hardware), quase todos os computadores atuais ainda utilizam a arquitetura de von Neumann proposta por John von Neumann.

Seguindo a arquitetura, os computadores possuem quatro sessões principais, a unidade lógica e aritmética, a unidade de controle, a memória e os dispositivos de entrada e saída. Essas partes são interconectadas por barramentos. A unidade lógica e aritmética, a unidade de controle, os registradores e a parte básica de entrada e saída são conhecidos como a CPU.

Alguns computadores maiores diferem do modelo acima em um aspecto principal - eles têm múltiplas CPUs trabalhando simultaneamente. Adicionalmente, poucos computadores, utilizados principalmente para pesquisa e computação científica, têm diferenças significativas do modelo acima, mas eles não tem grande aplicação comercial.


Processamento

O processador (ou CPU) é uma das partes principais do hardware do computador e é responsável pelos cálculos, execução de tarefas e processamento de dados. A velocidade com que o computador executa as tarefas ou processa dados está diretamente ligada à velocidade do processador. As primeiras CPUs eram constituídas de vários componentes separados, mas desde meados da década de 1970 as CPUs vêm sendo manufaturadas em um único circuito integrado, sendo então chamadas microprocessadores.

A unidade lógica e aritmética (ULA) é a unidade central do processador, que realmente executa as operações aritméticas e lógicas entre dois números. Seus parâmetros incluem, além dos números operandos, um resultado, um comando da unidade de controle, e o estado do comando após a operação. O conjunto de operações aritméticas de uma ULA pode ser limitado a adição e subtração, mas também pode incluir multiplicação, divisão, funções trigonométricas e raízes quadradas. Algumas podem operar somente com números inteiros, enquanto outras suportam o uso de ponto flutuante para representar números reais (apesar de possuírem precisão limitada).

A unidade de controle é a unidade do processador que armazena a posição de memória que contém a instrução corrente que o computador está executando, informando à ULA qual operação a executar, buscando a informação (da memória) que a ULA precisa para executá-la e transferindo o resultado de volta para o local apropriado da memória. Feito isto, a unidade de controle vai para a próxima instrução (tipicamente localizada na próxima posição da memória, a menos que a instrução seja uma instrução de desvio informando que a próxima instrução está em outra posição.

A CPU também contém um conjunto restrito de células de memória chamados registradores que podem ser lidos e escritos muito mais rapidamente que em outros dispositivos de memória. São usados frequentemente para evitar o acesso contínuo à memória principal cada vez que um dado é requisitado.

Memória

A memória é um dispositivo que permite ao computador armazenar dados por certo tempo. Atualmente o termo é geralmente usado para definir as memórias voláteis, como a RAM, mas seu conceito primordial também aborda memórias não voláteis, como o disco rígido. Parte da memória do computador é feita no próprio processador; o resto é diluído em componentes como a memória RAM, memória cache, disco rígido e leitores de mídias removíveis, como disquete, CD e DVD.

Nos computadores modernos, cada posição da memória é configurado para armazenar grupos de oito bits (chamado de um byte). Cada byte consegue representar 256 números diferentes; de 0 a 255 ou de -128 a +127. Para armazenar números maiores pode-se usar diversos bytes consecutivos (geralmente dois, quatro ou oito). Quando números negativos são armazenados, é utilizada a notação de complemento para dois.

A memória do computador é normalmente dividida entre primária e secundária, sendo possível também falar de uma memória "terciária".


Memória primária

A memória primária é aquela acessada diretamente pela Unidade Lógica e Aritmética. Tradicionalmente essa memória pode ser de leitura e escrita (RAM) ou só de leitura (ROM). Atualmente existem memórias que podem ser classificadas como preferencialmente de leitura, isso é, variações da memória ROM que podem ser regravadas, porém com um número limitado de ciclos e um tempo muito mais alto.

Normalmente a memória primária se comunica com a ULA por meio de um barramento ou canal de dados. A velocidade de acesso a memória é um fator importante de custo de um computador, por isso a memória primária é normalmente construída de forma hierárquica em um projeto de computador. Parte da memória, conhecida como cache fica muito próxima à ULA, com acesso muito rápido. A maior parte da memória é acessada por meio de vias auxiliares.

Normalmente a memória é nitidamente separada da ULA em uma arquitetura de computador. Porém, os microprocessadores atuais possuem memória cache incorporada, o que aumenta em muito sua velocidade.

Memória RAM

Memória RAM de um PC.