Tabela de conteúdos
Visão geral
“If I have seen further than others, it is by standing upon the shoulders of giants”
- Sir Isaac Newton
A História da Computação engloba um conteúdo muito mais extenso que a evolução do computador, muitos de seus avanços são também na verdade, avanços em outras áreas do conhecimento. Por possuir um caráter cumulativo, estudar a história da computação é de extrema importância não só para compreender os processos que levaram ao surgimento da Ciência da Computação, mas também para moldar seu futuro!
Pré-história da computação
Ábaco
É provável que a primeira das ferramentas usadas para realizar cálculos foi o ábaco, ou pelo menos uma versão primitiva deste. Sua origem é incerta, mas há registros de sua existência em diversos povos antigos. Segundo Boyer[1], não se sabe ao certo se o fenômeno do ábaco na China, Arábia e Europa foram eventos independentes.
Curiosamente, o ábaco — que utiliza o sistema de numeração posicional — era usado até mesmo em civilizações que utilizavam sistema de numeração aditivo, como era o caso dos romanos.
A máquina de Anticítera
Foi descoberta acidentalmente no século XX nos destroços de um barco em Anticítera que afundou por volta dos anos 100 a.C.. Estudos indicam a existência de mais de 60 mecanismos de bronze, e que a máquina era usada para o cálculo de fenômenos astronômicos como as fases da lua e movimentação de planetas, fazendo dela o registro mais antigo de um computador analógico. [3]
Pascalina
A pascalina foi uma calculadora mecânica criada por Blaise Pascal em 1642 para ajudar seu pai, que era um coletor de impostos. A máquina funcionava com engrenagens de dez posições que eram giradas manualmente, e apenas realizava as operações de soma e subtração (utilizando a técnica do complemento de 9). Alguns fatores que limitaram a propagação da pascalina foram a complexidade do mecanismo, cuja reprodução era extremamente cara, e a dificuldade da construção da máquina, que dependia da presença de Pascal em função das instruções difíceis de seguir. Posteriormente, Gottfried Leibniz visando melhorar o mecanismo da pascalina, conseguiu com sucesso criar uma calculadora que realizava as quatro operações.
Lógica binária
O desenvolvimento da lógica binária ocorreu muito antes da sua implementação em computadores. Os principais contribuidores da teoria da lógica binária foram Gottfried Wilhelm Leibniz e George Boole:
Leibniz
A lógica binária como conhecemos hoje começou a tomar forma quando Leibniz estudou sobre números binários no início do século XVIII, intrigado por escrituras chinesas antigas sobre o tema. Em seu artigo sobre aritmética binária, Leibniz explica que
[…] ao invés de uma progressão em dezenas, eu uso há muitos anos a progressão mais simples de todas, que prossegue em pares, e acredito que ela seja valiosa para o aperfeiçoamento da ciência dos números. Portanto, eu não uso nenhum outro caractere além do 0 e 1, e quando chego neste segundo, eu começo de novo.[6]
Neste artigo Leibniz advoga sobre a facilidade da manipulação dos números na base binária e suas possíveis aplicações práticas. Nele encontram-se também exemplos de como realizar as quatro operações básicas.
Boole
Pouco mais de um século após as contribuições de Leibniz, em 1849 o matemático autodidata George Boole publicava um artigo intitulado “Análise Matemática da Lógica”, no qual defendia que a lógica deveria ser associada à matemática, e não à metafísica, como argumentavam alguns filósofos da época, inclusive mostrando como o silogismo dedutivo de Aristóteles poderia ser representado como uma equação algébrica.
Poderíamos, com justiça, tomar isso como característica definitiva de um verdadeiro cálculo: que seja um método que se apoia no uso de símbolos, cujas leis de combinação são conhecidas e gerais, e cujos resultados admitem uma interpretação consistente. É com base nesse princípio geral que eu pretendo estabelecer o cálculo da lógica, e que reivindico para ele um lugar entre as formas reconhecidas da análise matemática. (BOOLE apud BOYER 2010 p. 373)
O artigo de Boole marcava o nascimento do que seria futuramente conhecido como Álgebra Booleana. Sua primeira aplicação prática a contribuir com a história da computação veio a ocorrer apenas por volta de 1940, quando Claude E. Shannon percebeu que a álgebra teorizada por Boole poderia ser usada para descrever o comportamento de circuitos elétricos. [4]
A Máquina de Diferenças e a Máquina Analítica
Tivemos no século XIX dois grandes nomes para a computação, Charles Babbage e Ada Lovelace, que carregam o título de Pai do Computador e Mãe da Programação respectivamente.
Babbage tinha certo interesse nas tabelas de cálculo, mas se incomodava com a questão do erro humano na produção destas e do que ele mesmo chamou de “o intolerável trabalho e a cansativa monotonia de uma repetição constante de cálculos aritméticos parecidos”. Ele teorizava que seria possível melhorar a precisão através da mecanização do processo e, em 1820 começou a trabalhar em sua máquina, tendo um protótipo de sua Máquina de Diferenças pronto dois anos depois. A máquina de Babbage foi projetada para computar funções polinomiais, logarítmicas e trigonométricas através das Séries de Taylor, e ele até chegou a construir partes da máquina, mas a construção nunca foi finalizada e o projeto foi abandonado alguns anos depois.
Apesar do fracasso de seu projeto anterior, Babbage não desistiu e logo começou a pensar numa versão ainda melhor de sua máquina, uma versão que faria qualquer tarefa que pudesse ser expressada através de notação algébrica. A essa nova máquina Babbage deu o nome de Máquina Analítica, e ela viria a ser o primeiro design de um computador mecânico, possuindo já um processador e memória. [7]
A Máquina Analítica de Babbage introduziu a ideia da utilização de cartões perfurados para alimentar as instruções à máquina e receber os resultados. A inspiração para o uso dos cartões perfurados veio diretamente da invenção extremamente popular de Joseph Jacquard em 1801, um tear que utilizava cartões perfurados como instruções para automatizar a tecelagem de padrões de desenhos.
Uma das pessoas de maior interesse na Máquina Analítica era Ada Lovelace, que previa que tal máquina poderia ser usada para muito mais que apenas cálculos matemáticos. Ada foi responsável pela tradução para inglês de uma série de notas de Giovanni Plana — um astrônomo italiano também interessado no trabalho de Babbage — sobre a Máquina Analítica, e nesta publicação de tradução, Ada acrescentou suas próprias observações, além de também escrever um ensaio próprio, intitulado Observations on Mr. Babbage’s Analytical Engine. Por conta destas duas publicações Lovelace recebe o título de Mãe da Programação.
Hollerith e a IBM
Herman Hollerith era funcionário do Departamento do Censo dos Estados Unidos quando teve a ideia de desenvolver uma máquina que ajudasse na leitura de dados do censo através de cartões perfurados. Ironicamente, a ideia não veio das máquinas de Babbage: algumas fontes[5] afirmam que a ideia veio da observação de tickets perfuráveis de trens, outras[4] que a ideia veio também diretamente do tear de Jacquard.
Seus cartões melhoraram muito a eficiência do processamento de dados do censo, e sua invenção fez tanto sucesso que logo mais sua empresa que trabalhava para o Departamento acabou se fundindo com algumas outras para se tornar a Computing-Tabulating-Recording Company, que futuramente viria a se chamar International Business Machines, nome pelo qual a conhecemos hoje em dia, sendo uma das maiores empresas na área da computação.
Konrad Zuse
Konrad Zuse foi um engenheiro civil alemão que desenvolveu diversas máquinas de cálculo, nomeadas sequencialmente Z1, Z2, Z3 e Z4, com cada uma delas sendo um upgrade direto da versão anterior. Desde a Z1, Zuse já introduzia o uso do sistema binário em seus cartões perfurados, que eram na verdade rolos de filme reutilizados para esse propósito. Segundo O’Regan[7], a Z1 era basicamente um somador de floats de 22-bits, e era muito limitada por conta de sua pequena memória. Já a Z2 teve como upgrade a mudança da unidade de controle e lógica aritmética para um relay de circuitos elétricos.
Já o Z3 era extremamente rápido. Nas palavras do próprio Zuse, sobre o Z1 e Z2:
[…] tinham todas as características do computador posterior, mas não trabalhavam satisfatoriamente. O Z3 foi terminado em 1941 e foi o primeiro modelo totalmente operacional. (ZUSE, 1980 apud FONSECA FILHO, 2007)
Foi descoberto depois que as máquinas de Zuse foram as primeiras a utilizar a lógica binária, e possivelmente as primeiras máquinas completamente controladas por programação — titulo antes tido pela Harvard Mark-I —, mas infelizmente por conta do contexto das guerras no século XX, seus feitos não foram reconhecidos e acabaram não contribuindo muito na história da computação.
Harvard Mark-I
Antiga detentora do título de primeira máquina a utilizar lógica binária e ser completamente controlada por programação, a Harvard Mark-I foi uma construção colaborativa entre Howard Aiken e engenheiros da IBM. A Mark-I possuía memórias separadas para instruções e dados, conseguia modificar instruções dinamicamente baseado em resultados parciais de cálculos e já possuía seus programas especiais e subrotinas para lidar com funções logarítmicas e trigonométricas, inclusive sendo capaz de distinguir quais eram os melhores algoritmos para a execução de algum cálculo. Grace Hopper foi uma das programadoras da Mark-I.
Tendências e Desafios
A história da computação nos mostra que muitos de seus avanços estão atrelados a outras áreas do conhecimento, mantendo um vínculo bem próximo com descobertas da área da matemática e engenharias, porém nos dias atuais, a computação se encontra em uma posição diferenciada em relação às demais áreas do conhecimento. Isso porque os computadores e as tecnologias de informação e comunicação estão cada vez mais presentes no cotidiano das pessoas, e portanto, as decisões e progressos na área da computação terão cada vez mais impacto na sociedade. Ainda assim, a Ciência da Computação é inerentemente vista como uma ciência exata que, como as demais, não passa de uma ferramenta do progresso da humanidade.
Há porém, um esforço recente para desmistificar essa visão: Connolly em seu artigo Why Computing Belong Within the Social Sciences[2] alerta para a responsabilidade que os profissionais da computação científica atualmente carregam para com a sociedade, e este não é um caso isolado, muitos debates sobre a questão ética da computação têm sidos levantados à luz dos recentes avanços com inteligências artificiais, por exemplo.
Referências
[1] BOYER, Carl B. História da matemática. 3. ed. São Paulo, SP: Blucher, 2010. xv, 496 p. ISBN 9788521205135.
[2] CONNOLLY, Randy. Why computing belongs within the social sciences. Communications of the ACM, v. 63, n. 8, p. 54-59, 2020.
[3] EFSTATHIOU, Kyriakos et al. The Antikythera Mechanism: The Prove of the Accuracy of the Astronomical Calculations Based on It. Heritage, v. 4, n. 4, p. 3848-3878, 2021.
[4] FONSECA FILHO, Cléuzio. História da computação: O Caminho do Pensamento e da Tecnologia. Porto Alegre, RS: EDIPUCRS, 2007. 204 p. ISBN 9788574306919
[5] HOYLE, Michelle A.. History of Computing Science. 2006. Disponível em <http://www.eingang.org/Lecture/index.html>. Acesso em 29 de agosto de 2022.
[6] LEIBNIZ G. Explication de l'Arithmétique Binaire, Die Mathematische Schriften. 1. ed. C. Gerhardt, Berlin 1879, vol.7, p.223-227; Tradução em inglês disponível em <www.leibniz-translations.com/binary.htm>. Acesso em 28 de agosto de 2022.
[7] O'REGAN, Gerard. A brief history of computing. London: Springer, 2008. 245 p. ISBN 9781447123590