História da ciência da computação - History of computer science

A história da ciência da computação começou muito antes de nossa disciplina moderna de ciência da computação , geralmente aparecendo em formas como matemática ou física . A evolução dos séculos anteriores aludiu à disciplina que hoje conhecemos como ciência da computação . Essa progressão, de invenções mecânicas e teorias matemáticas a modernos conceitos e máquinas de computadores , levou ao desenvolvimento de um importante campo acadêmico, ao avanço tecnológico massivo em todo o mundo ocidental e à base de um comércio e cultura mundiais massivos.

Pré-história

John Napier (1550-1617), o inventor dos logaritmos

A primeira ferramenta conhecida para uso em computação foi o ábaco , desenvolvido no período entre 2700 e 2300 aC na Suméria . O ábaco dos sumérios consistia em uma tabela de colunas sucessivas que delimitava as sucessivas ordens de grandeza de seu sistema numérico sexagesimal . Seu estilo original de uso era por linhas traçadas na areia com seixos. Abaci de design mais moderno ainda são usados ​​como ferramentas de cálculo hoje, como o ábaco chinês .

No século 5 aC, na Índia antiga , o gramático Pāṇini formulou a gramática do sânscrito em 3959 regras conhecidas como Ashtadhyayi, que eram altamente sistematizadas e técnicas. Panini usou metarules, transformações e recursões .

O mecanismo de Antikythera acredita-se ser um computador analógico mecânica precoce. Ele foi projetado para calcular posições astronômicas. Foi descoberto em 1901 no naufrágio de Antikythera na ilha grega de Antikythera, entre Kythera e Creta , e foi datado de cerca de 100 AC.

Dispositivos de computador analógicos mecânicos apareceram novamente mil anos depois no mundo islâmico medieval e foram desenvolvidos por astrônomos muçulmanos , como o astrolábio mecânico de Abū Rayhān al-Bīrūnī e o torquetum de Jabir ibn Aflah . Segundo Simon Singh , os matemáticos muçulmanos também fizeram avanços importantes na criptografia , como o desenvolvimento da criptoanálise e da análise de frequência por Alkindus . Máquinas programáveis também foram inventadas por engenheiros muçulmanos , como o tocador de flauta automático dos irmãos Banū Mūsā , e os autômatos humanóides programáveis e o relógio de castelo de Al-Jazari , que é considerado o primeiro computador analógico programável . Artefatos tecnológicos de complexidade semelhante apareceram na Europa do século 14 , com relógios astronômicos mecânicos .

Quando John Napier descobriu logaritmos para fins computacionais no início do século 17, seguiu-se um período de considerável progresso por parte de inventores e cientistas na fabricação de ferramentas de cálculo. Em 1623, Wilhelm Schickard projetou uma máquina de calcular, mas abandonou o projeto, quando o protótipo que ele havia começado a construir foi destruído por um incêndio em 1624. Por volta de 1640, Blaise Pascal , um importante matemático francês, construiu um dispositivo mecânico de somar baseado em um projeto descrito pelo matemático grego Herói de Alexandria . Então, em 1672, Gottfried Wilhelm Leibniz inventou o Stepped Reckoner, que ele completou em 1694.

Em 1837, Charles Babbage descreveu pela primeira vez sua Máquina Analítica, que é aceita como o primeiro projeto para um computador moderno. O motor analítico tinha memória expansível, uma unidade aritmética e recursos de processamento lógico capazes de interpretar uma linguagem de programação com loops e ramificação condicional. Embora nunca tenha sido construído, o projeto foi estudado extensivamente e é considerado o equivalente de Turing . O mecanismo analítico teria uma capacidade de memória de menos de 1 kilobyte de memória e uma velocidade de clock de menos de 10 Hertz.

Avanços consideráveis ​​na teoria matemática e eletrônica foram necessários antes que os primeiros computadores modernos pudessem ser projetados.

Lógica binária

Gottfried Wilhelm Leibniz (1646-1716), desenvolveu a lógica em um sistema numérico binário

Em 1702, Gottfried Wilhelm Leibniz desenvolveu a lógica em um sentido matemático formal com seus escritos sobre o sistema numérico binário. Em seu sistema, os uns e zeros também representam verdadeiros e falsos valores ou no e fora estados. Mas levou mais de um século para que George Boole publicasse sua álgebra booleana em 1854 com um sistema completo que permitia que processos computacionais fossem modelados matematicamente.

