A maior rede de estudos do Brasil

Grátis
87 pág.
apostila-alg-prog-uergs

Pré-visualização | Página 3 de 23

a
avançar: a máquina de calcular transmutada em caixa registradora, ferramenta
indispensável ao comércio e a contabilidade (e a cobrança de impostos), e a régua de
cálculo também como instrumento indispensável da engenharia mecânica e da cívil, ou
seja, instrumento de áreas de conhecimento que podem ser consideradas como aplicações
da física moderna.
A partir daí os avanços começaram a se acelerar. Em 1672 foi desenvolvida, pelo famoso
matemático alemão Gottfried Wilhelm von Leibnitz (co-criador com Newton do Cálculo
Integral), uma máquina calculador “universal”, que efetuava operações soma, subtração,
multiplicação, divisão e extração da raiz quadrada. O trabalho de Leibnitz não foi a partir
do zero, tendo sido essencialmente uma aprimoramento da máquina de calcular de Pascal.
No início do século XIX ocorreram importantes avanços no conceito de “programação”
(este conceito realmente começou a aparecer na sua forma moderna). O ponto interessante
destes avanços, é que o precursor de todos os dispositivos “programáveis” modernos, não é
uma das máquinas de calcular em voga na época, mas um outro dispositivo mecânico
totalmente desvinculado da atividade de cálculo: um simples tear. Em 1801, Joseph Marie
Jacquard construiu na Inglaterra um tear automático cuja “programação” era feita através
de cartões (de madeira) perfurados. A “programação” deste tear controlava justamente
como seria a confecção do tecido e seus desenhos. Este tear pode ser considerada a primeira
máquina programável da história.
UERGS - Algoritmos e Programação Capítulo 1 -Introdução
3 Copyright  2002,03 João Carlos Gluz
A seguir e ainda na Inglaterra, Charles Babbage, matemático e professor da Universidade
de Cambridge, começou uma série de desenvolvimentos importantes que viriam a culminar
no projeto do que se poderia chamar de verdadeiro “ancestral” de todos os computadores
modernos. O primeiro destes desenvolvimentos foi o projeto e construção, em 1822, da
Máquina Diferencial, que era um dispositivo mecânico sofisticado que permitia o cálculo
de tabelas de números úteis a marinha comercial e de guerra (algo de extrema importância
para a Inglaterra, maior potência naval dos séculos XVIII e XIX). Esta máquina que chegou
a ter um protótipo construído, executava um algoritmo simples e fixo de diferenças finitas
por polinômios para calcular suas tabelas de funções.
Avançando esta idéia de forma a permitir a programação de qualquer tipo de função
desejada, Babbage começou, em 1833, a projetar o ancestral dos computadores: a Máquina
Analítica. Esta máquina nunca chegou a ser construída devido as dificuldades tecnológicas
de fabricação de componentes mecânicos da época, porém o seu projeto e as suas idéias
formam as base práticas da computação moderna. Por exemplo, além de ser uma máquina
programável, dispondo de uma verdadeira “linguagem” ou código de programação
(baseado em formalismos matemáticos), o dispositivo de Babbage teria uma “arquitetura”
organizada de uma forma muito similar aos computadores modernos: a Máquina Analítica
seria dividida em quatro subcomponentes ou unidades básicas:
• a unidade de entrada de dados: uma leitora de cartões perfurados
• a unidade de saída de dados: uma impressora e perfuradora de cartões
• um “silo” ou unidade de armazenagem: uma memória capaz de guardar até 1000
números de 50 algarismos cada um
• e finalmente um “moinho” ou engenho que executaria um programa de cálculo
sobre os dados de entrada, colocando os resultados na unidade de saída e usando
a armazenagem para guardar resultados intermediários. O programa seria
fornecido ao engenho por uma série de cartões perfurados, de maneira similar ao
tear de Jacquard.
É interessante observar que estas quatro unidades, continuam a ser considerados, do ponto
de vista conceitual, os elementos mais básicos de qualquer tipo de computador.
Mesmo que a máquina nunca viesse a ser construída, Babbage precisava demonstrar, pelo
menos em teoria, que a sua programação seria viável. Para tanto ele contratou Ada
Augusta Lovelace, condessa de Lovelace e filha do famoso poeta Lord Byron. Ada
Lovelace deu conta do recado, codificando os primeiros programas de cálculo numérico de
funções. Estes códigos eram instruções reais a serem carregadas na máquina de Babbage e
tinha uma forma muito similar a códigos em linguagem de máquina modernos, sendo assim
Ada Lovelace deve ser considerada, de uma forma bem realista, como sendo a primeira
programadora ou programador de computadores em toda a história.
Em termos de desenvolvimentos práticos, não ocorreram muitas outras coisas em todo o
século XIX, exceto pelo desenvolvimento em torno de 1885 de máquinas de tabulação de
dados automáticas que usavam cartões de dados perfurados de papel já em formato
moderno. Estas máquinas, com seus respectivos cartões, foram criadas por Herman
Hollerith, um (ex)funcionário do departamento de Recenseamento dos Estados Unidos,
UERGS - Algoritmos e Programação Capítulo 1 -Introdução
4 Copyright  2002,03 João Carlos Gluz
extremamente preocupado com o fato de que o censo executado a cada 10 anos, tinha
levado, na sua última edição de 1870, exatos dez anos para ser tabulado e somado. Hollerith
criou uma companhia, a Tabulating Machines Company, que 1924 se juntou a outras
empresas para se transformar na atual International Business Machines.
A relativa falta de avanços tinha a ver com as limitações da tecnologia da época: as
máquinas diferenciais e de tabulação realmente atingiram os limites da tecnologia mecânica
(a máquina analítica, que foi apenas um projeto inconcluso, ultrapassou de longe estes
limites). Outros avanços práticos teriam que esperar um avanço tecnológico real, um
verdadeiro salto que deixaria de lado as limitações dos dispositivos mecânicos e abriria as
portas para as capacidades incríveis das novas tecnologias baseadas na eletricidade e na
eletrônica.
Entrementes, houveram avanços significativos no processo de desenvolvimento teórico da
computação. Em 1854, George Boole, matemático inglês, com a publicação do livro
“Investigation of the Laws of Thought” estabeleceu as bases da Álgebra de Boole ou
Álgebra Booleana, que fornece, entre outras coisas, o fundamento matemático da teoria
dos circuitos digitais modernos e, portanto, é uma das base teóricas da computação. O
trabalho de Boole, também não foi um desenvolvimento individual, tendo sido baseado em
trabalhos anteriores do seu amigo pessoal Augustos De Morgan, que desde a década de
1830 vinha trabalhando com os conceitos da álgebra simbólica e da lógica formal.
É importante salientar que esta visão de que os desenvolvimentos de Boole e De Morgam
formam uma das bases teóricas da computação é uma visão moderna, com uma perspectiva
um tanto “invertida” em relação ao trabalho destes matemáticos. O trabalho deles, em
conjunto com o de um sem-número de outros matemáticos no período, era parte de um
imenso esforço empreendido no final do século XIX e início do século XX para se definir
uma fundamentação teórica absolutamente precisa da própria Matemática, incluindo todas
as suas subdivisões: a Aritmética, o Cálculo, a Álgebra, a Lógica e demais áreas. É dentro
deste processo que estes desenvolvimentos devem ser encarados, entretanto, o fato curioso
neste processo é que todos os resultados positivos no sentido da formalização precisa, da
simbolização e da aritmetização da matemática permitiram, posteriormente, uma utilização
direta como bases formais do processo de cálculo automático ou de computação.
Dos vários desenvolvimentos importantes que ocorreram no período, vinculados àquele
tema maior de fundamentação da matemática, um se destaca no que tange ao impacto
ocasionado na Ciência da Computação: o trabalho, publicado em 1936, pelo grande
matemático inglês Alan Turing que lançou as bases da Teoria Matemática da
Computação. De uma forma simples, neste trabalho Turing criou uma máquina