Type a search term to find related articles by LIMS subject matter experts gathered from the most trusted and dynamic collaboration tools in the laboratory informatics industry.
Um computador é uma máquina que pode ser programada para realizar automaticamente sequências de operações aritméticas ou lógicas (computação). Os computadores eletrônicos digitais modernos podem executar conjuntos genéricos de operações conhecidos como programas, que permitem que os computadores executem uma ampla gama de tarefas. Os termos sistema de computador ou sistema computacional podem se referir a um computador nominalmente completo que inclui hardware, sistema operacional, software e equipamento periférico necessário e usado para operação completa; ou a um grupo de computadores vinculados e que funcionam juntos, como uma rede de computadores ou cluster de computadores.
Uma ampla gama de produtos industriais e de consumo utiliza computadores como sistemas de controle, incluindo dispositivos simples para fins especiais, como fornos de microondas e controles remotos, além de dispositivos de fábrica, como robôs industriais. Os computadores estão no centro de dispositivos de uso geral, como computadores pessoais e dispositivos móveis, como smartphones, além de alimentarem a Internet, que liga milhares de milhões de computadores e utilizadores.
Os primeiros computadores deveriam ser usados apenas para cálculos. Instrumentos manuais simples, como o ábaco, ajudam as pessoas a fazer cálculos desde os tempos antigos. No início da Revolução Industrial, alguns dispositivos mecânicos foram construídos para automatizar tarefas longas e tediosas, como padrões de orientação para teares. Máquinas elétricas mais sofisticadas faziam cálculos analógicos especializados no início do século XX. As primeiras máquinas de calcular eletrônicas digitais foram desenvolvidas durante a Segunda Guerra Mundial, tanto eletromecânicas quanto utilizando válvulas termiônicas. Os primeiros transistores semicondutores no final da década de 1940 foram seguidos pelo MOSFET baseado em silício (transistor MOS) e pelas tecnologias de chip de circuito integrado monolítico no final da década de 1950, levando ao microprocessador e à revolução do microcomputador na década de 1970. A velocidade, potência e versatilidade dos computadores têm aumentado dramaticamente desde então, com a contagem de transistores aumentando rapidamente (a lei de Moore observou que a contagem dobrou a cada dois anos), levando à Revolução Digital durante o final do século XX e início do século XXI.
Convencionalmente, um computador moderno consiste em pelo menos um elemento de processamento, normalmente uma unidade central de processamento (CPU) na forma de um microprocessador, juntamente com algum tipo de memória de computador, normalmente chips de memória semicondutores. O elemento de processamento realiza operações aritméticas e lógicas e uma unidade de sequenciamento e controle pode alterar a ordem das operações em resposta às informações armazenadas. Os dispositivos periféricos incluem dispositivos de entrada (teclados, mouses, joystick, etc.), dispositivos de saída (telas de monitores, impressoras, etc.) e dispositivos de entrada/saída que executam ambas as funções (por exemplo, a tela sensível ao toque da década de 2000). Os dispositivos periféricos permitem que informações sejam recuperadas de uma fonte externa e permitem que os resultados das operações sejam salvos e recuperados.
Um computador não precisa ser eletrônico, nem mesmo ter processador, nem memória RAM, nem mesmo disco rígido. Embora o uso popular da palavra "computador" seja sinônimo de computador eletrônico pessoal, uma definição moderna típica de computador é: " Um dispositivo que computa, especialmente uma máquina eletrônica programável [geralmente] que executa alto desempenho. acelerar operações matemáticas ou lógicas ou que reúna, armazene, correlacione ou de outra forma processe informações”. De acordo com esta definição, qualquer dispositivo que processe informações é qualificado como um computador.[1]
Dispositivos têm sido usados para auxiliar em processos de contagem há milhares de anos, principalmente usando correspondência um-a-um com os próprios dedos. O primeiro dispositivo de contagem era provavelmente uma forma de bastão de contagem. Mais tarde, os auxílios para manutenção de registros em todo o Crescente Fértil incluíam cálculos (esferas de argila, cones, etc.) que representavam contagens de itens, provavelmente gado ou grãos, selados em recipientes ocos de argila não cozidos. O uso de varetas de contagem é um exemplo.[2]
Acredita-se que o mecanismo de Anticítera seja o mais antigo computador analógico mecânico conhecido, de acordo com Derek J. de Solla Price.[3] Ele foi projetado para calcular posições astronômicas. Foi descoberto em 1901 nos destroços de Anticítera, na ilha grega de Anticítera, entre Citera e Creta, e foi datado de aproximadamente 100 a.C.. Dispositivos de complexidade comparável ao mecanismo de Anticítera só reapareceriam no século XIV.[4]
Muitos auxílios mecânicos para cálculo e medição foram construídos para uso astronômico e de navegação. O planisfério era um mapa estelar inventado pelo persa Albiruni no início do século XI.[5] O astrolábio foi inventado no mundo helenístico no século I ou II a.C. e é frequentemente atribuído ao grego Hiparco. Uma combinação do planisfério e da dioptria, o astrolábio era efetivamente um computador analógico capaz de resolver vários tipos diferentes de problemas na astronomia esférica. Um astrolábio incorporando um calendário mecânico[6][7] e rodas dentadas foi inventado por Abi Bakr de Isfahan, Pérsia, em 1235.[8] Albiruni inventou o primeiro astrolábio do calendário lunissolar com engrenagens mecânicas,[9] uma das primeiras máquinas de processamento de conhecimento com fio fixo[10] com um trem de engrenagens e rodas dentadas, por volta do ano 1000.[11]
O ábaco foi inicialmente usado para tarefas aritméticas. O ábaco romano foi desenvolvido a partir de dispositivos já usados por volta de 2.400 a.C. na Babilônia. Desde então, muitas outras formas de tábuas ou tabelas de cálculo foram inventadas. Numa casa de contagem europeia medieval, um pano xadrez era colocado sobre uma mesa e marcadores eram movidos sobre ele de acordo com certas regras, como uma ajuda para calcular somas de dinheiro.[12]
O planímetro era um instrumento manual para calcular a área de uma figura fechada traçando-a com uma ligação mecânica.[13] A régua de cálculo foi inventada por volta de 1620-1630 pelo clérigo inglês William Oughtred, logo após a publicação do conceito de logaritmo. É um computador analógico operado manualmente para fazer multiplicação e divisão.[14]
Na década de 1770, Pierre Jaquet-Droz, um relojoeiro suíço, construiu um boneco mecânico (autômato) que conseguia escrever segurando uma caneta de pena. Ao mudar o número e a ordem de suas rodas internas, letras diferentes e, portanto, mensagens diferentes, poderiam ser produzidas. Na verdade, ele poderia ser “programado” mecanicamente para ler instruções. Junto com outras duas máquinas complexas, o boneco está no Musée d'Art et d'Histoire de Neuchâtel, na Suíça, e ainda funciona.[15]
Em 1831-1835, o matemático e engenheiro Giovanni Plana desenvolveu uma máquina de calendário perpétuo, que, através de um sistema de polias e cilindros e mais, poderia prever o calendário perpétuo para cada ano de 0 dC (ou seja, 1 aC) a 4000 dC, acompanhando anos bissextos e duração variável do dia.[16] A máquina de previsão de marés inventada pelo cientista escocês Sir William Thomson em 1872 foi de grande utilidade para a navegação em águas rasas. Ele usou um sistema de roldanas e fios para calcular automaticamente os níveis de maré previstos para um determinado período em um local específico.[17]
O analisador diferencial, um computador mecânico analógico projetado para resolver equações diferenciais por integração, utilizou mecanismos de roda e disco para realizar a integração. Em 1876, Sir William Thomson já havia discutido a possível construção de tais calculadoras, mas ficou frustrado com o torque de saída limitado dos integradores de esfera e disco.[18]
Na década de 1890, o engenheiro espanhol Leonardo Torres Quevedo começou a desenvolver uma série de máquinas analógicas avançadas que poderiam resolver raízes reais e complexas de polinômios,[19][20][21][22] que foram publicadas em 1901 pela Academia de Ciências de Paris.[23]
Charles Babbage, engenheiro mecânico e polímata inglês, originou o conceito de computador programável. Considerado o “pai do computador”, ele conceituou e inventou o primeiro computador mecânico no início do século XIX.[24]
Depois de trabalhar em seu motor diferencial, ele anunciou sua invenção em 1822, em um artigo para a Royal Astronomical Society, intitulado "Nota sobre a aplicação de máquinas ao cálculo de tabelas astronômicas e matemáticas",[25] ele também o projetou para auxiliar em cálculos de navegação. Em 1833 ele percebeu que um projeto muito mais geral, um motor analítico, era possível. A entrada de programas e dados deveria ser fornecida à máquina por meio de cartões perfurados, método utilizado na época para direcionar teares mecânicos. Para saída, a máquina teria uma impressora, um plotter de curvas e uma campainha. A máquina também seria capaz de perfurar números em cartões para serem lidos posteriormente. Incorporava também uma unidade lógica aritmética, controle de fluxo na forma de ramificações e loops condicionais e memória integrada, tornando-o o primeiro projeto de um computador de uso geral que poderia ser descrito em termos modernos como Turing completude.[26][27]
Em sua obra Essays on Automatics publicada em 1914, o espanhol Leonardo Torres Quevedo escreveu uma breve história dos esforços de Babbage na construção de uma máquina diferencial mecânica e uma máquina analítica. O artigo contém o projeto de uma máquina capaz de calcular fórmulas como , para uma sequência de conjuntos de valores. Toda a máquina deveria ser controlada por um programa somente leitura, completo com provisões para ramificação condicional. Ele também introduziu a ideia da aritmética de vírgula flutuante.[28][29][30] Em 1920, para comemorar o 100º aniversário da invenção do aritmômetro, Torres apresentou em Paris o Aritmômetro Eletromecânico, que permitia ao usuário inserir problemas aritméticos por meio de um teclado, calcular e imprimir os resultados,[31][32][33][34] demonstrando a viabilidade de um motor analítico eletromecânico.[35]
Durante a primeira metade do século XX, muitas necessidades de computação científica foram atendidas por computadores analógicos cada vez mais sofisticados, que usavam um modelo mecânico ou elétrico direto do problema como base para a computação. No entanto, estes não eram programáveis e geralmente careciam da versatilidade e precisão dos computadores digitais modernos.[36]
O analisador diferencial, um computador analógico mecânico projetado para resolver equações diferenciais por integração usando mecanismos de roda e disco, foi conceituado em 1876 por James Thomson, o irmão mais velho do mais famoso Sir William Thomson.[18] Em 1927, o equipamento foi construído por H. L. Hazen e Vannevar Bush no MIT. Isto se baseou nos integradores mecânicos de James Thomson e nos amplificadores de torque inventados por H. W Nieman.. Uma dúzia desses dispositivos foram construídos antes de sua obsolescência se tornar óbvia. Na década de 1950, o sucesso dos computadores eletrônicos digitais significou o fim da maioria das máquinas de computação analógicas, mas os computadores analógicos permaneceram em uso durante a década de 1950 em algumas aplicações especializadas, como educação (régua de cálculo) e aeronaves (sistemas de controle).[37][38]
Em 1938, a Marinha dos Estados Unidos desenvolveu um computador eletromecânico analógico pequeno o suficiente para ser usado a bordo de um submarino. Este foi o Torpedo Data Computer, que utilizou trigonometria para resolver o problema de disparar um torpedo contra um alvo em movimento.[41] Durante a Segunda Guerra Mundial, dispositivos semelhantes também foram desenvolvidos em outros países. Os primeiros computadores digitais eram eletromecânicos ; interruptores elétricos acionavam relés mecânicos para realizar o cálculo. Esses dispositivos tinham uma velocidade operacional baixa e acabaram sendo substituídos por computadores totalmente elétricos muito mais rápidos, originalmente usando tubos de vácuo. O Z2, criado pelo engenheiro alemão Konrad Zuse em 1939 em Berlim, foi um dos primeiros exemplos de computador eletromecânico.[42]
Em 1941, Zuse seguiu sua máquina anterior com o Z3, o primeiro computador digital eletromecânico programável e totalmente automático do mundo.[43][44] O Z3 foi construído com 2.000 relés, implementando um comprimento de palavra de 22 bits que operava em uma frequência de clock de cerca de 5–10 Hz.[45]
O código do programa foi fornecido em filme perfurado enquanto os dados podiam ser armazenados em 64 palavras de memória ou fornecidos pelo teclado. Era bastante semelhante às máquinas modernas em alguns aspectos, sendo pioneiro em vários avanços, como os números de vírgula flutuante. Em vez do sistema decimal mais difícil de implementar (usado no projeto anterior de Charles Babbage), o uso de um sistema binário significava que as máquinas de Zuse eram mais fáceis de construir e potencialmente mais confiáveis, dadas as tecnologias disponíveis na época.[46] O Z3 não era em si um computador universal, mas poderia ser estendido para ter Turing completude.[47][48]
O próximo computador de Zuse, o Z4, tornou-se o primeiro computador comercial do mundo; após atraso inicial devido à Segunda Guerra Mundial, foi concluído em 1950 e entregue à ETH Zurique.[49] O computador foi fabricado pela própria empresa de Zuse, Zuse KG, fundada em 1941 como a primeira empresa com o único objetivo de desenvolver computadores em Berlim.[49]
Os elementos de circuitos puramente eletrônicos logo substituíram seus equivalentes mecânicos e eletromecânicos, ao mesmo tempo em que o cálculo digital substituiu o analógico. O engenheiro Tommy Flowers, trabalhando na Post Office Research Station em Londres na década de 1930, começou a explorar o possível uso da eletrônica para a central telefônica. Os equipamentos experimentais que ele construiu em 1934 entraram em operação cinco anos depois, convertendo uma parte da rede de central telefônica em um sistema eletrônico de processamento de dados, utilizando milhares de tubos de vácuo.[36] Nos Estados Unidos, John Vincent Atanasoff e Clifford E. Berry da Iowa State University desenvolveram e testaram o Atanasoff–Berry Computer (ABC) em 1942,[50] o primeiro "computador digital eletrônico automático".[51] Esse projeto também era totalmente eletrônico e usava cerca de 300 válvulas a vácuo, com capacitores fixados em um tambor giratório mecanicamente para memória.[52]
Durante a Segunda Guerra Mundial, os decifradores britânicos em Bletchley Park obtiveram vários sucessos na quebra de comunicações militares alemãs criptografadas. A máquina de criptografia alemã, Enigma, foi atacada pela primeira vez com a ajuda de bombas eletromecânicas, muitas vezes comandadas por mulheres.[53][54] Para decifrar a mais sofisticada máquina alemã, a Lorenz SZ 40/42, usada para comunicações de alto nível do Exército, Max Newman e seus colegas contrataram Flowers para construir o Colossus.[52] Ele passou onze meses, desde o início de fevereiro de 1943, projetando e construindo a máquina.[55] Após um teste funcional em dezembro de 1943, o Colossus foi enviado para Bletchley Park, onde foi entregue em 18 de janeiro de 1944[56] e decifrou sua primeira mensagem em 5 de fevereiro.[52]
Colossus foi o primeiro computador programável digital eletrônico do mundo.[36] Utilizava um grande número de válvulas (tubos de vácuo). Ele tinha entrada de fita de papel e era capaz de ser configurado para executar uma variedade de operações lógicas booleanas em seus dados, mas não era Turing-completo. Nove Colossi Mk II foram construídos (o Mk I foi convertido em Mk II perfazendo dez máquinas no total). O Colossus Mark I continha 1.500 válvulas termiônicas (tubos), mas o Mark II com 2.400 válvulas era cinco vezes mais rápido e mais simples de operar do que o Mark I, acelerando bastante o processo de decodificação.[57][58]
O ENIAC (Electronic Numerical Integrator and Computer) foi o primeiro computador eletrônico programável construído nos Estados Unidos. Embora fosse semelhante ao Colossus, era muito mais rápido, mais flexível e tinha Turing completude. Assim como o Colossus, um “programa” no ENIAC era definido pelos estados de seus patch cables e switches, muito longe dos programas armazenados nas máquinas eletrônicas que vieram depois. Depois que um programa era escrito, ele precisava ser configurado mecanicamente na máquina com reinicialização manual de plugues e interruptores. As programadoras do ENIAC eram seis mulheres, muitas vezes conhecidas coletivamente como "meninas ENIAC".[59][60]
Ele combinava a alta velocidade da eletrônica com a capacidade de ser programado para muitos problemas complexos. Podia somar ou subtrair 5 mil vezes por segundo, mil vezes mais rápido do que qualquer outra máquina. Também tinha módulos para multiplicar, dividir e raiz quadrada. A memória de alta velocidade foi limitada a 20 palavras (cerca de 80 bytes). Construído sob a direção de John Mauchly e J. Presper Eckert na Universidade da Pensilvânia, o desenvolvimento e construção do ENIAC duraram de 1943 até a plena operação no final de 1945. A máquina era enorme, pesando 30 toneladas, consumindo 200 quilowatts de energia elétrica e continha mais de 18 mil tubos de vácuo, 1.500 relés e centenas de milhares de resistores, capacitores e indutores.[61]
O princípio do computador moderno foi proposto por Alan Turing em seu artigo seminal de 1936,[62] On Computable Numbers, onde descreveu um dispositivo simples que chamou de "máquina de computação universal" e que hoje é conhecido como máquina de Turing universal. Ele provou que tal máquina é capaz de computar qualquer coisa que seja computável executando instruções (programa) armazenadas em fita, permitindo que a máquina seja programável. O conceito fundamental do projeto de Turing é o programa armazenado, onde todas as instruções de computação são armazenadas na memória. Von Neumann reconheceu que o conceito central do computador moderno se deveu a este artigo.[63] As máquinas de Turing são até hoje um objeto central de estudo na teoria da computação. Exceto pelas limitações impostas por seus armazenamentos de memória finitos, os computadores modernos são considerados Turing-completos, ou seja, possuem capacidade de execução de algoritmos equivalente a uma máquina de Turing universal.[64][65]
As primeiras máquinas de computação tinham programas fixos. A mudança de sua função exigiu a religação e a reestruturação da máquina.[52] Com a proposta do computador com programa armazenado, que pode armazenar na memória um conjunto de instruções (um programa ) que detalha a computação, isso mudou. A base teórica para este tipo de computador foi apresentada por Alan Turing em seu artigo de 1936. Em 1945, Turing ingressou no Laboratório Nacional de Física do Reino Unido e começou a trabalhar no desenvolvimento de um computador digital com programa eletrônico armazenado. Seu relatório de 1945, "Calculadora Eletrônica Proposta", foi a primeira especificação para tal dispositivo. John von Neumann, da Universidade da Pensilvânia, também divulgou seu primeiro rascunho de relatório sobre o EDVAC em 1945.[36]
O Manchester Baby foi o primeiro computador com programas armazenados do mundo. Foi construído na Universidade de Manchester, na Inglaterra, por Frederic C. Williams, Tom Kilburn e Geoff Tootill, e executou seu primeiro programa em 21 de junho de 1948.[66] Ele foi projetado como uma plataforma de teste para o tubo Williams, o primeiro dispositivo de armazenamento digital de acesso aleatório.[67] Embora o computador tenha sido descrito como “pequeno e primitivo” em uma retrospectiva de 1998, foi a primeira máquina funcional a conter todos os elementos essenciais para um computador eletrônico moderno.[68] Assim que o Baby demonstrou a viabilidade de seu design, iniciou-se um projeto na universidade para transformá-lo em um computador praticamente útil, o Manchester Mark 1, que rapidamente se tornou o protótipo do Ferranti Mark 1, o primeiro computador de uso geral disponível comercialmente no mundo.[69] Construído por Ferranti, foi entregue à Universidade de Manchester em fevereiro de 1951. Pelo menos sete dessas máquinas posteriores foram entregues entre 1953 e 1957, uma delas para os laboratórios da Shell em Amsterdã.[70] Em outubro de 1947, os diretores da empresa britânica de catering J. Lyons & Company decidiram assumir um papel ativo na promoção do desenvolvimento comercial de computadores. O computador LEO I de Lyons, inspirado no Cambridge EDSAC de 1949, tornou-se operacional em abril de 1951 e executou o primeiro trabalho rotineiro de computador de escritório do mundo.[71]
O conceito de transistor de efeito de campo foi proposto por Julius Edgar Lilienfeld em 1925. John Bardeen e Walter Brattain, enquanto trabalhavam com William Shockley no Bell Labs, construíram o primeiro transistor funcional, o Transistor de contato pontual, em 1947, que foi seguido pelo transistor de junção bipolar de Shockley em 1948.[72][73] A partir de 1955, os transistores substituíram os tubos de vácuo nos projetos de computadores, dando origem à "segunda geração" de computadores. Comparados aos tubos de vácuo, os transistores têm muitas vantagens: são menores e requerem menos energia que os tubos de vácuo, portanto emitem menos calor. Os transistores de junção eram muito mais confiáveis que os tubos de vácuo e tinham vida útil mais longa e indefinida. Computadores transistorizados poderiam conter dezenas de milhares de circuitos lógicos binários em um espaço relativamente compacto. No entanto, os primeiros transistores de junção eram dispositivos relativamente volumosos e difíceis de fabricar em produção em massa, o que os limitava a uma série de aplicações especializadas.[74]
Na Universidade de Manchester, no Reino Unido, uma equipe sob a liderança de Tom Kilburn projetou e construiu uma máquina usando os transistores recém-desenvolvidos em vez de válvulas.[75] Seu primeiro computador transistorizado e o primeiro do mundo, estava operacional em 1953, e uma segunda versão foi concluída lá em abril de 1955. No entanto, a máquina utilizou válvulas para gerar seus 125 formas de onda de clock de kHz e no circuito para ler e escrever em sua memória de tambor magnético, portanto não foi o primeiro computador completamente transistorizado. Essa distinção vai para o Harwell CADET de 1955,[76] construído pela divisão de eletrônica do Estabelecimento de Pesquisa de Energia Atômica em Harwell.[76][77]
O transistor de efeito de campo de óxido metálico-silício (MOSFET, sigla em inglês), também conhecido como transistor MOS, foi inventado por Mohamed M. Atalla e Dawon Kahng no Bell Labs em 1959.[78] Foi o primeiro transistor verdadeiramente compacto que pôde ser miniaturizado e produzido em massa para uma ampla gama de usos[74] Com sua alta escalabilidade[79] e consumo de energia muito menor e maior densidade do que os transistores de junção bipolar,[80] o MOSFET tornou possível a construção de circuitos integrados de alta densidade.[81][82] Além do processamento de dados, também possibilitou o uso prático de transistores MOS como elementos de armazenamento de células de memória, levando ao desenvolvimento da memória semicondutora MOS, que substituiu a anterior memória de núcleo magnético em computadores. O MOSFET levou à revolução dos microcomputadores[83] e tornou-se a força motriz por trás da revolução dos computadores.[84][85] O MOSFET é o transistor mais amplamente utilizado em computadores[86][87] e é o bloco de construção fundamental da indústria eletrônica digital.[88]
O próximo grande avanço no poder da computação veio com o advento do circuito integrado (CI). A ideia do circuito integrado foi concebida pela primeira vez por um cientista de radar que trabalhava para o Royal Radar Establishment do Ministério da Defesa do Reino Unido, Geoffrey W. A. Dummer, que apresentou a primeira descrição pública de um circuito integrado no Simpósio sobre Progresso em Componentes Eletrônicos de Qualidade em Washington, DC, em 7 de maio de 1952.[89]
Os primeiros CIs funcionais foram inventados por Jack Kilby da Texas Instruments e Robert Noyce da Fairchild Semiconductor.[90] Kilby registrou suas ideias iniciais sobre o circuito integrado em julho de 1958, demonstrando com sucesso o primeiro exemplo integrado funcional em 12 de setembro de 1958.[91] Em seu pedido de patente de 6 de fevereiro de 1959, Kilby descreveu seu novo dispositivo como "um corpo de material semicondutor ... em que todos os componentes do circuito eletrônico estão completamente integrados".[92][93] No entanto, a invenção de Kilby foi um circuito integrado híbrido (CI híbrido), em vez de um chip de circuito integrado (CI) monolítico.[94] O CI de Kilby tinha conexões de fios externos, o que dificultava sua produção em massa.[95]
Noyce também teve sua própria ideia de um circuito integrado meio ano depois de Kilby. Sua invenção foi o primeiro chip CI verdadeiramente monolítico.[96][95] Seu chip resolveu muitos problemas práticos que o de Kilby não resolveu. Produzido na Fairchild Semiconductor, era feito de silício, enquanto o chip de Kilby era feito de germânio. O CI monolítico de Noyce foi fabricado usando o processo planar, desenvolvido por seu colega Jean Hoerni no início de 1959. Por sua vez, o processo planar foi baseado no trabalho de Mohamed M. Atalla sobre passivação de superfícies de semicondutores por dióxido de silício no final da década de 1950.[97][98][99]
Os CIs monolíticos modernos são predominantemente circuitos integrados MOS (semicondutores de óxido metálico), construídos a partir de MOSFETs (transistores MOS).[100] O primeiro MOS CI experimental a ser fabricado foi um chip de 16 transistores construído por Fred Heiman e Steven Hofstein na RCA em 1962.[101] A General Microelectronics introduziu mais tarde o primeiro MOS CI comercial em 1964,[102] desenvolvido por Robert Norman.[101] Após o desenvolvimento do transistor MOS de porta auto-alinhada (porta de silício) por Robert Kerwin, Donald Klein e John Sarace no Bell Labs em 1967, o primeiro MOS CI de porta de silício com portas auto-alinhadas foi desenvolvido por Federico Faggin em Fairchild Semicondutor em 1968.[103] Desde então, o MOSFET se tornou o componente de dispositivo mais crítico nos CIs modernos.[100]
O desenvolvimento do circuito integrado MOS levou à invenção do microprocessador[104][105] e anunciou uma explosão no uso comercial e pessoal de computadores. Embora a questão de qual dispositivo exatamente foi o primeiro microprocessador seja controversa, em parte devido à falta de acordo sobre a definição exata do conceito de "microprocessador", é amplamente indiscutível que o primeiro microprocessador de chip único foi o Intel 4004,[106] projetado e realizado por Federico Faggin com sua tecnologia MOS IC de porta de silício,[104] junto com Ted Hoff, Masatoshi Shima e Stanley Mazor da Intel.[107] No início dos anos 1970, a tecnologia MOS IC permitiu a integração de mais de 10 mil transistores em um único chip.[82] Sistema em um chip (SoCs, sigla em inglês) são computadores completos em um microchip (ou chip) do tamanho de uma moeda.[108]
Os primeiros computadores móveis eram pesados e funcionavam com energia elétrica. O IBM 5100 de 23 quilos era um dos primeiros exemplos. Portáteis posteriores, como o Osborne 1 e o Compaq Portable, eram consideravelmente mais leves, mas ainda precisavam ser conectados. Os primeiros laptops, como o Grid Compass, eliminaram esse requisito ao incorporar baterias - e com a contínua miniaturização dos recursos de computação e os avanços na vida útil da bateria portátil, os computadores portáteis cresceram em popularidade na década de 2000.[109]
Os mesmos desenvolvimentos dos computadores móveis permitiram que os fabricantes integrassem recursos de computação em telefones celulares no início dos anos 2000. Esses smartphones e tablets funcionam em diversos sistemas operacionais e recentemente se tornaram o dispositivo de computação dominante no mercado.[110] Eles são alimentados por SoCs.[108]
Os computadores podem ser classificados de várias maneiras diferentes, incluindo:
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.
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 chamadas registradores, que podem ser lidas e escritas muito mais rapidamente que em outros dispositivos de memória. São usadas frequentemente para evitar o acesso contínuo à memória principal cada vez que um dado é requisitado.
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, havendo também pesquisadores que afirmam haver a memória "terciá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.
A memória RAM (Random Access Memory) é uma sequência de células numeradas, cada uma contendo uma pequena quantidade de informação. A informação pode ser uma instrução para dizer ao computador o que fazer. As células podem conter também dados que o computador precisa para realizar uma instrução. Qualquer célula pode conter instrução ou dado, assim o que em algum momento armazenava dados pode armazenar instruções em outro momento. Em geral, o conteúdo de uma célula de memória pode ser alterado a qualquer momento, a memória RAM é um rascunho e não um bloco de pedra. As memórias RAM são denominadas genericamente de DRAM (RAM dinâmica) pelo fato de possuírem uma característica chamada refrescamento de memória, que tem a finalidade de regravar os dados armazenados em intervalos regulares de tempo, o que é necessário para a manutenção de seu conteúdo. O tamanho de cada célula, e o número de células, varia de computador para computador, e as tecnologias utilizadas para implementar a memória RAM variam bastante. Atualmente o mais comum é a implementação em circuitos integrados.
A memória ROM (Read-Only Memory) é aquela que só pode ser lida e os dados não são perdidos com o desligamento do computador. A diferença entre a memória RAM e a ROM é que a RAM aceita gravação, regravação e perda de dados. Mesmo se for enviada uma informação para ser gravada na memória ROM, o procedimento não é executado (esta característica praticamente elimina a criação de vírus que afetam a ROM). Um software gravado na ROM recebe o nome de firmware. Em computadores da linha IBM-PC eles são basicamente três, que são acessados toda vez que ligamos o computador, a saber: BIOS, POST e SETUP. Existe uma variação da ROM chamada memória preferencialmente de leitura que permite a re-gravação de dados. São as chamadas EPROM (Erasable Programmable Read Only Memory) ou EEPROM (Electrically Erasable Programmable Read-Only Memory).
A memória secundária ou memória de massa é usada para gravar grande quantidade de dados, que não são perdidos com o desligamento do computador, por um período longo de tempo. Exemplos de memória de massa incluem o disco rígido e mídias removíveis como o CD-ROM, o DVD, o disquete e o pen drive. Normalmente a memória secundária não é acessada diretamente pela ULA, mas sim por meio dos dispositivos de entrada e saída. Isso faz com que o acesso a essa memória seja muito mais lento do que o acesso a memória primária. Para isso cada dispositivo encontra-se com um buffer de escrita e leitura para melhoramento de desempenho. Supostamente, consideramos que a memória terciária está permanentemente ligada ao computador.
Sistemas mais complexos de computação podem incluir um terceiro nível de memória, com acesso ainda mais lento que o da memória secundária. Um exemplo seria um sistema automatizado de fitas contendo a informação necessária. A memória terciária pode ser considerada um dispositivo de memória secundária ou memória de massa colocado para servir um dispositivo de memória secundária. As tecnologias de memória usam materiais e processos bastante variados. Na informática, elas têm evoluído sempre em direção de uma maior capacidade de armazenamento, maior miniaturização, maior rapidez de acesso e confiabilidade, enquanto seu custo cai constantemente. Entretanto, a memória de um computador não se limita a sua memória individual e física, ela se apresenta de maneira mais ampla, e sem lugar definido (desterritorializada). Temos possibilidades de armazenar em diversos lugares na rede, podemos estar em Cairo e acessar arquivos que foram armazenados em sítios no Brasil. É crescente a tendência para o armazenamento das informações na memória do espaço virtual, ou o chamado ciberespaço, através de discos virtuais e anexos de e-mails. Isto torna possível o acesso a informação a partir de qualquer dispositivo conectado à Internet.
Os dispositivos de entrada e saída (E/S) são periféricos usados para a interação homem-computador. Nos computadores pessoais modernos, dispositivos comuns de entrada incluem o mouse (ou rato), o teclado, o digitalizador e a webcam. Dispositivos comuns de saída incluem a caixa de som, o |monitor[112] e a impressora. O que todos os dispositivos de entrada têm em comum é que eles precisam codificar (converter) a informação de algum tipo em dados que podem ser processados pelo sistema digital do computador. Dispositivos de saída por outro lado, descodificam os dados em informação que é entendida pelo usuário do computador. Neste sentido, um sistema de computadores digital é um exemplo de um sistema de processamento de dados. Processo este, que consiste basicamente em três fases: Entrada, Processamento e Saída. Entendemos por entrada todo o procedimento de alimentação de informações, que por sua vez serão processadas (fase de processamento) e após isso, são repassadas as respostas ao usuário (saída). Podemos ter dispositivos que funcionam tanto para entrada como para saída de dados, como o modem e o drive de disquete. Atualmente, outro dispositivo híbrido de dados é a rede de computadores.
Para interligar todos esses dispositivos existe uma placa de suporte especial, a placa-mãe, que através de barramentos, fios e soquetes conecta todos os dispositivos. Sua função inclui também a conexão de placas auxiliares que subcontrolam os periféricos de entrada e saída, como a placa de som (conecta-se com a caixa de som), a placa de vídeo (conecta-se com o monitor), placa de rede (conecta-se com a LAN) e o fax-modem (conecta-se com a linha telefônica). Nota-se que o barramento entre os componentes não constitui uma conexão ponto a ponto; ele pode conectar logicamente diversos componentes utilizando o mesmo conjunto de fios. O barramento pode utilizar uma interface serial ou uma interface paralela. Outros equipamentos adicionais usados em conjunto com a placa-mãe são o dissipador, um pequeno ventilador para resfriar o processador, e a fonte de energia, responsável pela alimentação de energia de todos os componentes do computador.
A principal característica dos computadores modernos, o que o distingue de outras máquinas, é que pode ser programado. Isto significa que uma "lista de instruções personlizadas" pode ser armazenada na memória e executadas posteriormente, de acordo com o usuário. As instruções executadas na ULA discutidas acima não são um rico conjunto de instruções como a linguagem humana. O computador tem apenas um limitado número de instruções bem definidas. Um exemplo típico de uma instrução existente na maioria dos computadores é "copie o conteúdo da posição de memória 123 para a posição de memória 456", "adicione o conteúdo da posição de memória 510 ao conteúdo da posição 511 e coloque o resultado na posição 507" e "se o conteúdo da posição 012 é igual a 0, a próxima instrução está na posição 678". Instruções são representadas no computador como números - o código para "copiar" poderia ser 007, por exemplo. O conjunto particular de instruções que um computador possui é conhecido como a linguagem de máquina do computador. Na prática, as pessoas não escrevem instruções diretamente na linguagem de máquina mas em uma linguagem de programação, que é posteriormente traduzida na linguagem de máquina através de programas especiais, como interpretadores e compiladores. Algumas linguagens de programação se aproximam bastante da linguagem de máquina, como o assembly (linguagem de baixo nível); por outro lado linguagens como o Prolog são baseadas em princípios abstratos e se distanciam bastante dos detalhes da operação da máquina (linguagens de alto nível).
A execução das instruções é tal como ler um livro. Apesar da pessoa normalmente ler cada palavra e linha em sequência, é possível que algumas vezes ela volte para pontos anteriores do texto de interesse ou passe sessões não interessantes. Da mesma forma, um computador que segue a arquitetura de von Neumann executa cada instrução de forma sequencial, da maneira como foram armazenadas na memória. Mas, através de instruções especiais, o computador pode repetir instruções ou avançá-las até que alguma condição seja satisfeita. Isso é chamado controle do fluxo e é o que permite que o computador realize tarefas repetitivamente sem intervenção humana. Uma pessoa usando uma calculadora pode realizar operações aritméticas como somar número apertando poucos botões. Mas somar sequencialmente os números de um a mil iria requerer apertar milhares de vezes os botões, com uma alta probabilidade de erro em alguma iteração. Por outro lado, computadores podem ser programados para realizar tal tarefa com poucas instruções, e a execução e extremamente rápida. Mas os computadores não conseguem pensar, eles somente executam as instruções que fornecemos. Um humano instruído, ao enfrentar o problema da adição explicado anteriormente, perceberia em algum momento que pode reduzir o problema usando a seguinte equação:
e chegar na mesma resposta correta com pouco trabalho. Alguns computadores modernos conseguem tomar algumas decisões para acelerar a execução dos programas ao prever instruções futuras e reorganizar a ordem de instruções sem modificar seu significado. Entretanto, os computadores ainda não conseguem determinar instintivamente uma maneira mais eficiente de realizar sua tarefa, pois não possuem conhecimento para tal.[113]
A característica definidora dos computadores modernos que os distingue de todas as outras máquinas é que eles podem ser programados. Isso quer dizer que algum tipo de instrução (o programa) pode ser dada ao computador, e ele irá processá-las. Os computadores modernos baseados na arquitetura de von Neumann geralmente possuem código de máquina na forma de uma linguagem de programação imperativa. Em termos práticos, um programa de computador pode consistir apenas em algumas instruções ou estender-se a muitos milhões de instruções, como fazem os programas para processadores de texto e navegadores web, por exemplo. Um típico computador moderno pode executar bilhões de instruções por segundo (gigaflops) e raramente comete erros ao longo de muitos anos de operação. Grandes programas de computador que consistem em vários milhões de instruções podem levar anos para serem escritos por equipes de programadores e, devido à complexidade da tarefa, quase certamente contêm erros. O design de programas pequenos é relativamente simples e envolve a análise do problema, coleta de entradas, uso de construções de programação dentro de linguagens, elaboração ou uso de procedimentos e algoritmos estabelecidos, fornecimento de dados para dispositivos de saída e soluções para o problema, conforme aplicável.[114] À medida que os problemas se tornam maiores e mais complexos, são encontrados recursos como subprogramas, módulos, documentação formal e novos paradigmas, como programação orientada a objetos.[115] Grandes programas envolvendo milhares de linhas de código requerem metodologias formais de software.[116] A tarefa de desenvolver grandes sistemas de software apresenta um desafio intelectual significativo.[117] Produzir software com uma confiabilidade aceitavelmente alta dentro de um cronograma e orçamento previsíveis tem sido historicamente difícil;[118] a disciplina acadêmica e profissional de engenharia de software concentra-se especificamente neste desafio.[119]
Erros em programas de computador são chamados de “bugs”. Podem ser benignos e não afetar a utilidade do programa ou ter apenas efeitos sutis. No entanto, em alguns casos, eles podem fazer com que o programa ou todo o sistema "trave", deixando de responder a entradas como cliques doo mouse ou pressionamentos de teclas, falhando completamente ou travando.[120] Caso contrário, bugs benignos às vezes podem ser aproveitados para fins maliciosos por um usuário inescrupuloso escrevendo um exploit, código projetado para tirar vantagem de um bug e interromper a execução adequada de um computador. Os bugs geralmente não são culpa do computador. Como os computadores apenas executam as instruções que recebem, os bugs são quase sempre o resultado de um erro do programador ou de um descuido cometido no design do programa. A almirante Grace Hopper, uma cientista da computação estadunidense e desenvolvedora do primeiro compilador, é creditada por ter usado pela primeira vez o termo "bugs" na computação depois que uma mariposa morta foi encontrada causando curto-circuito em um relé no computador Harvard Mark II em setembro de 1947.[121]
Um computador sempre precisa de no mínimo um programa em execução por todo o tempo para operar, que é chamado de sistema operacional (ou sistema operativo), que determina quais programas vão executar, quando, e que recursos (como memória e E / S) ele poderá utilizar. O sistema operacional também fornece uma camada de abstração sobre o hardware, e dá acesso aos outros programas fornecendo serviços, como programas gerenciadores de dispositivos ("drivers") que permitem aos programadores escreverem programas para diferentes máquinas sem a necessidade de conhecer especificidades de todos os dispositivos eletrônicos de cada uma delas.
Os computadores têm sido usados para coordenar informações entre vários locais desde a década de 1950. O sistema SAGE das forças armadas dos Estados Unidos foi o primeiro exemplo em grande escala de tal sistema, o que levou a uma série de sistemas comerciais para fins especiais, como o Sabre.[122] Na década de 1970, engenheiros de computação de instituições de pesquisa nos Estados Unidos começaram a conectar seus computadores usando tecnologia de telecomunicações. O esforço foi financiado pela ARPA (agora DARPA e a rede de computadores resultante foi chamada de ARPANET.[123]
As tecnologias que tornaram possível a Arpanet se espalharam e evoluíram. Com o tempo, a rede se espalhou para além das instituições acadêmicas e militares e ficou conhecida como Internet. O surgimento das redes envolveu uma redefinição da natureza e dos limites do computador. Os sistemas operacionais e aplicativos de computador foram modificados para incluir a capacidade de definir e acessar os recursos de outros computadores na rede, como dispositivos periféricos, informações armazenadas e similares, como extensões dos recursos de um computador individual. Inicialmente estas facilidades estavam disponíveis principalmente para pessoas que trabalhavam em ambientes de alta tecnologia, mas na década de 1990 a disseminação de aplicações como o e-mail e a World Wide Web, combinada com o desenvolvimento de tecnologias de rede rápidas e baratas como Ethernet e ADSL viu as redes de computadores tornarem-se quase onipresentes. Na verdade, o número de computadores conectados em rede está crescendo fenomenalmente. Uma grande proporção de computadores pessoais conecta-se regularmente à Internet para comunicar e receber informações. As redes “sem fio”, muitas vezes utilizando redes de telefonia móvel, significam que as redes estão se tornando cada vez mais onipresentes, mesmo em ambientes de computação móvel.[124]
Há pesquisas ativas para criar computadores não clássicos a partir de muitos novos tipos promissores de tecnologia, como computadores ópticos, computadores de DNA, computadores neurais e computadores quânticos. A maioria dos computadores são universais e são capazes de calcular qualquer função computável, e são limitados apenas pela sua capacidade de memória e velocidade de operação. No entanto, diferentes designs de computadores podem proporcionar desempenhos muito diferentes para problemas específicos; por exemplo, computadores quânticos podem quebrar alguns algoritmos de criptografia modernos (por fatoração quântica) muito rapidamente. De todas essas máquinas abstratas, um computador quântico é a mais promissora para revolucionar a computação.[125]