MIT - Scratch

Introdução

O objetivo desse artigo é apresentar o Scratch, programa de computador para ser usado por crianças à partir de oito anos de idade na introdução a linguagem de programação de computadores, desenvolvido pelo MIT (Massachusetts Institute of Technology).

Eu acredito que o benefício das novas tecnologias é consequência do uso que as pessoas fazem delas, e da maneira como as pessoas se deparam com elas. Linguagem de programação de computadores incluindo esse programa do MIT não são naturais para as crianças, e nem para a maioria dos adultos. E assim sendo exigem um aprendizado para melhor compreendê-las.

A vida é uma constante troca de aprendizados e ensinamentos, e todos os processos de aprendizado  incluindo o aprendizado no uso de tecnologias, são fatores que ajudam a determinar a formação das pessoas. A capacidade das pessoas interagirem consigo, com o outro, com o seu entorno e com o novo vem junto, ou mesmo antes do objeto do aprendizado. Se pensarmos em jovens programadores de jogos; que sejam capazes de programar zumbis dentro dos jogos e não que sejam zumbis do lado de cá da tela.

É disso que eu trato nesse artigo, além de apresentar um exemplo que eu criei para satisfazer a minha curiosidade. Esse exemplo está descrito no final desse artigo, e quem quiser vê-lo em funcionamento pode ir diretamente ao item “Exemplo”, que está logo antes da conclusão do texto.

O computador como ferramenta

O computador pode ser programado em vários níveis, por profissionais ou pelo usuário comum. Quando uma criança de um ou dois anos de idade liga um tablet e acha um joguinho para se divertir, o tablet fica programado para que na próxima vez que a criança for usá-lo, ele apresente a loja de joguinhos com outros jogos similares, com caras de bichinhos e sorrisos, onde a criança vai clicar com certeza.

O dispositivo foi automaticamente programado com as preferências da criança para facilitar o uso do aparelho, sem a necessidade de maiores intervenções, exceto o próprio uso ao qual o tablet foi submetido. Além de facilitar o uso, esse tipo de resposta suscita sentimentos de simpatia porque supostamente ele permite que uma criança pequena demonstre algumas habilidades, com apenas um ou dois anos de idade.

Os adultos que utilizam os computadores estão interagindo com programas o tempo todo, e muitas vezes estão parametrizando os programas sem se dar conta disso. Em qualquer processo simples como o envio de e-mail ou a navegação na Internet, o usuário está manipulando os parâmetros de um ou de diversos programas que estão “trabalhando” nos bastidores para as coisas funcionarem.

Digitar uma busca no Google, ou arrastar os dedos na tela de um tablet são comandos que dizem à determinados programas, faça isso, ou faça aquilo. Em ambos os casos, o computador é uma ferramenta que aumenta o raio de ação dos limites humanos.

A computação como linguagem

Um grupo de pesquisadores do MIT (Massachusetts Institute of Technology), acredita que para uma pessoa se expressar na linguagem da computação, ela deve estar apta a escrever programas de computador. Utilizar a tecnologia lendo e-mails, noticias, ou mesmo interagindo via redes sociais é apenas meio caminho no mundo da tecnologia. É mais ou menos como saber ler mas não saber escrever.

A tecnologia, além de veículo de transporte de informações, pode se usado como linguagem pelas pessoas. A tecnologia está sendo encarada como mais uma linguagem que oferece oportunidades para as pessoas se expressarem no mundo. O programa desenvolvido pelo MIT se chama Scratch, e é voltado para crianças à partir de oito anos de idade e permite que elas desenvolvam de forma lúdica o aprendizado da linguagem de programação de computadores. Ele é um programa para fazer programas simples como jogos, apresentações, animações etc, e utiliza os principais conceitos das linguagens convencionais de computação, simplificando alguns conceitos para tornar o uso mais intuitivo.

Não dá para afirmar que qualquer pessoa ou qualquer criança desenvolverá capacidades de programador de computadores à partir desse sistema, da mesma maneira que não é possível dizer que uma pessoa se tornará um bom pintor ao frequentar um curso de artes ou que uma pessoa será um bom músico ao frequentar um conservatório.

Assim como nas linguagens de expressão artística, existem grupos diferentes de pessoas que se identificam com determinadas formas de expressão. Há muitos fatores envolvidos no desenvolvimento de programas de computador, como aptidões, gostos, empenho etc, e provavelmente algumas crianças venham a gostar de interagir com essa linguagem enquanto outras darão preferência à outras linguagens.

A construção da linguagem

