'Vem aí uma revolução de software. Isto é, se conseguirmos imaginá-la
Há momentos em que parece que a tecnologia não evolui de forma tão rápida ou exponencial. Por mais que falem da lei de Moore e de processadores cada vez mais rápidos, com múltiplos núcleos (dual core, quad-core etc), a sensação que se tem é que as máquinas não estão rápidas como deveriam.
A conta não fecha: por que um notebook que tem o dobro da capacidade de processamento, memória e armazenamento em disco de seus equivalentes com alguns anos de idade não realiza suas tarefas duas vezes mais rápido? Mesmo que a relação entre a velocidade dos chips e a resposta das máquinas não seja simples nem linear, a discrepância é muito grande. Será que as máquinas chegaram a um limite de velocidade?
Dividir uma CPU entre vários núcleos foi uma grande ideia em engenharia --chips mais potentes esquentam demais e consomem muita energia-- mas esbarrou em um limite mais sério do que parece: as linguagens de programação. Pouco se comenta sobre o assunto, mas a realidade é que boa parte dos processadores múltiplos fica ociosa por falta de um sistema que saiba usá-los. Seu PC pode ser uma Ferrari, mas o motorista não tem habilidade para passar dos 60 km/h.
Linguagens usadas por computadores, como sua contrapartida humana, procuram estabelecer regras e executar instruções de forma clara e sintética. Existem códigos simples, como o HTML, que não se prestam a funções mais sofisticadas do que a descrição de uma página web. Outros sistemas, mais robustos e complexos, são versáteis e duradouros como o C++ que, mesmo tendo sido criado em 1985 (como evolução de um projeto de 1973), ainda é responsável por operações extremamente sofisticadas.
Há um número enorme de linguagens e, como se pode imaginar, termos intraduzíveis entre elas. Em computadores, eles causam problemas bem mais graves do que um eventual mal-entendido, uma expressão difícil de compreender ou qualquer particularidade cultural. Se não houver como exprimir a tarefa que se deseja, ela não poderá ser realizada.
Nomes desconhecidos do público geral, como Haskell, Chapel, Clojure, X10, Erlang e Scala, vêm sendo usados por supercomputadores para modelar sistemas financeiros, estruturas militares e previsões meteorológicas. Os bastidores de processos bem conhecidos, como estações de telefonia celular, servidores de videogames multiusuário e aplicações sociais como partes do Facebook, Twitter, LinkedIn e FourSquare também os utilizam. Não vai demorar para que cheguem aos usuários finais.
Nos próximos anos, quando milhares de processadores espalhados pelas máquinas, roupa, objetos, brinquedos, acessórios e corpo resolverem conversar entre si, o fluxo de informação gerado por eles será gigantesco, a maior parte gasto em permissões e confirmações. Administrá-lo não é trivial. E será inviável se cada tarefa entrar em fila indiana.
Vem aí uma revolução de software. Novos modelos de programação precisam se concentrar em atividades e seus usuários, não mais em hardware ou aplicativos. É uma mudança gigantesca. Por isso, mesmo quem não é técnico nem tem a intenção de chafurdar em sutilezas e dialetos das linhas de código precisa conhecer as novas linguagens como cardápios de possibilidades, tecnologias capazes de realizar os desejos mais insanos. Desde que alguém consiga imaginá-los.
Não é uma tarefa simples, principalmente porque aprendemos a considerar "racionais" somente o que possa se reduzir a sequências lineares de pequenos passos. O processamento paralelo, usado pelo cérebro para reconhecer música, arte, expressões e movimentos, nunca foi alvo de muito estudo.
As novas máquinas podem ser muito estranhas ou extremamente familiares. Tudo depende da forma com que se pense nelas.
Nenhum comentário:
Postar um comentário