Nessa época, os primeiros dispositivos mecânicos movidos por um padrão binário foram inventados. A revolução industrial impulsionou a mecanização de muitas tarefas, incluindo a tecelagem . Os cartões perfurados controlados José Marie Jacquard tear 's em 1801, onde um buraco perfurado no cartão indicado um binário um e um local unpunched indicado um binário nulo . O tear de Jacquard estava longe de ser um computador, mas ilustrava que as máquinas podiam ser acionadas por sistemas binários.

Surgimento de uma disciplina

Charles Babbage (1791-1871), um dos primeiros pioneiros na computação

Charles Babbage e Ada Lovelace

Charles Babbage é frequentemente considerado um dos primeiros pioneiros da computação. Começando na década de 1810, Babbage teve uma visão de computar mecanicamente números e tabelas. Colocando isso em realidade, Babbage projetou uma calculadora para calcular números de até 8 casas decimais. Dando continuidade ao sucesso dessa ideia, Babbage trabalhou para desenvolver uma máquina que pudesse computar números com até 20 casas decimais. Na década de 1830, Babbage elaborou um plano para desenvolver uma máquina que pudesse usar cartões perfurados para realizar operações aritméticas. A máquina armazenaria números em unidades de memória e haveria uma forma de controle sequencial. Isso significa que uma operação seria realizada antes da outra de forma que a máquina produzisse uma resposta e não falhasse. Esta máquina ficou conhecida como “Máquina Analítica”, que foi a primeira representação verdadeira do que é o computador moderno.

Ada Lovelace (Augusta Ada Byron) é considerada a pioneira da programação de computadores e é considerada um gênio matemático. Lovelace começou a trabalhar com Charles Babbage como assistente enquanto Babbage trabalhava em sua “Máquina Analítica”, o primeiro computador mecânico. Durante seu trabalho com Babbage, Ada Lovelace se tornou a projetista do primeiro algoritmo de computador, que tinha a capacidade de calcular números de Bernoulli . Além disso, o trabalho de Lovelace com Babbage resultou em sua previsão de computadores futuros não apenas para realizar cálculos matemáticos, mas também manipular símbolos, matemáticos ou não. Embora ela nunca tenha sido capaz de ver os resultados de seu trabalho, como a “Máquina Analítica” não foi criada em sua vida, seus esforços nos anos posteriores, a partir da década de 1840, não passaram despercebidos.

Charles Sanders Peirce e circuitos elétricos de comutação

Charles Sanders Peirce (1839-1914), descreveu como as operações lógicas podem ser realizadas por circuitos elétricos de comutação

Em uma carta de 1886, Charles Sanders Peirce descreveu como as operações lógicas podem ser realizadas por circuitos elétricos de comutação. Durante 1880-81, ele mostrou que as portas NOR sozinhas (ou alternativamente portas NAND sozinhas ) podem ser usadas para reproduzir as funções de todas as outras portas lógicas , mas este trabalho não foi publicado até 1933. A primeira prova publicada foi por Henry M. Sheffer em 1913, então a operação lógica NAND é às vezes chamada de AVC de Sheffer ; o NOR lógico às vezes é chamado de flecha de Peirce . Conseqüentemente, essas portas são às vezes chamadas de portas lógicas universais .

Eventualmente, tubos de vácuo substituíram relés para operações lógicas. A modificação de Lee De Forest , em 1907, da válvula de Fleming pode ser usada como uma porta lógica. Ludwig Wittgenstein introduziu uma versão da tabela verdade de 16 linhas como a proposição 5.101 do Tractatus Logico-Philosophicus (1921). Walther Bothe , inventor do circuito de coincidências , ganhou parte do Prêmio Nobel de Física em 1954 , pelo primeiro portão AND eletrônico moderno em 1924. Konrad Zuse projetou e construiu portas lógicas eletromecânicas para seu computador Z1 (de 1935 a 1938).

Até a década de 1930, os engenheiros elétricos eram capazes de construir circuitos eletrônicos para resolver problemas matemáticos e lógicos, mas a maioria o fazia de maneira ad hoc , sem qualquer rigor teórico. Isso mudou com a teoria do circuito de comutação na década de 1930. De 1934 a 1936, Akira Nakashima , Claude Shannon e Viktor Shetakov publicaram uma série de artigos mostrando que a álgebra booleana de dois valores pode descrever a operação de comutação de circuitos. Este conceito, de utilizar as propriedades de interruptores elétricos para fazer lógica, é o conceito básico que fundamenta todos os computadores digitais eletrônicos . A teoria do circuito de comutação forneceu as bases matemáticas e as ferramentas para o projeto de sistemas digitais em quase todas as áreas da tecnologia moderna.

