2007/11/22

Tecnologia subvertida: Anda tudo mal habituado

Não posso deixar de me rir sempre que leio artigos deste género, em que toda a gente parece andar preocupada com a velocidade de arranque dos PCs.
É que... da última vez que olhei, os PCs já cá andam há mais de uma dezena de anos, e - só agora é que estão preocupados com os tempos de arranque?

Eu fico doente só de pensar em como algumas coisas evoluiram de forma tão desproporcionada.
Ora vejamos, há 10 atrás (portanto, no século passado) andava tudo "doido" com um pequeno computador chamado Amiga 500.

E perguntam vocês: o que tem isso a ver?

Bem... é simples... num CPU que corria a 7Mhz, e com 512Kb de RAM tinhamos já um ambiente gráfico que permitia tudo o que hoje se faz em máquina incomparavelmente mais potentes.

Hoje, 10 anos passados, temos máquinas com CPUs a correr a 500x aquela frequência, com 4000x mais memória, e o resultado: o sistema operativo pode demorar minutos a arrancar, clica-se num ficheiro de texto e tem que se esperar longos segundos até que um programa de texto o abra, e outras coisas que tais! Dificilmente uma experiência 500x ou 4000x superior à que tinhamos há 10 anos atrás...

Custa-me a aceitar isto.

Acho inadmissível um sistema operativo (ou qualquer outro programa) acabado de instalar ocupar Gigabytes de espaço em disco.
Tou bem ciente de todas as complexidades dos sistemas operativos actuais, desde a detecção de milhares de dispositivos "plug'n'play", protocolos de rede, etc. etc. Mas mesmo considerando tudo isso - não me convencem.

Aliás, já repararam como - na maior parte das vezes - os melhores programas e utilitários são os mais pequenos???
Vejam o caso do uTorrent, um programa que nem precisa de instalação e que ocupa uns "monstruosos" 170Kb!
AntiVirus que ocupam centenas de Megabytes!?! Juízo!!! Há antivirus gratuitos que ocupam uma fracção do espaço e recursos usados por esses mastodontes que muitas vezes vêm "oferecidos" de origem nos computadores novos. Não admira que quem compre um computador de entrada-de-gama hoje em dia, fique com uma arrastadeira que se porta de pior forma que um computador de 400Mhz com 64Mb de Ram a correr o Windows 98!

Bem, naqueles dias, um qualquer programa ou sistema operativo podia ser programado por uma única pessoa (ou um pequeno grupo) - e sendo essa pessoa um bom programador, obtinha-se um "milagre": um programa eficiente, ocupando o mínimo de recursos e com a melhor performance possível.

Hoje em dia, são centenas/milhares de programados"a monte" encubidos da tarefa de fazer um programa. Sair algo que funcione já é um milagre por si só; e a optimização não me parece que seja um ponto a ter em conta: "Ah? Demora 10 segundos a abrir o Acrobat Reader? Não faz mal, eles esperam..."

Como se admite que um CPU que pode executar mais de 20 mil milhões de operações por segundo demore mais que 0,5s a fazer algo tão simples como abrir um programa?
Certo, temos que considerar o tempo de acesso ao disco, e a taxa de transferência - algo cada vez mais crucial à medida que os CPUs ficam tão potentes que basicamente passam a maior parte do tempo à espera das próximas instruções... mas um disco actual facilmente transfere 50MB/s... logo, a não ser que me expliquem que tipo de programa necessita de centenas de Megabytes... não percebo.

O "problema" não está no hardware, está no software!
A próxima revolução da informática não terá a ver com um avanço na potência do hardware (que a curto prazo vai restringir-se basicamente aumentar o número de cores por CPU) mas sim no software e nos interfaces com os utilizadores.

Vejam o caso do iPhone: será que tem algum hardware revolucionário? Não.
A única coisa relativamente original é o touchscreen com capacidade multitouch, tudo o resto é o mais comum possível. A diferença? Resume-se aquilo que é verdadeiramente importante: o interface e a usabilidade. O pessoal toca com o dedo, arrasta, a resposta é instantânea, a "experiência de utilização" resulta.
Ora imaginem se tivessem que esperar 10 segundos para esperar que os ícons rodassem, ou o ecrã mudasse de orientação!


Há muitas maneiras de fazer as coisas... mas infelizmente, por cada maneira "certa", há milhares de maneiras "menos certas". E actualmente, parecemos viver num mundo inundado por software mal feito - exceptuando as pequenas jóias que por aí andam, de programas que são a excepção à regra.