Partindo de um roteiro de uma brincadeira da minha filha de 5 anos de idade, eu comecei a buscar linguagens de programação para jogos para crianças e cheguei até o Scratch.

No roteiro ou “plano” que era a sua brincadeira, uma espiã deveria executar algumas tarefas como pular sobre uma bomba, pular sobre um garfo (um tridente) e chegar até um baú e abrí-lo para pegar a pedra mágica. Esse roteiro virou um jogo no Scratch, muito simples por sinal mas que faz uso do potencial do programa.

Quando a minha filha viu esse jogo; quando eu mostrei para ela, ela gostou. Criança adora coisas no computador, nenhum mérito meu na programação do jogo, posso afirmar com certeza.

E logo ela começou a criar outros roteiros, e quando tivermos tempo vamos compor mais jogos no computador. Por ora eu procurei explicar à ela que é necessário um encadeamento de atividades para se chegar ao resultado final, ao jogo.

Para as coisas serem produzidas no computador, muitas atividades são necessárias e elas não acontecem na velocidade do pensamento, como às vezes somos levados a acreditar quando lidamos com a tecnologia somente na ponta, somente como usuário final.

Esse aprendizado não é exclusividade só das coisas relacionadas a tecnologia, vale para tudo, mas a tecnologia tem algo de imaterial, de mágico que pode levar a conclusões perigosas. É preciso cuidado para não destruir alguns conceitos e cuidados do mundo real nesse diálogo com o mundo virtual, porque abrigar coisas no mundo virtual que não são bem fundamentadas no mundo concreto pode ser perigoso. Eu falo na relação das pessoas com o raciocío necessário para resolver problemas, a relação com o tempo para o desenvolvimento das coisas que elas desejam, a disponibilidade de recursos para a realização das atividades para se atingir os objetivos traçados.

Algumas atividades básicas, atividades lúdicas que precisam ser feitas para se criar um simples joguinho são elaborar os personagens e o enredo, criar o roteiro, desenhos e trilha sonora. E além disso, a programação efetuada à partir da linguagem utilizada no Scratch.

É a partir do mundo concreto e das suas coisas que se constrói o diálogo com os elementos do mundo virtual. Tentativas apressadas de exploração do universo virtual tem dois riscos, o primeiro é a frustração por resultados nulos, e o segundo é o risco de ampliação excessiva de horizontes, através das possibilidades da tecnolgia e que pode ter efeitos danosos no desenvolvimento cognitivo das crianças.

Programação de computadores

A programação no Scratch foi estruturada para utilizar elementos conhecidos por uma criança alfabetizada, e capaz de interagir com as interfaces padrão do computador como teclado e mouse. O Scratch apresenta os comandos a serem executados pelo programa como “peças”, pedaços de um todo que a criança vai montando de acordo com o seu objetivo, como no jogo físico de Lego.

O programa prevê que o aprendizado não é linear e se baseia na experimentação e no erro, deixando uma margem (espaço na tela) para que a criança monte os seus “blocos” de código e experimente aos poucos, deixando uma certa bagunça durante a experimentação. A utilização do programa em grupo é estimulada para incentivar a troca, a competição, a repetição, a cooperação e a cópia como partes do processo de aprendizado.

O Scratch não torna o difícil fácil, torna o díficil acessível. Ele é uma camada de abstração das entranhas da tecnologia que torna a programação de sistemas mais intuitiva, mas continua exigindo a capacidade de compreensão dos conceitos básicos da computação, como variáveis, repetições, chamadas de funções etc. E é bom que seja assim; se a necessidade desse conhecimento for totalmente abstraído e apresentarem-no uma interface onde baste o arrastar dos dedos em uma tela, a criança não vai estar exercendo muitas coisas, exceto uma vontade rasa e imediata de dar vida as suas criações mentais, sem ser responsável pelo processo de montagem, erro, remontagem, acerto; de aprender a dar movimento e de colocar no mundo as suas vontades, os seus desejos através do aprendizado e da superação de obstáculos.

Idade Inicial

O Scratch é recomendado para crianças à partir de oito anos de idade.
Escrever um programa de computador envolve uma série de conhecimentos de diferentes áreas do saber. Crianças na faixa de cinco anos de idade adoram inventar histórias, colocar no papel, olhar longe e ficar imaginando personagens, mas ainda não estão preparadas para organizar narrativas complexas e focar em questões que exijam raciocínios longos e objetivos. Ou talvez não queiram se prender ainda à essas questões formais, porque o seu fluxo de idéias é constante e não necessariamente linear.