Enquanto fazia um curso de filosofia na graduação, Shannon foi exposto ao trabalho de Boole e reconheceu que ele poderia ser usado para arranjar relés eletromecânicos (então usados ​​em chaves de roteamento de telefone) para resolver problemas lógicos. Sua tese se tornou a base do projeto prático de circuitos digitais quando se tornou amplamente conhecida entre a comunidade de engenheiros elétricos durante e após a Segunda Guerra Mundial.

Alan Turing e a máquina de Turing

Antes de 1920, os computadores (por vezes computors ) eram funcionários humanos que realizaram cálculos. Eles geralmente estavam sob a liderança de um físico. Muitos milhares de computadores foram empregados no comércio, governo e estabelecimentos de pesquisa. Muitos desses funcionários que serviam como computadores humanos eram mulheres. Alguns realizavam cálculos astronômicos para calendários, outros tabelas balísticas para militares.

Após a década de 1920, a expressão máquina de computação se referia a qualquer máquina que realizasse o trabalho de um computador humano, especialmente aquelas de acordo com os métodos eficazes da tese de Church-Turing . A tese afirma que um método matemático é eficaz se puder ser apresentado como uma lista de instruções que podem ser seguidas por um escrivão humano com papel e lápis, pelo tempo que for necessário, e sem engenhosidade ou discernimento.

As máquinas que computavam com valores contínuos tornaram-se conhecidas como o tipo analógico . Eles usaram máquinas que representavam quantidades numéricas contínuas, como o ângulo de rotação de um eixo ou a diferença no potencial elétrico.

O maquinário digital, ao contrário do analógico, era capaz de renderizar um estado de um valor numérico e armazenar cada dígito individual. A maquinaria digital usava motores de diferença ou relés antes da invenção de dispositivos de memória mais rápidos.

A expressão máquina de computação gradualmente cedeu lugar, após o final da década de 1940, apenas ao computador , à medida que o surgimento da maquinaria digital eletrônica se tornou comum. Esses computadores eram capazes de realizar os cálculos realizados pelos funcionários humanos anteriores.

Como os valores armazenados por máquinas digitais não eram vinculados a propriedades físicas como dispositivos analógicos, um computador lógico, baseado em equipamento digital, era capaz de fazer qualquer coisa que pudesse ser descrita como "puramente mecânica". A Teórica Máquina de Turing , criada por Alan Turing , é um dispositivo hipotético teorizado para estudar as propriedades de tal hardware.

As bases matemáticas da moderna ciência da computação começaram a ser estabelecidas por Kurt Gödel com seu teorema da incompletude (1931). Nesse teorema, ele mostrou que havia limites para o que poderia ser provado e refutado dentro de um sistema formal . Isso levou ao trabalho de Gödel e outros para definir e descrever esses sistemas formais, incluindo conceitos como funções mu-recursivas e funções definíveis por lambda .

Em 1936, Alan Turing e Alonzo Church independentemente, e também juntos, introduziram a formalização de um algoritmo , com limites sobre o que pode ser calculado, e um modelo "puramente mecânico" para a computação. Isso se tornou a tese de Church-Turing , uma hipótese sobre a natureza dos dispositivos de cálculo mecânico, como os computadores eletrônicos. A tese afirma que qualquer cálculo possível pode ser realizado por um algoritmo executado em um computador, desde que haja tempo e espaço de armazenamento suficientes disponíveis.

Em 1936, Alan Turing também publicou seu trabalho seminal sobre as máquinas de Turing , uma máquina de computação digital abstrata que agora é chamada simplesmente de máquina de Turing universal . Esta máquina inventou o princípio do computador moderno e foi o berço do conceito de programa armazenado que quase todos os computadores modernos usam. Essas máquinas hipotéticas foram projetadas para determinar formalmente, matematicamente, o que pode ser calculado, levando em consideração as limitações da capacidade de computação. Se uma máquina de Turing pode completar a tarefa, ela é considerada Turing computável .

O físico de Los Alamos, Stanley Frankel , descreveu em uma carta a visão de John von Neumann sobre a importância fundamental do artigo de Turing de 1936:

Sei que por volta de 1943 ou 1944, von Neumann estava bem ciente da importância fundamental do artigo de Turing de 1936 ... Von Neumann me apresentou a esse artigo e, por insistência dele, estudei-o com cuidado. Muitas pessoas aclamam Von Neumann como o "pai do computador" (no sentido moderno do termo), mas tenho certeza de que ele mesmo nunca teria cometido esse erro. Ele pode muito bem ser chamado de parteira, talvez, mas ele enfatizou firmemente para mim, e para os outros, tenho certeza, que a concepção fundamental se deve a Turing ...

