segunda-feira, 19 de setembro de 2011

Expoentes do Conhecimento

Vocês já devem ter reparado como é difícil prever a evolução do conhecimento e da tecnologia.  Todo fim de ano algum "expert" faz suas previsões para os próximos anos... e de cada vez erra em quase tudo!

Para mim um exemplo clássico é o livro/filme "2001 - A Space Odissey".  O livro, da década de '60, foi escrito por Arthur C. Clarke, talvez um dos melhores escritores científicos até hoje.  E o filme foi feito por Stanley Kubrick, com consultoria do próprio Clarke!  No entanto, suas tentativas de prever o estado do conhecimento em 2001 - pouco mais de 30 anos no futuro - foram completamente fora do alvo.  O filme mostra naves comerciais indo e vindo da Lua, com colônias lá estabelecidas... hoje, 10 anos além da época retratada, até as missões científicas à Lua deixaram de existir.  Mostra uma enorme nave tripulada indo ao sistema de Saturno - bem além de nossas possibilidades hoje.  No entanto, mostra um computador enoooorme nessa mesma nave, sem nada da miniaturização alcançada em 2001, e nele não existem telefones celulares, computadores pessoais, e muito menos algo como a Internet.

E por que um cientista experiente e visionário tem tanta dificuldade em prever o futuro próximo?

Uma das razões disso é o desenvolvimento exponencial do conhecimento humano.  Cada desenvolvimento é baseado na soma do conhecimento já estabelecido, e este é cada vez maior.  Portanto o desenvolvimento é cada vez mais acelerado, de forma exponencial.

Vamos fazer uma brincadeira simples para ilustrar a crescente velocidade desse desenvolvimento:  Se a História Ocorresse em um Dia...

Imaginemos os 5.000 anos de história documentada que temos hoje ocorrendo em um único dia.  Estamos assistindo ao pôr do sol, e relembrando tudo o que aconteceu nesse dia...
  • A Roda foi inventada ao amanhecer...
  • O Alfabeto, por volta das 9:20 horas...
  • A Bússola, pouco depois do meio dia...
  • A Imprensa, pouco antes das 5 horas da tarde...
  • O primeiro Automóvel e o primeiro Avião apareceram quase juntos, faltando 15 minutos para o por do sol...
  • O Homem pousou na Lua há uns 5 minutos...
  • e a Internet existe há pouco mais de 2 minutos!
Impressionante, não?  Reparem que em metade de todo esse tempo mal tínhamos chegado à Bússola.  Faltando uma hora, das 12 horas do dia, para o pôr do sol, a imprensa tinha acabado de aparecer.

É essa incrível aceleração na velocidade do desenvolvimento que torna quase impossível prever o que vai acontecer a seguir, e quando.

Há menos de um século as pessoas compravam, por exemplo, um toca-discos (discos de vinil, claro...), e sabiam que o utilizariam por décadas.  Mais recentemente, eu mesmo comprei um CD-player que durou pouco mais de 10 anos antes de ficar obsoleto.  Comecei a usar um DVD, e menos de 5 anos depois o BluRay o tornou obsoleto.  Troquei uma TV antiga, com CRT, por uma LCD, e... raios, a OLED está ali na esquina me olhando!

Chega a ser estressante... imaginem daqui a mais 10 anos?

Sei lá... não faço a menor idéia do que vai acontecer!!!  Só sei que tenho uma enorme curiosidade para ver!  E enquanto houver essa curiosidade estou tranquilo... ainda estou vivo!

domingo, 11 de setembro de 2011

A Terceirização do Mal

Desta vez o assunto é sério, galera...

Por que será que as pessoas têm uma capacidade tão grande de negar suas responsabilidades, e sempre terceirizar o mal?

Tenho pensado muito sobre isto, mas a gota d'agua para escrever sobre o assunto foi a manchete do Jornal de Santa Catarina desta semana (mais uma sobre o assunto):

"Gaspar cobra do Dnit solução para trevo onde seis já morreram este ano"

Como foi mesmo?  Mais uma vez um motorista incompetente desrespeitou as leis de trânsito e da segurança.  Mais uma vez isso causou a morte de inocentes.  Mais uma vez todos põem a culpa num inocente pedaço de asfalto???

Vamos combinar, gente!  Que essa rodovia precisa ser duplicada, ninguém tem dúvidas!  Que sua manutenção é sofrível, ok!  Que isso causa desconforto, poluição e prejuízo econômico e para o saco de todos, concordamos!  Mas daí a ser causa de mortes?

A notícia dessa semana é sobre um acidente no trevo de Gaspar.  Para quem não conhece, a rodovia ali é reta, com boa visibilidade, e nesse local há um entroncamento com a entrada para a cidade de Gaspar.  As faixas são contínuas, há uma faixa (abrigo) central para aceleração e desaceleração, para que que os automóveis entrando e saindo da cidade não precisem cruzar ambas as pistas ao mesmo tempo.  Há placas sinalizadoras.  O "descaso" das autoridades se limita à inexistência de lombadas ou de uma rotatória.

