Single core, dual-core, quad-core, hyperthreading... tudo coisas que nos relembram da constante evolução que o hardware tem tido desde... bem, desde que o primeiro transístor foi inventado. No entanto, o que é que isso verdadeiramente significa para o utilizador comum?
E se eu vos oferecesse uma máquina, que não tivesse apenas um CPU quad-core, mas 8 CPUs quad-core? E já agora, adicionamos 4 GPUs topo-de-gama, meia-dúzia de DSPs para atacar todo o tipo de processamento especial que puder ser necessário... e que custa apenas o mesmo que um PC normal? Loucura, não?
Não, porque... o que fariam com tal máquina? Estamos a falar de uma placa cheia de componentes electrónicos, e que - quando muito - teria um LED iluminado para indicar que estava "a funcionar". Mesmo que alguém se desse ao trabalho de lá colocar um Windows ou Linux a correr, não saberia tirar partido de todas as funcionalidades extra que o hardware permitiria.
Pelo que, o hardware, por si só... não chega!
Não chega se não tiver o elemento crítico que se segue... o software.
O software é responsável por usar (da forma mais eficiente, espera-se) o hardware disponível. Sem ele, um CPU, ou vários, são apenas componentes electrónicos que para nada servem. Por isso é que quando se pensa um PC não se pensa propriamente numa placa com chips e circuitos, mas sim no ambiente gráfico (ou de texto) que o sistema operativo apresenta ao utilizador.
Mas como todos sabemos, tal como o hardware, também o software evolui. Por cada funcionalidade que se tem há outras duas ou três que se gostariam de ter, mas que potencialmente necessitarão de mais recursos. E entramos na tal espiral que bem conhecemos: em que o software vai evoluindo e necessita de hardware mais potente, e o hardware vai ficando mais potente e os developers adicionam funcionalidades.
Este ciclo nem sempre é o mais eficiente: especialmente quando começa a haver algum desleixo por parte de alguma das partes. Não será incomum ver software que não é optimizado tanto quanto poderia ser, com a desculpa de "o hardware daqui por uns meses será mais potente e capaz de executar isto da forma que se espera".
Um bom exemplo de um ciclo que escapa a esta espiral são as consolas de jogos. Uma vez que são sistemas que permanecem inalterados durante todo o seu período de vída (ao contrário dos PCs, ou equipamentos mobile, que praticamente duplicam a sua potência de ano para ano), permitem - ou obrigam - a que os developers aprendam a tirar o máximo partido do hardware que têm disponíveis. Isso é algo que se pode ver facilmente, comparando os jogos que são lançados na fase inicial de uma consola, com os que são lançados anos depois, na sua fase final.
É o exemplo da simbiose que é necessária entre o hardware e o software, onde ambos são capazes de tirar partido um do outro da melhor forma possível. Uma simbiose que nem sempre será atingida na proporção ideal em plataformas que estão em rápida evolução e/ou que existem em infinitas combinações e variedade, como acontece com os "PCs" e os equipamentos mobile.
Poderemos ver isso com um desperdício, onde a rapidez da mudança não permite tirar total partido do hardware e software... mas poderá também ser visto por um lado mais positivo, de que há esperança que - mais cedo ou mais tarde - os developers comecem a concentrar-se em tirar o máximo partido do hardware que existe agora, e não apenas do que "virá a seguir".
(E será bom recordar de que nem tudo são maus exemplo, e que felizmente também temos bons exemplos no mercado. :)