terça-feira, 7 de julho de 2009

Alice - Ambiente didático de programação

Em conjunto, aqui mostramos a nossa análise do ambiente Alice.

O sistema Alice é um ambiente didático 3D para o aprendizado de programação, desenvolvido pela Carnegie Mellon utilizando-se Java. O Alice propõe uma nova forma de se aprender programação: em vez de se programar em telas em branco, digitando-se linhas e mais linhas de código e em troca receber mensagens de erro nada animadoras como "Segmentation Fault", aprende-se a programar com objetos comuns, em situações cotidianas. Basta inserir as ações desejadas e clicar em play para rodar um filme que exibe a rotina criada pelo usuário.

Figura 1 - Tela de edição do Alice

Um breve diário da nossa experiência: após o download no computador (aliás, nem houve instalação, bastou baixar e rodar o aplicativo, o que é muito prático), ao abrir o programa temos um tutorial bem passo-a-passo para orientar o novo usuário, mostrando a divisão das telas e um exemplo de execução. O vocabulário é um pouquinho complicado, mas para um nativo de país de língua inglesa a linguagem parece aceitável, mesmo se for uma criança. Ao se cometer um erro no tutorial, o sistema pede para voltarmos um passo, impedindo o usuário de se dispersar dos ensinamentos que o tutorial oferece.

Ao fim do primeiro tutorial, poderia ter sido avisado para se clicar no botão "Exit Tutorial" ou em "Next Chapter", que ficaram meio escondidos, podendo passar despercebido. Seria melhor que elas ficassem próximas às notas de leitura. A organização sequencial de métodos é bem intuitiva, bastando clicar e arrastar para se alterar a ordem dos métodos. Porém, algumas funcionalidades mais avançadas, como o "Do Together", poderiam ter sido melhor explicadas. Os outros tutoriais aprofundam as possibilidades do sistema. Aprende-se a criar novos métodos para objetos, novos eventos e novos ambientes, dando cada vez mais liberdade para o usuário criar seu mundo.

Nos tutoriais, tudo correu bem, mas ao criarmos nosso próprio mundo, percebemos que alguns detalhes poderiam ser melhorados:o sistema não é tão intuitivo, ferindo o paradigma de reconhecimento em vez de relembrança: depende-se muito do aprendizado no tutorial, é um pouco difícil aprender funcionalidades novas. Os botões de Undo e o Redo não funcionaram perfeitamente, pois ocorrem várias falhas de renderização ao se editar muito os objetos. Houve também uma certa dificuldade em manter os gráficos "realistas", como os personagens sempre em cima do chão em vez de flutuando, por exemplo. Ao criarmos um novo método, nós não podemos digitá-lo diretamente, apenas arrastar blocos como if/else, for e while. Em boa parte dos casos, isso é bom pois torna erros de sintaxe impossíveis. Porém, isso tira flexibilidade que usuários mais experientes poderiam ter.

Figura 2 - Rodando a rotina em filme

Apesar desses detalhes, em geral o sistema atende bem ao que se propõe: facilitar o aprendizado de programação permitindo ao usuário manipular sua rotina, seja através de eventos como clique ou teclado, seja através da criação de rotinas. Aliás, essa ideia de substituir o uso de código por funcionalidades como clicar e arrastar nos lembra muito o que fazíamos em VB e Delphi, com a diferença que aqui essa opção é obrigatória, não há como programar diretamente.

Existe uma demanda crescente por mais programadores, resultado da democratização dos computadores e do aumento do uso de serviços web. Infelizmente, o Brasil está muito atrás de países semelhantes, como Índia e China, formando pouquíssima mão-de-obra qualificada para programação. Métodos ou ferramentas de ensino que facilitem isso são muito bem-vindos, e o Alice é um ótimo exemplo. Inclusive, ele é voltado para o paradigma da moda, Orientação a Objetos, já que cada item do ambiente possui seus métodos e variáveis, e não há interferência direta (apenas através de chamada de métodos) entre cada objeto do ambiente.

Porém, em parte achamos que o sistema precisa ligar melhor o usuário ao mundo da programação: o tutorial não aborda o uso de estruturas lógicas como if/else, for, e utilização de vetores. Sem essa abordagem, acreditamos que ainda haverá um choque muito grande quando o novo programador for utilizar linguagens de programação reais. É importante incentivar o novo programador a dominar essas estruturas, pois ele com certeza precisará delas. Poderia também haver um modo de programação direta, afinal ter erros de sintaxe também faz parte do aprendizado.

Um comentário:

  1. como serão os ambientes que vcs denominam de programação de verdade? será que não estão presos ao verdade mais que tradicional?

    ResponderExcluir