Não é para esperar que uma criança de cinco anos de idade interaja na construção de blocos lógicos dentro do Scratch, mesmo porque as habilidades da leitura e escrita, a organização, composição e divisão de entes abstratos que irão desembocar na matemática ainda estão em fase de desenvolvimento.

Mas toda criança constrói narrativas e roteiros, as suas fantasias. Aquelas que se identificarem com tecnologia com o tempo poderão passar as suas histórias para o computador. Assim como os seus desenhos; animá-los usando a tecnologia abre as portas para um grande universo de possibilidades.


Interface homem-máquina

Hoje em dia é muito comum as crianças terem contato com dispositivos táteis como tablets e celulares, sendo que essas interfaces são limitadas para a transmissão de comandos complexos que dependem de construções sintáticas e lógicas.

Os dispositivos táteis e sensores de presença e movimento podem ser ótimos para jogar, mas são limitados para interações mais complexas entre o homem e a máquina. A dificuldade de escrever um texto longo em um tablet ou em um celular é a mesma que se tem ao escrever um programa de computador.

O Scratch tem uma grande vantagem sobre as linguagens de programação tradicional, porque a conversão léxica dos símbolos utilizados para programar se dá sobre as “peças” utilizadas na programação e nos “blocos” criados pelo programador, não havendo a dificuldade da grafia, excluindo-se também erros sintáticos. Pouco ou praticamente nenhum texto precisa ser criado pelo programador na composição sintática do programa.

Resumindo, o Scratch pode ser programado todo graficamente na base do clique e arrasto (drag’n’drop).

Em tese ele pode ser programado em um tablet, salvo exceção ao tamanho da tela. O Scratch tem uma tela dividida em três principais janelas, uma para “montar” o código, outra onde a animação é realizada e outra onde os elementos da animação ficam a disposição do programador.

Para uma boa visualização, quanto maior for a tela melhor. Pois muitas outras janelas podem ser utilizadas para diferentes funções, além das buscas necessárias e recorrentes de ajuda durante a programação.

Versão 2.0 - Web

A versão atual é a 2.0, e ela roda inteiramente em um browser, ou seja não há restrição de sistema operacional, não é necessário fazer download de aplicativos e instalar nada no seu computador. Tudo é feito no browser e armazenado em um servidor remoto. 

Compartilhamento

Tudo o que é criado no Scratch é compartilhado. Você não deve ficar preocupado com a privacidade dos seus projetos porque uma vez que eles foram publicados, não há privacidade nos projetos. Os projetos possuem dois estados, publicado e não publicado. Todos os projetos publicados são públicos, e é incentivada a cópia para estimular a troca e o reaproveitamento de idéias.

O visitante que está vendo um projeto pode alterar tudo o que está na sua tela que não vai afetar o programa original. Se desejar alterar e salvar uma cópia, ou copiar sem alterar é possível. Essa é uma facilidade que o Scratch oferece e que incentiva o compartilhamento de informações.

O crédito para o criador é sempre mantido nas cópias, para indicar quem teve a idéia original, e fez a primeira implementação. 

Documentação e tradução

Esse projeto está traduzido em mais de oitenta línguas.
Eu não explorei a questão da tradução, mas cheguei a ver que existe um grupo de pessoas atuando na tradução e adequação dos termos para o português brasileiro.

Me parece que o Scratch inteiro é traduzido, inclusive os comandos, ou seja a programação pode ser feita em português, o que é muito bom para quem não conhece a língua inglesa.

A documentação sobre o Scratch é muito boa no portal web, no wiki, faq etc.

Existe uma comunidade atuante muito grande usando o projeto e trocando informações. E é por esse motivo que esse artigo não se propõe a explicar como funciona o Scratch, existe material em abundância, para todos os níveis.
Para os iniciantes, no próprio programa existe um passo-a- passo.

Exemplo

Estão descritos abaixo os três modos principais de exibição do programa. “Página do projeto”, “modo de edição” e “tela inteira”.

Tela Inteira

O link abaixo direciona para o joguinho que eu criei:
http://scratch.mit.edu/projects/14135738/#fullscreen

Visualização em modo tela inteira no Scratch

É um joguinho simples, que tem três etapas.
Em cada etapa o jogador deve executar uma tarefa, e ele deve utilizar as setas do teclado para jogar. O mouse é usado para clicar em um botão para repetir uma fase, ou para passar para outra fase.

O jogo tem um visual muito simples e utiliza elementos gráficos disponíveis no Scratch. O programador pode criar ilustrações dentro do Scratch ou fazer o upload de desenhos que ele tenha em formato digital no seu computador.

Vale notar que esse jogo é totalmente programado no Scratch, do zero, o que significa que todos os movimentos, ações e relações entre os objetos que compõem o jogo tiveram que ser programados com a linguagem de programação do Scratch.

