sábado, 4 de junho de 2011

A Era do Javascript

Meus primeiros contatos com Javascript datam de uma época distante, onde o Netscape era o mais popular browser da Internet! Eu usava um servidor Sun e estudava um produto chamado Netscape One, que vinha com uma tecnologia de script do lado servidor chamada de LiveScript. Ela já era também disponível no browser, mas não prestava para muita coisa na época. As tecnologias quentes eram o CGI e o SSI. Eu me interessava também pela novidade do momento, a tal de PHP 3 ! Se minha memória não falha, estou falando do período de 95 a 98.

Tecnologias como Java Applets nunca "pegaram", sempre foram consideradas lentas demais, pesadas demais. Já com o Javascript, além de lento, não se podia fazer muita coisa. A maior parte dos trabalhos se limitava a validação de campos e tarefas menores com strings e datas. Jogos em Javascript, só de forca e da velha. Nessa época eu escrevia CGI's em C++ e lembro da magia que foi aprender a programar em Perl.

Javascript nunca foi uma linguagem "seria" até alguns anos atrás, quando ficou impossível de ser ignorada. No lançamento do iPhone, muitos ficaram chocados com idéia inicial da Apple de aplicações web com Javascript... depois é que eles liberaram aplicações nativas. Isso já em 2007... mas a maioria dos celulares tinha browsers de Internet sofríveis, muitos sem Javascript. Hoje vemos compiladores de e para Javascript, compactadores, obfuscadores e uma infinidade de livros. Javascript está instalada na maioria dos computadores do mundo, incluindo telefones celulares e mesmo sistemas embarcados. Você pode até mesmo usar Javascript para instrumentar seu programa escrito em Java ou C++! É impossível ignorar a força do Javascript. A prova final para mim foi há algumas semanas quando vi uma pequena máquina virtual, suficientemente completa para rodar o kernel do Linux em Javascript, fora jogos como Doom e emuladores diversos, completamente escritos ou portados para Javascript!

A impressão que tenho é o mesmo que aconteceu na década de 80, onde para se ter velocidade programava-se em Assembly, mas era difícil e cada micro tinha o seu próprio Assembly incompatível. Isso era nítido na programação de jogos. Até nas revistas, os programas eram escritos parte em Basic, parte em Assembly. Com o passar do tempo, ficou prático escrever em Pascal e C, compiladas e muito mais fáceis que Assembly. Com o Javascript acontece a mesma coisa, quando começo a ver a quantidade de compiladores que agora geram códigos em Javascript, tenho a mesma impressão. Como escrever grandes programas em Javascript ainda é difícil, diversas bibliotecas e ferramentas podem ser utilizados para reduzir este esforço. Uma dessas ferramentas é a CoffeScript, que dá uma sintaxe limpa ao Javascript, inspirada em Python. É como se essas linguagens estivessem fazendo o trabalho que C e Pascal fizeram antes e o Javascript sendo o novo Assembly universal, afinal é suportado pela maioria dos micros e é multiplataforma. Não falo aqui que o Javascript substitui o Assembly, nada disso. Apenas um posicionamento das linguagens como ferramenta num cenário de aplicações global.

Como tudo agora é na ou para a Web, Javascript é incontornável. A popularização do suporte a HTML 5 nos browsers só vem a ajudar. Nos últimos anos, motores Javascript de alta performance se popularizaram no Google Chrome, FireFox, Safari e até mesmo no Internet Explorer! Canvas, WebGL, bancos de dados locais, web sockets, web workers, tudo disponível em praticamente qualquer browser, via Javascript! 

sábado, 12 de março de 2011

Khan no TED


Eu ainda me impressiono com a Khan Academy. Fantástica ferramenta para quem precisa relembrar e aprender conceitos de matemática, física, etc. Agora ele ataca problemas de nivelamento entre estudantes com ritmos de aprendizagem diferente. Quando teremos este tipo de iniciativa em português? Vídeos e não mini novelas! O potencial das video aulas, com playback controlado pelos alunos é interessante, mesmo em áreas sem Internet ou infra-estrutura para video aulas transmitidas ao vivo.