Pera aí, não entendi!  Então temos que por uma rotatória em cada derivação da estrada, para obrigar os motoristas a reduzir a velocidade, porque respeitar a lei está fora de cogitação?  Onde está o bom senso, gente?

E aí fico me lembrando de outros exemplos (nem todos ligados ao trânsito).

Outra matéria, meses atrás, sobre outra morte nessa mesma rodovia - a foto do local e depoimentos de testemunhas mostravam claramente uma ultrapassagem em local proibido... culpa da rodovia, claro!

Um religioso que matou um amigo em uma discussão... foi o diabo que o "atentou" para matar, ele não teve culpa.  Aliás, de acordo com alguns religiosos, qualquer obra má é "coisa do Demo".  Coitado do Demo... que costas largas, não?  Tem que responder por todo o mal da humanidade!

Um bêbado que agrediu a mulher e filhos.  Foi a "maldita", ele não estava em seu juízo!!  Como é mesmo??  Ele toma um litro da "maldita", sabendo exatamente seus efeitos, e a culpa não é dele???

Quando é que vamos crescer?  Quando vamos tomar vergonha na cara e assumir nossas responsabilidades?  Essa história de apontar pro coleguinha e dizer "a culpa foi dele" é coisa de criança, gente!  E criança mal orientada, porque se eu fizesse isso em criança apanhava em dobro - pelo mal feito e por tentar por a culpa nos outros!  Cedo aprendi que atenuante para meus "crimes" infantis era encarar meus pais e assumir a culpa.  Aí sim, tudo se resolvia com um papo, uma bronca ou o castigo adequado à falta atenuada.

Ahhhh, desculpem... esqueci que dar uma palmada no filho agora é "politicamente incorreto"... causa traumas!  Coitadinho!  Tem que ser criado sem traumas, para que depois de adulto a sociedade o eduque, e talvez o mate no processo!

Tem horas em que fico com muito medo pelo futuro de nossa sociedade... sinto o frio dos primeiros ventos invernais, trazendo a decadência de nossa cultura, nossa retidão moral e nosso valores.

segunda-feira, 5 de setembro de 2011

Uma questão de Nivel...

Estou atualmente ministrando um curso de programação de microcontroladores.  E como sempre surge a polêmica:  Linguagem de alto nivel?  Baixo nivel?  O que é isso?  O que utilizar, e quando?

Bom... "nivel" é um conceito relativo.  Todos concordam que as linguagens Assembly são baixo nivel.  Mas a partir daí, o cenário fica muito mais confuso!

Essa classificação foi criada quando só existiam os Assemblers e os compiladores procedurais.  Nesse cenário, as linguagens Assembly foram consideradas "baixo nivel", porque seus comandos descrevem código nativo de máquina, numa relação um-para-um, portanto estamos na camada mais baixa possível de interação com o hardware.  As linguagens compiladas foram, como um todo, consideradas de "alto nivel", pois seus comandos são compilados para código de máquina numa relação um-para-N, e o programador não vê mais os detalhes desse código.

Mas depois as coisas começaram a se complicar.  Apareceram as linguagens não-procedurais, nas quais o programador descreve tarefas, e os compiladores se encarregam da geração de comandos.  Como chamar isso?  Altíssimo nivel?  Além disso, apareceram linguagens como o "C", hoje largamente empregado em microcontroladores.  O "C", embora compilado, conserva uma relação muito mais direta entre código fonte e código de máquina.  Ele "disfarça" muito menos o hardware, e protege muito menos o programador de seus erros de lógica - e nesse aspecto lembra bastante um Assembler.  Tanto que alguns programadores que nunca usam Assembler passaram a chamar o "C" de "baixo nivel".

De qualquer forma, eu falava de programação de microcontroladores.  E nesse tipo de programação eu nunca vi serem utilizadas linguagens não-procedurais, já que isso nos colocaria longe demais da camada de hardware, o que é inviável nesse tipo de ambiente.  Mesmo linguagens de alto nivel são poucas nesse ambiente.  Quase exclusivamente "C".  E assim voltamos ao princípio de tudo.  Num microcontrolador, Assembly é baixo nivel.  Linguagem compilada é alto nivel.  Ponto.

E agora, depois de falar tudo isso, podemos responder à pergunta.  Repetindo o que já disse em ocasiões anteriores:  Aconselho sempre meus alunos a estudar cuidadosamente cada "core" de microcontrolador que forem utilizar.  E para isso, nada melhor do que programar em Assembler.  Depois que conhecerem bem o "core", o "C" é uma boa pedida, pois vai economizar bastante em esforço e tempo de programação.

Ahhh... mas não se esqueçam de dar uma olhada no código de máquina gerado pelo compilador... até hoje não inventaram um compilador tão esperto quanto um programador, e se vocês forem bons nisso sempre poderão otimizar o código gerado!