Nesse modo de tela cheia não é possível editar nada. Mas existe uma barra superior na tela, onde há no lado direito uma bandeira verde para iniciar o jogo e um círculo vermelho para interromper as ações. E no lado esquerdo, um retângulo para alternar entre o modo de tela cheia e o modo de edição e/ou página do projeto.

Página do Projeto

Ao clicar no retângulo, pode-se visualizar a tela com informações do projeto.
Segue atalho para essa tela:
http://scratch.mit.edu/projects/14135738/#player

A tela do projeto trás os créditos do programa, quantas pessoas visualizaram, quantas pessoas gostaram e a quantidade de remixagens, ou de cópias do programa.

No canto direito dessa tela, tem um “botão” com um link “see inside” (ver internamente), e ao clicar nesse botão, aí sim se tem acesso ao código do programa.

Modo de edição

Segue atalho para essa tela:
http://scratch.mit.edu/projects/14135738/#editor

Objetos que compõe o programa


Na tela acima a janela do jogo continua presente, mas agora em modo de edição onde é possível alterar a posição de todos os objetos, incluir e excluir objetos e alterar o código do programa. A janela exatamente abaixo da janela do jogo apresenta os elementos gráficos que estão sendo utilizados. Ao selecionar um elemento nessa janela, o código do programa referente ao elemento é apresentado.

Nesse jogo, grande parte do programa está associada ao gatinho, personagem principal do jogo. Os demais elementos possuem pouco código, em grande parte código para auxiliar na apresentação e na disposição dos mesmos na tela.

Portanto o gatinho é quem tem a maior quantidade de código porque ele anda, ele pula, ele pega objetos etc.

Eu utilizei um elemento chamado “Scratch” e coloquei todas as variáveis globais nele para manter o código organizado. Essas variáveis poderiam estar com qualquer elemento, mas deixei aqui simplesmente por uma escolha arbitrária.

A parte direita da tela apresenta o código do programa. O código é formado por blocos, e esses blocos são compostos de “peças”. As peças podem ser arrastadas do repositório de peças que fica à disposição do programador. Algumas peças podem ser parametrizadas de acordo com a necessidade do programa e vontade do programador.

Exemplo de código fonte do programa (jogo)


Conclusão

A linguagem de programação não é uma linguagem intuitiva para a maioria das pessoas; crianças ou adultos. O Scratch oferece uma plataforma prática para as crianças terem o primeiro contato com uma linguagem de programação, mas ele não fornece atalhos aos conhecimentos necessários que uma pessoa precisa ter para desenvolver um programa. Como já citado acima, capacidade de raciocínio abstrato e raciocínio lógico, conhecimentos matemáticos, leitura e escrita da língua portuguesa ou inglesa.

Escrever um programa simples como esse, leva tempo e requer a adoção de soluções de matemática básica. E além disso, somente essas aptidões bem desenvolvidas não bastam para que uma criança se envolva com linguagens formais exatas, esse aprendizado é lento e gradual.

A aplicação prática do conhecimento é uma das coisas que dá sentido ao Scratch. Por exemplo, na fase três do jogo, quando o gatinho pega um artefato, seja a chave ou a varinha mágica; para ele andar com esse artefato nas mãos é necessário escrever um código que associa as coordenadas (x,y) do artefato às coordenadas (x,y) do gatinho, que são atualizadas em tempo real quando o gatinho se move.

Outro exemplo da fase 3, é que o gatinho só pode pegar a chave ou a varinha mágica, e para que isso seja possível é utilizada uma variável, que se preenchida significa que ele já tem um objeto nas suas mãos e não conseguirá pegar outro.

Esses conceitos não são computacionais mas antes matemáticos, e utilizar a linguagem do Scratch para demonstrar ou simular o mundo ao nosso redor abre uma série de possibilidades para as pessoas entenderem melhor o mundo, e entender as outras linguagens como a matemática, física, biologia, línguas, linguagens artísticas como as cores, sons, músicas etc.

Essa é uma perspectiva interessante no uso do Scratch para ensinar as crianças a desenvolverem programas de computador. Ajudá-las a entender as ciências e outros elementos do mundo que as cerca, através da própria tecnologia que ocupa um espaço cada vez mais importante.

E as crianças que tiverem aptidões, ou se identificarem naturalmente com linguagens de programação poderão tirar proveito e se divertir ainda mais com as suas criações.

Popular posts from this blog

Atom - Jupyter / Hydrogen

Design Patterns

Robson Koji Moriya disambiguation name