O que o PC (Personal Computer) nos ensinou sobre “componentização”?
Publicado no TLC minipapers, em 16 Dez de 2022
As décadas de 70 e 80 foram épocas de intensa evolução para a informática, especialmente no hardware. Uma grande quantidade de computadores, processadores e fabricantes surgiram, como: Atari, Sinclair, Apple, Commodore, Oric, Radio Shack e inúmeros outros. Após o lançamento do PC (Personal Computer) da IBM, em agosto de 1981, todos os outros modelos se tornaram obsoletos e desapareceram do mercado, e mesmo hoje em dia, a arquitetura PC é dominante no mercado, seja em MacBooks ou PCs. Mas o que aprendemos com isto? Será que dá para inferir porque a arquitetura PC foi vencedora, e qual a semelhança com as arquiteturas de software modernas?
O primeiro ponto se refere aos componentes do PC. Desde a primeira versão, tanto o circuito de vídeo quanto o teclado foram criados de forma "destacável". Não sei se foi uma previsão, mas hoje sabemos que as interfaces com o usuário tendem a evoluir rapidamente.
Quando foi criado originalmente, o PC já utilizava uma placa e monitor de padrão CGA (color graphics adapter), que tinha uma resolução de 320x200 colorida ou 640x400 monocromática. Rapidamente evoluímos para EGA (enhanced graphics adapter), VGA (video graphics array), XGA (extended graphics array) e algumas outras no caminho. Todos os outros computadores da época tinham o circuito do vídeo "embutido" em uma única placa, o que não facilitava a manutenção. Para o teclado a mesma coisa, acabaram surgindo muitos teclados de padrões diferentes, com teclas mecânicas, mais finos, com trackpad embutido, para jogos, ou seja, o PC foi uma das primeiras implementações de "componentização" de hardware. Como a placa de vídeo ficava em um barramento padronizado, muitos fabricantes criaram placas com resoluções maiores e não precisava trocar a CPU cada vez que melhorava a qualidade do vídeo. Mas vejamos, não é exatamente isso o que fazemos com microsserviços hoje em dia? Trocamos um componente que é melhorado, corrigido ou modificado, afetando minimamente outros componentes da arquitetura?
Outro ponto importante foi a documentação. Em uma época em que ainda não existia o conceito de open source (1998), o IBM PC já vinha com um manual técnico que tinha todas as dimensões e esquemas, e todo o código da BIOS (basic I/O system), de forma que outras empresas poderiam evoluir com compatibilidade. Empresas como Dell, HP, Gateway e muitas outras surgiram criando clones do PC. A IBM explicou como fazer, assim como as iniciativas open source fazem hoje. Seria a IBM a primeira empresa a adotar uma iniciativa OpenSource de hardware no mercado? Fica a provocação. Foi inegável, as muitas empresas que se consolidaram ao redor da arquitetura PC tornaram todos os outros modelos obsoletos; na verdade, se olharmos os movimentos open source de hoje em dia, muitas vezes acabam fazendo o mesmo para o software.
Recomendados pelo LinkedIn
Outra prática adotada no PC foi o uso de componentes padronizados. Os fabricantes nesta época faziam malabarismos, juntavam circuitos dedicados em "ULAs" (unidades lógico-aritméticas), construídas com finalidades específicas. No PC, cada circuito integrado cuidava de uma parte específica da eletrônica, e eram "chips" de mercado. Existia um componente dedicado para transferências diretas de memória (DMA). Havia um coprocessador aritmético separado. O vídeo CGA usava um chip padronizado, assim com todos os outros componentes. Ou seja, ao invés de criar um computador e depois gerar componentes caros e específicos, a IBM optou por construir toda a arquitetura PC utilizando componentes que já existiam no mercado, e que rapidamente popularizaram. E não é que bem depois, em softwares surgiram conceitos como o "Single Responsibility" do S.O.L.I.D, que propuseram a mesma coisa? E como não comentar os Design Patterns, que também propunham a construção de sistemas utilizando componentes padronizados?
Enquanto os outros computadores tinham pouca preocupação com segurança do processamento, o PC tinha um nono bit na memória, chamado de "bit de paridade", que garantia a integridade da memória RAM (random access memory). Se algum ruído acontecesse e corrompesse a memória, imediatamente o PC travava, evitando que o dado corrompido causasse danos maiores em todo o restante do sistema. Ou seja, havia uma preocupação com a profissionalização da computação. Também fizemos isto inúmeras vezes no software, quando criamos os schemas para validar os XMLs (extensible markup language) e os algoritmos de criptografia, como RSA e muitos outros. Agora, olhando as implementações de software dos dias atuais e comparando com as idéias do hardware do PC no passado, dá para entender SIM porque essa arquitetura foi vencedora!
Para saber mais