John V. Atanasoff (1903-1995) criador do primeiro computador elétrico digital chamado Atanasoff – Berry computer

Hardware de computador inicial

O primeiro computador digital eletrônico do mundo, o computador Atanasoff-Berry , foi construído no campus da Iowa State de 1939 a 1942 por John V. Atanasoff , professor de física e matemática, e Clifford Berry , estudante de graduação em engenharia.

Em 1941, Konrad Zuse desenvolveu o primeiro computador funcional controlado por programa do mundo, o Z3 . Em 1998, mostrou -se, em princípio, Turing-completo . Zuse também desenvolveu a máquina de computação S2, considerada o primeiro computador de controle de processo . Ele fundou uma das primeiras empresas de computadores em 1941, produzindo o Z4 , que se tornou o primeiro computador comercial do mundo. Em 1946, ele projetou a primeira linguagem de programação de alto nível , Plankalkül .

Em 1948, o Manchester Baby foi concluído; foi o primeiro computador digital eletrônico do mundo a executar programas armazenados em sua memória, como quase todos os computadores modernos. A influência sobre Max Newman do artigo seminal de Turing de 1936 sobre as Máquinas de Turing e de suas contribuições lógico-matemáticas para o projeto foram cruciais para o desenvolvimento bem-sucedido do Bebê.

Em 1950, o Laboratório Físico Nacional da Grã-Bretanha concluiu o Pilot ACE , um computador programável de pequena escala, baseado na filosofia de Turing. Com uma velocidade de operação de 1 MHz, o Pilot Model ACE foi por algum tempo o computador mais rápido do mundo. O projeto de Turing para o ACE tinha muito em comum com as arquiteturas RISC de hoje e exigia uma memória de alta velocidade com aproximadamente a mesma capacidade de um computador Macintosh anterior , que era enorme para os padrões de sua época. Se o ACE de Turing tivesse sido construído conforme planejado e na íntegra, estaria em uma liga diferente dos outros computadores anteriores.

Claude Shannon (1916-2001), ajudou na criação do campo da Teoria da Informação

O primeiro bug de computador real foi uma mariposa . Estava preso entre os relés do Harvard Mark II. Embora a invenção do termo 'bug' seja frequentemente, mas erroneamente, atribuída a Grace Hopper , uma futura contra-almirante da Marinha dos Estados Unidos, que supostamente registrou o "bug" em 9 de setembro de 1945, a maioria das outras contas conflitam pelo menos com esses detalhes. De acordo com esses relatos, a data real era 9 de setembro de 1947 quando os operadores registraram este 'incidente' - junto com o inseto e a notação "Primeiro caso real de bug sendo encontrado" (veja bug de software para detalhes).

Shannon e a teoria da informação

Claude Shannon passou a fundar o campo da teoria da informação com seu artigo de 1948 intitulado A Mathematical Theory of Communication , que aplicou a teoria da probabilidade ao problema de como codificar melhor as informações que um remetente deseja transmitir. Este trabalho é uma das bases teóricas para muitas áreas de estudo, incluindo compressão de dados e criptografia .

Norbert Wiener (1894 -1964) criou o termo cibernética

Wiener e cibernética

A partir de experimentos com sistemas antiaéreos que interpretavam imagens de radar para detectar aviões inimigos, Norbert Wiener cunhou o termo cibernética da palavra grega para "timoneiro". Ele publicou "Cybernetics" em 1948, que influenciou a inteligência artificial . Wiener também comparou computação , maquinaria de computação, dispositivos de memória e outras semelhanças cognitivas com sua análise de ondas cerebrais.

John von Neumann (1903-1957), apresentou a arquitetura de computador conhecida como arquitetura de Von Neumann

John von Neumann e a arquitetura de von Neumann

Em 1946, um modelo de arquitetura de computador foi introduzido e ficou conhecido como arquitetura de Von Neumann . Desde 1950, o modelo de von Neumann forneceu uniformidade em projetos de computador subsequentes. A arquitetura de von Neumann foi considerada inovadora, pois introduziu uma ideia de permitir que instruções de máquina e dados compartilhassem espaço de memória. O modelo de von Neumann é composto de três partes principais, a unidade lógica aritmética (ALU), a memória e a unidade de processamento de instruções (IPU). No projeto de máquina de von Neumann, a UIP passa endereços para a memória, e a memória, por sua vez, é roteada de volta para a UIP se uma instrução estiver sendo buscada ou para a ALU se os dados estiverem sendo buscados.

