acho que eh bem por aih... eu tenho uma teoria de que muitas ideias sao deixadas de lado hoje em dia pq o software evolui de forma geologica, empilhando camadas de software novo em cima de sucessivas e vastas camadas de software antigo. como o cliente soh ve o chao em que pisa, a camada superficial, tudo que estah embaixo fica escondido. o hardware, por outro lado, costuma evoluir de uma forma mais biologica: nasce e morre continuamente, sendo que o novo hardware substitui completamente o antigo. nao raramente, o novo hardware eh uma versao melhor do hardware antigo, partilhando uma certa base genetica, porem um ente diferente. comparar um 68000 do final da decada de 70 com um 68060 da decada de 90 mostra bem isso: eles sao quase compativeis entre si, porem as diferencas tecnologicas sao gigantescas:
- processos: o 68000 usa NMOS, o que lhe permite arranhar os 8MHz, enquanto que o 68060 usa CMOS, o que lhe permite tranquilamente ir ateh os 100MHz, ou seja, mais de 10x de melhora.
- densidade: o 68000 tinha, ironicamente, 68000 transistores, contra quase 2.5 milhoes de transistores do 68060. embora pareca um "desperdicio", vale lembrar que o 68000 nao tinha espaco para cache on-chip, enquanto o 68060 possui duas caches de 8KB, alem de MMU e FPU integradas, reduzindo o custo. na pratica, aqui vale a pena considerar o custo: ter milhores de transistores nao eh exatamente ruim se custa pouca coisa a mais que milhares.
- eficiencia: o 68000 rodava uma instrucao, na melhor das hipoteses, a cada 4 clocks, contra duas instrucoes por clock no 68060, ou seja, melhor que 8x de melhora.
- compatibilidade: apesar de ter um design totalmente diferente, o 68060 eh perfeitamente compativel com o 68000. bom, eles foram escolhidos como exemplo especificamente pq este eh o ponto comum.
- custo vs beneficio: ironicamente, o 68000 ainda eh fabricado hoje em dia e fornece ateh 5MIPS de pico por 5 dolares. o 68060 deixou de ser fabricado faz tempo, mas em seu auge o 68060 capaz de atingir 200MIPS de pico era vendido por algo em torno de 50 dolares, ou seja, uma relacao 4x melhor. mas ele integra, pelo menos 4 chips em um: MPU, FPU, MMU e caches. assim a diferenca passa das 10x.
vale a pena enfatizar o segundo ponto: o espaco extra ocupado pelo 68060 nao significa que ele tenha um 68000 inteiro dento dele: muito pelo contrario, esse espaco eh usado para que ele tenha um 68000 que eh 8x mais eficiente, alem de embutir diversos circuitos que sao externos no 68000 (MMU, FPU e caches). em certo aspecto, o 68060 eh geneticamente compativel, mas nao eh um 68000, eh uma evolucao bastante melhorada. em uma media, o 68060 era 10x melhor que o 68000, mas geneticamente compativel (rodava o mesmo software).
bom, acredito que a pior referencia no lado do software seria o windows, mas nao conheco ele muito bem, entao eu pegaria o unix para fazer a mesmas comparacao:
- processos: dificil definir o que seria o equivalente em software, mas o unix na sua primeira versao era escrito em assembler para rodar bem em um PDP7 de menos de 1MHz. um uclinux moderno, por sua vez, eh inteiramente escrito em C e roda confortavel em maquinas relativamente pequenas, como o 68000 de 8MHz. ambos sao processadores CISC relativamente nao muito eficientes e eu chutaria que existe um gap aih de quase 10x na performance! mas a diferenca da linguagem provavelmente corresponde apenas a umas 2x no maximo. ou seja, mesmo escrevendo um assembler acima da media, muito provavelmente o acumulo geologico de camadas e cima de camadas faz o uclinux consumir uma quantidade expressiva de recursos computacionais.
- densidade: aqui acho que podemos pensar no tamanho do codigo e do binario. o unix v1, pelo que medi, consome 580KB, sendo uns 16KB o kernel. o uclinux, em contrapartida, tem um filesystem tipico de alguns megabytes (principalmente se vc colocar o compilador C, para fazer frente ao unix v1 que tem um integrado), sendo o kernel dificil de espremer em menos de 250KB. e aqui eu chutaria feio um gap de 10x na densidade. claro, escrever codigo em assembler faz com que o codigo fique compacto pq vc nao escreve muito, mas novamente, apenas a diferenca de linguagem nao explica totalmente a diferenca de tamanho. ao inves disso, acredito que a culpa eh justamente do codigo geologicamente acumulado. em conta-partida, claro, o uclinux faz muito mais coisas que o unix v1.
- eficiencia: aqui eh o ponto onde a coisa nivela: escolhi um processador onde o uclinux provavelmente tem um tempo de resposta similar a um PDP7. mas isso eh um grande chute!