Quando faço um programa com Interface gráfico, sempre me preocupei que - além do programa fazer o que lhe compete - a interacção com o utilizador fosse sempre "instantânea". Com maior ou menor dificuldade, sempre o fiz, desde os tempos dos 486DX a 33Mhz.
Abro um qualquer programa, vejo o "refresh" do interface a piscar por todo o lado... ponho logo as mãos à cabeça! Se quem o programou nem soube fazer aquilo em condições, sabe-se lá como estarão as coisas que não estão à vista!

Talvez seja "panca" minha, talvez seja influência de ter crescido a ver pessoal a fazer coisas fantásticas e "impossíveis" em programas de 4 kbytes (ver o vídeo já aqui a seguir)...




Para finalizar, vejam só mais um vídeo de um sistema operativo actual (Xubuntu 7.10) a correr num Pentium III a 800Mhz com 128Mb de RAM e uma GeForce2 com 32Mb:



Ainda são da opinião que se está a utilizar da melhor forma os Gigahertz e Gigabytes que têm disponíveis nas vossas máquinas?


Actualização: Podes querer a "2ª parte" do desabafo, escrita anos depois, sobre a lentidão dos computadores.

13 comentários:

  1. e viva o Amiga! ;)

    http://blog.ebserver.org

    ResponderEliminar
  2. Sem dúvida!
    Os anos que tive que esperar, até que pudesse fazer num PC as coisas que fazia no Amiga!

    Sequenciador MIDI, sampler, coisas em Vídeo (o Scala era "fabulástico"!)
    Aliás... acho que algumas coisas nem hoje em dia consigo fazer com um PC! :)))

    ResponderEliminar
  3. Ainda me lembro a primeira vez que vi um "pc". Habituado que estava ao amiga, quase entrei em choque com um ecra cor de laranja e uma maquina que so fazia beeps!

    Onde estava o deluxe paint? o octamed? a interface grafica? todos aqueles programitas de copiar disquetes? as demos?

    ResponderEliminar
  4. Tchiii, as horas de uso que o meu drive de disquetes teve, a copiar o jogo Test Drive para os PCs...

    Aquele Xcopy no Amiga era uma maravilha a comer todo o tipo de protecções anti-cópia. :)

    ResponderEliminar
  5. É pah, ó Carlos... uma pérola este post! Perfeita a tua visão de jogo!

    Cada vez gosto mais do teu blog!

    ResponderEliminar
  6. Bem,
    o problema é que os programadores de hoje estão cada vez mais afastados do hardware.
    Vê-la o que acontece com coisas como o Java, ou o .Net por exemplo. O programador tem muito pouco controlo sobre o que se passa lá por debaixo.
    É certo que qualquer um hoje em dia desenvolve um programa ou faz uma aplicação, pois as ferramendas de codificação estão cada vez mais evoluídas. O mercado tb assim o exige, pois a velocidade de desenvolvimento deve ser cada vez maior e o time to market cada vez menor.
    A consequencia directa disto tudo, é software com menos qualidade do ponto de vista da performance.
    Tens tb o problema dos próprios SO (alguns) que te criam camadas de abstração do hw que não permitem tirar partido do mesmo.
    Enfim, bom post, e é uma discussão que dá pano para mangas.

    ResponderEliminar
  7. Toni, eu é que agradeço teres lido aquilo tudo... ehehe

    Assim dá gosto escrever, sabendo que alguém lê e comenta: quer concorde ou discorde. (mas obviamente é melhor quando concorda :)

    ResponderEliminar
  8. @Carlos Serrão.
    Sim, eu tou ciente de todas essas barreiras - mas havendo "vontade", tudo se ultrapassa.

    Quando trabalhava em DOS, tinha tudo à sob o meu controlo - já fazia interfaces gráficos antes de aparecer o Windows.

    Quando passei a trabalhar em ambiente windows, comecei com o Delphi e Visual Basic, e as coisas que fazia em VB eram praticamente "impossíveis" de fazer - basicamente usava o VB apenas como suporte: 90% das funções eram chamadas directas às librarias do Windows.

    Nos últimos anos, tenho andado em .net, e mesmo com todas as layers que ali estão por baixo, posso fazer-te o mesmo programa de uma forma "pisca-pisca", atirar os objectos pra la e esperar que o Windows faça a gestão, ou aplicar-me mais um bocado e fazer com que aquilo seja "perfeito".

    Bem sei que é complicado - grande parte dos programadores iniciados nem faz ideia das "entranhas" de tudo aquilo (de como funciona por dentro), é fazer e está feito (já para nao falar nas pressões de acabar o mais depressa possível).

    Mas é esse mesmo o problema... Fazer as coisas à pressão, ou fazê-las bem feitas... e infelizmente vivemos num mundo de "receitas" todas feitas à pressão (salvaguardando as devidas excepções - que felizmente existem).

    ResponderEliminar
  9. Bem,
    antes demais deixa-me que te diga que concordo contigo. Devemos ser da mesma altura, em termos de idade, e já vi que eras fã igualmente do initgraph() do Borland C/C++ ;-)
    Enfim, ...
    O problema reside na pressão que as empresas têm em colocar os seus produtos no mercado. Não é à toa que os produtos saem para o mercado cheios de bugs que vão sendo resolvidos de tempo a tempo.
    Por vezes nem é incompetência de quem os desenvolve, é mesmo mais pelo facto de que não existem tempo para mais. As funcionalidades vêm primeiro, a optimização, estabilidade e a performance vêm a seguir...
    Enfim, este é um problema complexo. E sempre ouvi dizer que a "pressa é a inimiga da perfeição".
    Por outro lado, essa proliferação de ferramentas quase RAD, que permitem que qualquer curioso não especialista em programação (categoria na qual me incluo) possa desenvolver o eu programazeco.
    É claro que para teres performance tens que baixar de nível, tens que recorrer de uma forma mais directa ao SO (quando podes) ou inclusivé a ASM para ganhar em performance.
    É um facto triste, que o aumento da potência do hardware, e a evolução dos SOs não se tenham traduzido em aumentos reais de performance para o utilizador.
    Vamos lá a ver se isto se altera rapidamente.

    ResponderEliminar
  10. Ehehe, o saudoso initGraph() :)

    Bem, isto que estamos a falar nem é uma questão de concordar ou não... Tudo isso que referes são factos inegáveis.

    Também admito que, em muitos casos o "suficientemente bom" chega perfeitamente... Mas daí até se interpôr na usabilidade diária...

    tipo as secas que se aguentam ao arrancar o Acrobat Reader, Photoshop, e outros que tais - ainda por cima quando facilmente poderiam haver opcões para aumentar essa velocidade: como fazem certos programas 3rd party, que desactivam aquelas opções que nao são usadas em 90% dos casos, passando os programas a arrancar "instantaneamente".

    Custava assim tanto essas empresas fazerem isso de origem? Quem precisasse do modo avançado activava essas opções - mas poupava a maioria da população de ter motivo de conversa a dizer que aquilo é uma seca.

    Já para não falar naqueles tais programas que depois desempenham as mesmas funções que eles, mas ocupando um centésimo do espaço e de forma muito mais rápida...

    Mas depois não havia necessidade de comprar um computador novo de X em X tempo... era um problema gravíssimo paraos fabricantes! :)

    ResponderEliminar
  11. Grande mensagem que transmitis-te... Faz-nos pensar se realmente isto evoluiu...

    ResponderEliminar
  12. Caro Carlos Martins,
    Como não tenho possibilidade de ir ao banco pedir um empréstimo para ir de férias para o Hawai faço férias online, i.e. abro o meu foto viewer, os meus walpapers e lá vai ele por esse mundo fora à borlu. Quando passeava ali pelos lados do Indico, eis que de repente dou com uma ilha e logo "Aberto até de Madrugada".
    Fiquei encantado, mais vale tarde que nunca.
    Já tenho uma idade um bocado assim a modos como que para o esquecido mas ainda me lembro do velho(?) Sepectrum por onde tudo começou com 16k de Ram.
    Foram os primeiros passos para o entretenimento e iniciar uns passos em programação, que me permitiram ter uma visão de como funciona um PC. Nunca passou de uma brincadeira de noviço amador que nunca fez nada mais que brincadeiras na horas vagas.
    A conversa vem a propósito do post que está lindo e claro e só para acrescentar que antes, dada a escassez de memória os programadores tinham de ter muito mais cuidado com os algoritmos, apurá-los, "catá-los", emagrecê-los, enfim, adaptá-los às memórias que tinham. Hoje na época da abundância(?) é um fartar vilanagem, é escrever sempre a direito repetindo, provávelmente, as mesmas rotinas porque já se esqueceram do que tinham feito antes e porque memória é mato. Será talvez por isso que os PCs de vez enquando teem um comportamente pouco educado.
    Como utilizador curioso do VB tipo vão de escada devo dizer-lhe que adorei este postal.

    ResponderEliminar
  13. Obrigado pelo comentário.

    É bom ver que ainda aparecem uns turistas aqui pela "ilha," mesmo com a crise actual! :)

    ResponderEliminar