O projeto da máquina de Von Neumann usa uma arquitetura RISC (Reduced Instruction Set Computing), o que significa que o conjunto de instruções usa um total de 21 instruções para realizar todas as tarefas. (Isso está em contraste com CISC, computação de conjunto de instruções complexas , conjuntos de instruções que têm mais instruções para escolher.) Com a arquitetura de von Neumann, a memória principal junto com o acumulador (o registro que mantém o resultado das operações lógicas) são os dois memórias que são endereçadas. As operações podem ser realizadas como aritmética simples (são realizadas pela ALU e incluem adição, subtração, multiplicação e divisão), ramificações condicionais (são mais comumente vistas agora como ifdeclarações ou whileloops. As ramificações servem como go todeclarações) e movimentos lógicos entre os diferentes componentes da máquina, ou seja, uma passagem do acumulador para a memória ou vice-versa. A arquitetura de Von Neumann aceita frações e instruções como tipos de dados. Finalmente, como a arquitetura de von Neumann é simples, seu gerenciamento de registro também é simples. A arquitetura usa um conjunto de sete registros para manipular e interpretar dados e instruções buscados. Esses registros incluem o "IR" (registro de instrução), "IBR" (registro de buffer de instrução), "MQ" (registro de quociente do multiplicador), "MAR" (registro de endereço de memória) e "MDR" (registro de dados de memória). " A arquitetura também usa um contador de programa ("PC") para controlar a localização da máquina no programa.

John McCarthy (1927-2011), foi visto como um dos fundadores da inteligência artificial

John McCarthy, Marvin Minsky e inteligência artificial

O termo inteligência artificial foi creditado por John McCarthy para explicar a pesquisa que eles estavam fazendo para uma proposta para a Pesquisa de Verão de Dartmouth . A denominação da inteligência artificial também levou ao nascimento de um novo campo na ciência da computação. Em 31 de agosto de 1955, um projeto de pesquisa foi proposto consistindo em John McCarthy, Marvin L. Minsky, Nathaniel Rochester e Claude E. Shannon . O projeto oficial começou em 1956 e consistia em várias partes significativas que eles sentiram que os ajudariam a entender melhor a composição da inteligência artificial.

As ideias de McCarthy e seus colegas por trás de computadores automáticos eram: enquanto uma máquina é capaz de completar uma tarefa, o mesmo deve ser confirmado com um computador compilando um programa para realizar os resultados desejados. Eles também descobriram que o cérebro humano era muito complexo para ser replicado, não pela própria máquina, mas pelo programa. O conhecimento para produzir um programa tão sofisticado ainda não existia.

O conceito por trás disso foi olhar como os humanos entendem nossa própria linguagem e estrutura de como formamos sentenças, dando diferentes significados e conjuntos de regras e comparando-os a um processo de máquina. A maneira como os computadores podem entender é no nível do hardware. Esta linguagem é escrita em binário (1s e 0's). Isso deve ser escrito em um formato específico que forneça ao computador o conjunto de regras para executar uma determinada peça de hardware.

O processo de Minsky determinou como essas redes neurais artificiais poderiam ser organizadas para ter qualidades semelhantes às do cérebro humano. No entanto, ele só conseguiu produzir resultados parciais e precisava aprofundar a pesquisa sobre essa ideia. No entanto, eles deveriam receber apenas resultados parciais do teste

A ideia de McCarthy e Shannon por trás dessa teoria era desenvolver uma maneira de usar problemas complexos para determinar e medir a eficiência da máquina por meio de teoria matemática e cálculos . No entanto, eles deveriam receber apenas resultados parciais do teste.

A ideia por trás do autoaperfeiçoamento é como uma máquina usaria um código de auto-modificação para se tornar mais inteligente. Isso permitiria a uma máquina crescer em inteligência e aumentar as velocidades de cálculo. O grupo acreditava que poderia estudar isso se uma máquina pudesse melhorar o processo de conclusão de uma tarefa na parte de abstrações de sua pesquisa.

O grupo achou que a pesquisa nesta categoria poderia ser dividida em grupos menores. Isso consistiria em informações sensoriais e outras formas de informação sobre inteligência artificial. Abstrações em ciência da computação podem se referir à matemática e à linguagem de programação.

A ideia deles de criatividade computacional é como o programa ou uma máquina podem ser vistos tendo formas semelhantes de pensamento humano. Eles queriam ver se uma máquina poderia pegar um pedaço de informação incompleta e melhorá-lo para preencher os detalhes que faltam como a mente humana pode fazer. Se esta máquina pudesse fazer isso; eles precisavam pensar em como a máquina determinou o resultado.

Veja também

Referências

Fontes

Leitura adicional

links externos