- compatibilidade: varia entre excelente e bem meia boca. o acumulo geologico de codigo permite uma boa compatibilidade ateh: se vc fizer vista grossa para algumas coisas, seu codigo em C compila perfeito em ambos. infelizmente o unix v1 eh pre-K&R e a linguagem C dele tem umas diferencas sinistras que o compilador moderno nao engole, entao a compatibilidade nao eh realmente lah essas coisas. mas algumas coisas sao muito parecidas, inclusive as que nao sao muito eficientes. se vc vasculhar o filesystem, vai ver que os comandos sao meio que os mesmos. claro, o uclinux tem muito mais comandos e seus comandos tem muito mais opcoes, mas ateh mesmo os raramente usados nos dias de hoje estao lah, o que nos remete a evolucao geologica.
- custo vs beneficio: mais dificil ainda comparar... o PDP7 custava mais de 70 mil dolares, enquanto que uma maquina com um 68000 de 8MHz e alguns megabytes de memoria custa hoje em dia menos de 40 dolares. mas se formos recalibrar a coisa para os tempos modernos, provavelmente um processador com os recursos do PDP7 caberia em um chip de menos de 10 dolares. entao eu chutaria que o unix v1 teria uma relacao custo vs. beneficio 4x melhor que o uclinux. tem o aspecto da utilidade: o uclinux tem muito mais recursos, portanto tem potencial maior para beneficios. mas dependendo da aplicacao, ter tudo em um chip pode ser mais interessante do que espalhar em meia duzia de chips externos.
os exemplos nao sao necessariamente os melhores, mas na media temos 10x de diferenca. porem, diferentemente do hardware, onde o 68060 era evolucionariamente sempre melhor, o unix v1 e uclinux nao possuem essa relacao. o unix v1, na minha opiniao, tem um processo construtivo mais eficiente, mais compacto e provavelmente custaria menos hoje em dia. ele perde para o uclinux, em parte, no custo beneficio e provavelmente na compatibilidade, o que mostra que a evolucao nao eh perfeitamente genetica: no processo evolutico acumulatorio, parte da compatibilidade se perdeu em funcao das camadas mais novas. eh meio que um passo para frente, um passo para tras, nao sei se conseguem captar isso, mas na media vc fica no mesmo lugar... entao pq o uclinux parece substancialmente melhor do que o unix v1? claro, pq o diferente do mundo real, na computacao a parte com evolucao geologica (software) mora dentro da parte com evolucao biologica (hardware). e como o hardware avanca rapido, ele carrega o software junto! vc vai ver o uclinux rodando substancialmente mais rapido em um hardware de ponta rodando a 500MHz e com 500MB de ram. entao, se vc refizer a sequencia acima com um hardware de ponta, vc massacra o unix v1. bom, vc tambem pode rodar o unix v1 em um hardware de ponta e vaporizar o uclinux em termos de performance... bingo!
o fato eh que o contrario nao funciona: pegar um hardware qualquer e fazer update do software raramente vai melhorar performance. de fato, espera-se que o resultado seja o inverso. portanto, parece que eh o hardware quem carrega o software e nao o contrario: o hardware evolui mantendo sua genetica, mas gracas a processos continuos de vida e morte, o hardware novo eh substancialmente melhor que o antigo, embora existam ancioes, como o 68000, ainda em producao a preco de banana. no caso do software, a evolucao geologica eh implacavel: software antigo nao serve para nada! apesar disso, o software antigo constantemente estah lah embaixo das camadas do software novo. assim, a medida que o tempo passa, se vc nao atualizar o hardware, o software vai degradar mais e mais, ficando substancialmente pior que o antigo.
bom, esta eh a minha grande teoria da evolucao de software e hardware! o/ hahaha