Desenvolvimento

18 fev, 2010

Ferramentas de programação visual removem barreiras de aprendizado

Publicidade

Muita gente associa o termo “programação” com letras passando por uma
tela monocromática, ao estilo Matrix. Listagens complicadas, cheias de
números e palavras em inglês. Essa imagem tem uma certa base na
realidade; a grande maioria dos programas de computador é expresso em
forma de texto, em linguagens como Java, C, PHP, Basic e outras. Mesmo
linguagens visuais como o Visual Basic operam com base em comandos
textuais, sendo que a parte visual se limita ao design de telas e
formulários. É uma diferença radical de outras disciplinas
experimentais, que envolvem a manipulação física de objetos e é também
uma grande barreira para que mais e mais pessoas aprendam a programar
um computador.

Uma nova geração de linguagens está mudando esta realidade. Algumas
são projetos educativos, como é o caso do Scratch, desenvolvido pelo MIT, e do Kodu, desenvolvido
pela Microsoft Research
.

O Scratch é um ambiente de prototipagem gráfico, onde o programador
manipula objetos multimídia. O programa é montado como se fosse um Lego,
com blocos que se encaixam; estruturas de controle como loops e testes
são visualmente representadas dessa forma. A página contém bastante
conteúdo em português, que vem sendo traduzido por voluntários da
comunidade.

Já o Kodu é uma ferramenta completamente diferente, que opera em um
ambiente 3D, com “atores” que realizam ações que podem ser programadas
de forma interativa. A linguagem foi originalmente desenvolvida para o
Xbox, mas foi portada recentemente para o PC e está disponível para os
interessados. Aviso: a plataforma ainda é experimental e tem vários
bugs.

O Sikuli,
também desenvolvido pelo MIT, tem um objetivo diferente mas ainda
assim interessante. O Sikuli permite especificar scripts com componentes
visuais, e é efetivamente um “cruzamento” de uma linguagem textual (no
caso, um dialeto de Python) com elementos gráficos. A linguagem permite
automatizar qualquer tipo de tarefa que possa ser feita em um ambiente
GUI. Isso inclui desde aplicações pessoais ou domésticas (por exemplo,
verificar o status de uma aplicação) até aplicações profissionais como
teste de software.

É interessante comparar esta nova geração com algumas das tentativas
pioneiras, como foi o caso do Logo, que teve relativa popularidade nos
primórdios da microinformática e foi usado em vários experimentos de
ensino de informática no começo dos anos 80. Outro exemplo foi o Hypercard, muito
popular na era “pré-Web”, e que foi o precursor de várias idéias
largamente utilizadas hoje em dia entre elas wikis e a
própria Web
.

A grande diferença é a maturidade da tecnologia, e a sua integração
com outros elementos do ambiente. Os programas feitos hoje não se
limitam a desenhar na tela, e podem expressar condições lógicas bem mais
ricas. Outro ponto interessante é que a tecnologia usa recursos “não
determinísticos”; em vez de uma precisão matemática rigorosa (por
exemplo, contando pixels na tela), são usados gestos e movimentos
aproximados, ou (no caso do Sikuli) um sistema de visão artificial
sofisticado que trabalha com imagens aproximadas.

O desenvolvimento dessas novas ferramentas vem em boa hora.
Linguagens de uso educativo são importantes para atrair novas pessoas
para a área de desenvolvimento. Os sistemas que serão desenvolvidos nos
próximos anos certamente precisarão de outros paradigmas mais visuais,
mais interativos, e acima de tudo maciçamente paralelos. É preciso
desenvolver novas formas de expressar a solução de problemas e é nesse
ponto que uma nova linguagem pode se mostrar útil e necessária.