terça-feira, 8 de fevereiro de 2011

Programe ou seja programado

Eu vi este vídeo ano passado, mas como não tinha legendas em português... não o coloquei aqui.
Porém, mesmo sem legendas, estas ideias não poderiam ficar sem um comentário breve.
Assista ao vídeo:



Douglas Rushkoff apresenta a importância do conhecimento de programação no mundo moderno.
Não que ele defenda um mundo de programadores ou que aborde uma linguagem de programação X ou Y.
O que é fantástico no vídeo é a relação entre a invenção da escrita, programação e as mídias modernas.
Do início do compartilhamento do conhecimento através da escrita, de livros e depois com a invenção da prensa moderna, ele compara o acesso do cidadão comum a cada uma destas formas de transmissão do saber. Como esse conhecimento era controlado e distribuído entre as pessoas comuns e como sempre a sociedade comum estava um passo atrás das últimas tecnologias de produção e distribuição deste mesmo conhecimento.

A questão é realmente saber se hoje estamos ficando para trás, ao não incluirmos a programação no mundo de nossos filhos. Hoje, tão importante quanto ler e escrever, programar é necessário. De uma simples planilha a sistemas complexos, diferentes níveis de programação são utilizados. Assim como a invenção da escrita não levou a uma sociedade de escritores, como apresentado no vídeo, a programação não criará uma sociedade de programadores. O ponto é realmente ter ideia do que pode ser programado, de ter noções básicas de como as coisas funcionam e não de simplesmente utilizar os meios como nos são fornecidos: Twitter, Facebook, Google e mesmo a web.

O vídeo postado pela Wilmara no Facebook me chamou a atenção para o problema da educação:



Isso me fez pensar no por quê meus filhos ainda perguntam que língua é falada em tal ou tal país... tendo a Wikipédia e o Google disponíveis. Eles sabem acessar o Facebook, jogos e principalmente o YouTube. Mas a capacidade de síntese não é dada ou ensinada na escola. Continuamos a ensinar a decorar e não a reunir novas informações e criticar o conhecimento. Lembro do tempo que passei para achar o nome científico de 10 animais quando estava no primário... hoje isso seria feito em segundos!

O foco continua sendo: ler, memorizar, repetir. Eu fui confrontado com esta realidade no meu primeiro emprego, como professor de lógica de programação. Os alunos estavam na faixa dos 15 anos, e eu tinha acabado de completar 18. Quando começamos a trabalhar com problemas simples de matemática, como porcentagens e proporções a casa caiu. Isso era muito estranho, pois eu era professor numa escola técnica, digamos elitista do ponto de vista que você tinha que ser aprovado num concurso para estudar lá. Não eram alunos ruins ou com problemas de aprendizado, mas alunos acima da média! O que alguns tinham dificuldade era em como utilizar o conhecimento passado através de exercícios de cálculo para uma nova realidade. Repito, não era problema em calcular, mas de saber que técnica já conhecida utilizar para resolver um problema similar, mas em outro contexto. Era simplesmente desenvolver suas equações, escrever enunciados de novos problemas, aplicar o que já sabiam, o contrário da forma como tinham sido preparados a vida toda!

Traçando um paralelo: será que ao invés de apenas deixar nossas crianças assistirem vídeos no YouTube, deveríamos ensiná-las a criar seus próprios vídeos? A escrever corretamente, ou pelo menos tentar escrever corretamente, usando wikis e mesmo criando suas próprias home pages? Aqui falamos de programação em sentido mais amplo, como dominar as ferramentas que utilizamos. Afinal, eu não sou artista, mas recebi noções básicas de arte na escola... ainda sei combinar cores, embora não saiba desenhar ou pintar. Precisamos ensinar nossas crianças a dominar as novas mídias. Não para criar uma sociedade de programadores, mas para evitar que eles simplesmente consumam conhecimento sem a menor noção de como este é produzido, armazenado, disponibilizado e principalmente as formas que pode ser controlado.

Vídeo bônus:

Only at OR Books: Program or Be Programmed by Douglas Rushkoff from OR Books on Vimeo.