EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript...

15
Departamento de Artes e Design EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM AMBIENTE DE ENSINOAPRENDIZAGEM DE PROGRAMAÇÃO CRIATIVA PARA DESIGNERS Aluno: Augusto dos Santos Pereira Orientadores: Luiza Novaes e João de Sá Bonelli Introdução No curso de Graduação em Design Mídia Digital da PUCRio entendese o ensino de programação como um requisito para que, no contexto de projetos de Design de Interação, os alunos possam experimentar as interações que estão desenvolvendo em seus projetos. Nos ambientes audiovisuais desenvolvidos por esses alunos em meios digitais, a linguagem de programação Processing foi inicialmente utilizada, devido a sua facilidade de uso e ambiente de desenvolvimento de baixa complexidade (BONELLI, 2016), em conjunto com a linguagem Arduino , bem como com a plataforma de eletrônica e o IDE com o mesmo nome, que foram 1 2 escolhidos por motivos semelhantes, além de propiciar a utilização de meios físicos para causar respostas sensíveis. No Departamento de Artes e Design, o Laboratório de Interfaces Físicas Experimentais (LIFE) tem como característica ser um ambiente dedicado ao desenvolvimento práticoexperimental de projetos de Design de Interação, tendo como base o conceito de prática reflexiva definido por Donald Schön (2000). Nesse contexto, atividades práticoexperimentais de programação propiciam aos alunos uma reflexão aprofundada sobre seus projetos de design de interação a partir de situações reais de uso. Com o intuito de ampliar o repertório de possibilidades de experimentação dos alunos no LIFE e de profissionais da área do Design, este projeto de pesquisa se propõe a expandir a investigação sobre as linguagens de programação por e para designers, explorando principalmente o potencial da linguagem de programação Lua , e adicionalmente 3 estabelecendo relações também com as linguagens Python e Javascript. Objetivos O objetivo geral deste estudo é explorar o potencial das linguagens de programação no processo de ensinoaprendizagem de alunos de Design, ampliando o arcabouço criativo e as possibilidades de desenvolvimento no tocante ao Design de Interação. Para tanto, temos como objetivos específicos: 1. Levantar e estudar linguagens e ambientes de desenvolvimento similares ao da linguagem Lua, que possam beneficiar o ensino de programação para designers; 2. Identificar as especificidades e características das linguagens escolhidas em função da facilidade de aprendizagem por parte de componentes da comunidade criativa em seu primeiro contato com linguagens de programação e com o pensamento lógico matemático aplicado; 3. Aprofundar a investigação sobre a linguagem Lua e suas especificidades; 4. Identificar as limitações e capacidades da linguagem Lua no desenvolvimento de projetos de Design de Interação; 5. Apresentar de forma didática a linguagem Lua para a comunidade criativa; 1 Arduino: https://www.arduino.cc 2 Interactive Development Environment Ambiente de Desenvolvimento Interativo 3 Lua: https://www.lua.org/

Transcript of EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript...

Page 1: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM AMBIENTE DE ENSINO­APRENDIZAGEM

DE PROGRAMAÇÃO CRIATIVA PARA DESIGNERS

Aluno: Augusto dos Santos Pereira Orientadores: Luiza Novaes e João de Sá Bonelli

Introdução

No curso de Graduação em Design ­ Mídia Digital da PUC­Rio entende­se o ensino de programação como um requisito para que, no contexto de projetos de Design de Interação, os alunos possam experimentar as interações que estão desenvolvendo em seus projetos. Nos ambientes audiovisuais desenvolvidos por esses alunos em meios digitais, a linguagem de programação Processing foi inicialmente utilizada, devido a sua facilidade de uso e ambiente de desenvolvimento de baixa complexidade (BONELLI, 2016), em conjunto com a linguagem Arduino , bem como com a plataforma de eletrônica e o IDE com o mesmo nome, que foram 1 2

escolhidos por motivos semelhantes, além de propiciar a utilização de meios físicos para causar respostas sensíveis. No Departamento de Artes e Design, o Laboratório de Interfaces Físicas Experimentais (LIFE) tem como característica ser um ambiente dedicado ao desenvolvimento prático­experimental de projetos de Design de Interação, tendo como base o conceito de prática reflexiva definido por Donald Schön (2000). Nesse contexto, atividades prático­experimentais de programação propiciam aos alunos uma reflexão aprofundada sobre seus projetos de design de interação a partir de situações reais de uso.

Com o intuito de ampliar o repertório de possibilidades de experimentação dos alunos no LIFE e de profissionais da área do Design, este projeto de pesquisa se propõe a expandir a investigação sobre as linguagens de programação por e para designers, explorando principalmente o potencial da linguagem de programação Lua , e adicionalmente 3

estabelecendo relações também com as linguagens Python e Javascript.

Objetivos O objetivo geral deste estudo é explorar o potencial das linguagens de programação no

processo de ensino­aprendizagem de alunos de Design, ampliando o arcabouço criativo e as possibilidades de desenvolvimento no tocante ao Design de Interação. Para tanto, temos como objetivos específicos:

1. Levantar e estudar linguagens e ambientes de desenvolvimento similares ao da linguagem Lua, que possam beneficiar o ensino de programação para designers;

2. Identificar as especificidades e características das linguagens escolhidas em função da facilidade de aprendizagem por parte de componentes da comunidade criativa em seu primeiro contato com linguagens de programação e com o pensamento lógico matemático aplicado;

3. Aprofundar a investigação sobre a linguagem Lua e suas especificidades; 4. Identificar as limitações e capacidades da linguagem Lua no desenvolvimento de

projetos de Design de Interação; 5. Apresentar de forma didática a linguagem Lua para a comunidade criativa;

1 Arduino: https://www.arduino.cc 2 Interactive Development Environment ­ Ambiente de Desenvolvimento Interativo 3 Lua: https://www.lua.org/

Page 2: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

6. Documentar os processos e disponibilizar os resultados do estudo de forma didática e intuitiva.

Metodologia O caráter experimental e exploratório da pesquisa está em consonância com a

metodologia da prática reflexiva adotada no LIFE, que enfatiza a aprendizagem pelo fazer. Com base em Schön (2000), no processo de aprendizagem baseado na prática reflexiva, podemos identificar três tipos de reflexão: reflexão sobre a ação, em que pensamos retrospectivamente sobre o que fizemos; reflexão­na­ação, que consiste em refletirmos durante a ação, sem interrompê­la; e reflexão sobre a reflexão­na­ação, que reside no ato de pensar sobre a reflexão­na­ação passada, consolidando o entendimento de determinada situação e, desta forma, possibilitando a adoção de uma nova estratégia. Schön defende que a experimentação prática com situações reais de uso é a melhor maneira de se preparar um futuro profissional. O conceito de prática reflexiva é, portanto, fundamental para este estudo, permeando todo o seu desenvolvimento. Destacamos assim algumas etapas nesse processo:

1. Estudo das linguagens Lua, Python e Javascript; 2. Testes de desenvolvimento a partir de exemplos utilizados em aulas de Design de

Interação do curso de Design–Mídia Digital da PUC­Rio; 3. Comparação das linguagens de programação estudadas a partir do exercício intitulado

“Pong”; 4. Levantamento de ambientes de aprendizagem voltados para alunos de diferentes áreas,

interesses e conhecimentos de programação; 5. Pesquisa sobre processos colaborativos, inter, multi e transdisciplinares na educação; 6. Documentação do processo e elaboração de material com os resultados da pesquisa.

Ambientes, Softwares e Configurações Para que seja possível executar os códigos desenvolvidos na linguagem Lua, é

necessário instalar o interpretador Lua no sistema de desenvolvimento, apesar de o algoritmo poder ser desenvolvido em qualquer editor de texto. O software livre se encontra no site https://www.lua.org/ e dispõe de uma série de opções de download e configuração. Ao fim do processo, deve­se conseguir executar o interpretador Lua a partir do terminal do sistema ou prompt de comando . 4

Para o desenvolvimento de aplicações gráficas em Lua, foi escolhido o framework LÖVE 2D para Lua, principalmente por sua facilidade de uso. Para isso, é necessária a instalação do mesmo no sistema, disponível no site https://love2d.org/ . Opções de download para a maioria dos sistemas mais utilizados atualmente são fornecidas, possibilitando também a inclusão de seu arquivo binário junto aos jogos desenvolvidos para execução em qualquer 5

sistema. Ao fim do processo, deve­se conseguir executar o framework a partir do prompt de comando ou terminal do sistema.

Embora o desenvolvimento dos algoritmos presentes neste estudo tenham sido feitos utilizando o editor livre de códigos Visual Studio Code (VS Code) , qualquer outro editor, 6

como Notepad++ , SublimeText , Brackets ou similares poderiam ter sido utilizados. O 7 8 9

4 O terminal, no caso dos sistemas operacionais MacOS e Linux, e o prompt de comando, no caso do sistema operacional Windows, são aplicações que oferecem o controle dos arquivos e das configurações do sistema a partir de linhas de comando. 5 Um arquivo binário tem todos os seus comandos transcritos para a base binária, formada apenas por 0 e 1, para que ele possa ser executado pelo processador do computador. 6 VS Code: https://code.visualstudio.com/ 7 Notepad++: https://notepad­plus­plus.org/

Page 3: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

software em questão foi escolhido por fornecer uma variedade de vantagens, como a instalação de extensões que permitem a execução de testes dos códigos do combo Lua e LÖVE apenas pressionando uma sequência de teclas e a formatação do código baseado em sua sintaxe.

Para possibilitar o desenvolvimento dos códigos na linguagem Python 3.6, é necessária a sua instalação no sistema. O download está disponível no site https://www.python.org/ e fornece uma gama de versões e distribuições para cada sistema mais utilizado na atualidade. Ao término do processo, deve­se conseguir executar o Python a partir do prompt de comando ou terminal do sistema.

O pacote Pygame está disponível por meio do sistema de gerenciamento de pacotes conhecido como pip, que por padrão já vem instalado juntamente ao Python 3.6 . Este pacote tem seu processo de instalação descrito no site https://www.pygame.org/wiki/GettingStarted .

As linguagens Actionscript 2.0 e Actionscript 3.0 estão presentes nas distribuições do programa de animações e jogos Flash. A versão do software utilizada para o desenvolvimento dos conteúdos pertinentes a estas linguagens de programação foi a Adobe Flash CS6.

Os projetos que não foram desenvolvidos em JavaScript tiveram seu versionamento gerenciado pelo sistema de controle de versão GIT e o serviço de armazenamento em nuvem 10

de seus repositórios foi realizado no site BitBucket, acessível em https://bitbucket.org/ . O desenvolvimento na linguagem Javascript foi totalmente realizado utilizando o

ambiente online JSFiddle, disponível em https://jsfiddle.net ; portanto, todos os exemplos em JavaScript acompanham um link onde a interação possa ser experimentada.

Por fim, o ambiente de desenvolvimento Processing é requerido para que seja possível executar os códigos na linguagem Processing. O download para este software está disponível em https://processing.org/download/ . Apesar disso, sempre que possível, o código dos exemplos nesta linguagem serão disponibilizados no site OpenProcessing . 11

Levantamento de linguagens de programação Como um ponto de partida, a linguagem de programação Lua foi utilizada para fornecer

uma alternativa às linguagens utilizadas atualmente no contexto escolhido. Lua é uma linguagem de programação interpretada desenvolvida no instituto Tecgraf da PUC­Rio, que combina sintaxe procedural simples com poderosas construções de dados baseadas em tabelas associativas e semântica extensível, sendo uma das principais linguagens de sua categoria 12

em desenvolvimento de jogos e interações Para que os computadores possam executar as tarefas pretendidas pelos humanos, é

necessário que comandos sejam enviados ao computador, para que ele possa armazenar informações e realizar operações matemáticas, entre outras atividades. Os computadores precisam que essas instruções sejam transmitidas a eles na linguagem binária, formada pelos níveis lógicos 0 (ou falso) e 1 (ou verdadeiro). Ao invés de programar os computadores diretamente em linguagem binária, foram desenvolvidas linguagens de programação que se caracterizam por serem mais próximas da linguagem escrita, para que possam ser entendidas por seres humanos, mas ao mesmo tempo sejam estruturadas por regras semânticas e sintáticas de tal forma que possam ser convertidas em sequências de 0 e 1 e, assim, serem enviadas para processamento.

8 Sublime Text: https://www.sublimetext.com/ 9 Brackets: http://brackets.io/ 10 GIT: https://git­scm.com/ 11 OpenProcessing: https://www.openprocessing.org/ 12 Listagens onde as relações entre comando e ação são definidas

Page 4: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Existem gradações das linguagens para identificar quais estão mais próximas do nível de linguagem de máquina (binária), como Assembly e Fortran, consideradas linguagens de baixo nível, ou mais próximas da linguagem humana, como C e Java, consideradas de nível mais alto, mais distantes da linguagem de máquina.

Ao longo dos anos, diversas formas de resolver os mesmos problemas lógicos de forma diferente foram desenvolvidas. Estas formas diferentes foram agrupadas e definidas como paradigmas de programação. Os principais paradigmas de programação são:

Imperativo (também chamado de procedural); Estruturado; Funcional; Orientado a Objetos;

Cada linguagem de programação se apropria destes paradigmas para sua construção,

guiando assim as tomadas de decisão no tocante às estratégias de solução de problemas por parte do desenvolvedor. Paradigmas diferentes de programação significam um processo distinto de estruturação do código como um todo. As linguagens de programação podem ser multi paradigmáticas, ou seja, se apropriarem de mais de um paradigma de programação, como por exemplo JavaScript, que se apropria dos paradigmas imperativo e orientado a objetos para sua construção.

Uma linguagem ser intitulada imperativa, como no caso de Lua, significa que seu código é voltado para comandos, ações ou enunciados que buscam alterar o estado da aplicação, executadas de forma sequencial do topo ao fim do programa.

Linguagens de semântica extensível propiciam ao desenvolvedor adicionar ou alterar funcionalidades à estrutura original da linguagem, tornando­a mais completa e formando linguagens derivadas da linguagem original.

A linguagem Lua também é classificada como interpretada. Linguagens interpretadas são as que necessitam da execução de um programa interpretador intermediário antes de as instruções serem executadas pelo processador, ao invés de serem compiladas para serem executadas pelo processador diretamente em linguagem de máquina. Linguagens interpretadas são rápidas no processo de editar, testar e depurar , por não necessitarem da etapa de 13

compilação do código. Para efeito de comparação, outras linguagens interpretadas foram levantadas, uma vez

que a comparação se daria de uma forma mais justa. Portanto, outras linguagens como JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como possíveis alternativas, já que apresentavam igualmente uma forma prática de inserção de recursos audiovisuais às suas aplicações.

Houve um breve processo de aprendizagem prático­teórica com a linguagem Lua junto ao livro Programando em Lua (IERUSALIMSCHY, 2015), executando os exercícios propostos em cada capítulo. Por conta de conhecimento prévio, não foi necessário o acompanhamento de livros texto ou de listas de exercícios.

Comparação entre as linguagens Durante as aulas da disciplina Interfaces Físicas e Lógicas ministradas no LIFE pelos

professores João de Sá Bonelli e Luiz Torres Ludwig, é proposta uma atividade em que todos os alunos, em conjunto e em voz alta, desenvolvem um algoritmo baseado no conhecido jogo "Pong" utilizando o ambiente de desenvolvimento Processing. Uma versão de acordo com a proposta de exercício foi desenvolvida e disponibilizada no site OpenProcessing, uma

13 identificar os erros de lógica, semântica ou sintaxe e eliminá­los do código

Page 5: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

plataforma de compartilhamento de código voltado para programação criativa com Processing. Duas versões, uma simples e uma avançada deste mesmo exercício foram desenvolvidas utilizando o framework LÖVE e a linguagem Lua e, com exceção da linguagem Arduino, uma implementação foi desenvolvida para cada uma das outras linguagens de programação supracitadas. Para que a implementação desta interação na linguagem Python pudesse apresentar resultados gráficos, bem como fornecer respostas baseadas em entradas físicas do usuário, o pacote Pygame foi utilizado.

Todas as implementações deste exercício apresentam um resultado virtualmente idêntico em termos visuais, pois as mesmas medidas foram utilizadas para definir os elementos visuais e o tamanho da tela. A interação com a experiência é dada a partir do uso do mouse do computador para movimentar o retângulo da direita, simulando a raquete do jogador do jogo “Pong”. Ao deixar o quadrado, que simula a bola, ultrapassar o retângulo controlado, o jogo para e a mensagem “VOCÊ PERDEU!” é exibida na tela. A raquete da esquerda sempre iguala sua posição vertical com a posição da bola, portanto, o “oponente” nunca perde.

Figura 1. O jogo Pong em sua forma simples.

Todos os repositórios das versões encontram­se disponíveis para download e execução nos links listados abaixo, sendo a versão Javascript a única que se pode simplesmente acessar e utilizar­se da interação sem nenhuma configuração ou instalação. As versões em ActionScript dispõem de arquivos executáveis da interação (Windows e Mac):

Processing Simples ­ https://www.openprocessing.org/sketch/546803

Lua Simples ­ https://bitbucket.org/GutoSPereira/simple­pong­lua­love/src/master/ Complexo ­ https://bitbucket.org/GutoSPereira/pong­lua­love/src/master/

Page 6: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Python 3.6 Simples ­ https://bitbucket.org/GutoSPereira/python­game/src/master/

ActionScript 2.0 Simples ­ https://bitbucket.org/GutoSPereira/flash­as2.0­pong/src/master/

ActionScript 3.0 Simples ­ https://bitbucket.org/GutoSPereira/flash­as3.0­pong/src/master/

Javascript Simples ­ https://jsfiddle.net/bmdzegst

A versão na linguagem Lua considerada complexa possui um comportamento diferente,

pois dispõe de efeitos sonoros, imagens bitmap, efeitos de transição, progressão de dificuldade, múltiplas teclas para escolha de reiniciar o jogo ou sair, dentre outras características mais avançadas do que as demais versões, oferecendo, assim, a possibilidade de uma interação mais refinada. Assim, a intenção foi testar e poder exibir as capacidades da linguagem Lua em conjunto com o framework LÖVE. Todos os arquivos sonoros foram criados a partir do software livre Audacity . 14

Comparação quantitativa entre as linguagens Feitas as versões em cada uma das linguagens e ambientes escolhidos, foi possível fazer

uma comparação quantitativa dos códigos. As seguintes comparações foram realizadas:

Figura 2. Comparação quantitativa entre as linguagens levando em conta o exercício “Pong”.

Foram levados em consideração os seguintes três parâmetros para que fosse possível verificar algumas características inerentes a cada tipo de desenvolvimento:

1. Número total de linhas do código; 2. Ocorrência de caracteres não utilizados na escrita convencional, como colchetes,

chaves, asteriscos e similares; 3. Ocorrência de termos presentes na língua portuguesa ou inglesa em sua forma escrita;

14 Audacity: https://www.audacityteam.org

Page 7: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Foi possível perceber que a linguagem com o menor número de linhas, bem como a que

apresenta um menor número de ocorrência de termos literários foi a linguagem Lua. Juntamente com às linguagens ActionScript 2.0 e 3.0, Lua foi também a linguagem que apresentou o maior grau de semelhança entre a ocorrência de termos literários e caracteres não literários. As linguagens Python 3.6 e JavaScript apresentaram um número de ocorrências de caracteres não literários 63.6% e 40.6%, respectivamente, maior do que o número de ocorrência de termos literários.

Ao se adicionar a linguagem Processing na comparação, é possível perceber que os seus parâmetros são parecidos com os da linguagem Lua, com a exceção da ocorrência de termos literários, que é 66.3% menor, como é possível verificar na imagem a seguir.

Figura 3. Comparação quantitativa entre as linguagens Lua e Processing levando em conta o exercício “Pong”.

Comparação qualitativa entre as linguagens Uma grande vantagem da linguagem Processing em relação às outras linguagens aqui

estudadas é a existência de um ambiente de desenvolvimento que torna possível acompanhar, ao mesmo tempo, o desenvolvimento gráfico e o desenvolvimento lógico do programa. Por apresentar todas as opções de forma gráfica e intuitiva em sua interface, esta linguagem se torna mais palatável e menos hermética aos olhos de um usuário recém chegado. Para que as outras linguagens, principalmente Lua, Python e Javascript, tenham as mesmas facilidades de desenvolvimento se comparadas ao Processing, é necessário o desenvolvimento de uma IDE que possibilite a fácil manutenção do código, o teste das aplicações e a geração de arquivos executáveis para distribuição dos softwares gerados ao longo das aulas.

Page 8: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 4. IDE Processing. À direita, uma tela com o texto “Hello World”. Enquanto isso, a mesma frase é exibida no console.

Apesar disso, uma série de vantagens podem ser observadas em linguagens como Lua e Python 3.6 em relação à estrutura do código. A linguagem Processing apresenta um número muito baixo de termos literários presentes no vocabulário dos alunos, se comparado às outras linguagens, mantendo ainda as ocorrências de caracteres não literários, o que faz com que a percepção do código e absorção de sua estrutura pelos recém introduzidos à programação como um todo se torne menos favorável.

Page 9: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 5. Comparação visual e estrutural das linguagens Processing, Lua e Python.

Como pode ser observado na Figura 5, a linguagem Python 3.6 utiliza menos termos e consegue ser mais eficaz em relação à proporção de linhas de código para o resultado. Porém, o uso de palavras para delimitar os blocos de código faz com que a linguagem Lua se torne aparentemente mais compreensível para leigos. As linguagens Lua e Python, por utilizarem menos caracteres como parênteses e chaves, fazem com que seus algoritmos tenham uma aparência menos intimidadora se comparados aos da linguagem Processing.

A linguagem ActionScript 2.0 possui a facilidade de se utilizar das formas gráficas desenhadas a partir de ferramentas do programa Flash pelo desenvolvedor para separar seus códigos, bem como o uso de uma linha do tempo. Este estilo de desenvolvimento envolve não só um processo de codificação, mas também artístico e manual por conta de sua interface gráfica voltada para animação e desenho vetorial.

Page 10: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 6. Interface gráfica do programa Flash ­ elemento “bola” selecionado tem seu código exibido na aba “Actions”.

JavaScript foi a única linguagem das investigadas que não foi auto suficiente no desenvolvimento desta interação, necessitando conhecimentos em HTML e CSS para sua 15 16

conclusão. Ademais, o seu desenvolvimento foi o mais trabalhoso de todas essas linguagens. ActionScript 3.0, apesar de compartilhar o mesmo ambiente de desenvolvimento de

ActionScript 2.0, tem um processo mais parecido com as linguagens Lua e Python, por não precisar se utilizar da interface gráfica para criar os elementos a serem exibidos em tela.

Levantamento de ambientes de aprendizagem Parte importante da investigação sobre as linguagens de programação a serem ensinadas

aos alunos de Design na PUC­Rio foi pesquisar processos colaborativos, inter, multi e transdisciplinares na educação, principalmente voltados para a área de ensino da programação e do pensamento lógico­matemático aplicado.

Durante as aulas da disciplina Conceitos de Informática, obrigatória para alunos da habilitação em Mídia Digital do curso de Design na PUC­Rio, diversas formas alternativas de ensino de programação são apresentadas. Parte delas é voltada para meios de ensino da programação que não estão conectados abertamente a uma linguagem específica de programação ou, quando estão, apresentam uma abstração da parte de codificação dos algoritmos e se baseiam em uma abordagem visual e interativa.

A partir dos exemplos expostos, foi possível aprofundar o estudo sobre ambientes gráficos de desenvolvimento. Um bom exemplo disso são os jogos LightBot da iniciativa Hour of Code, disponível gratuitamente para android na Play Store para iOS na Apple Store e Blockly Games da Google for Education, disponível de forma gratuita em https://blockly­games.appspot.com/ .

15 HyperText Markup Language ­ Linguagem de Marcação de HiperTexto, tradução livre. 16 Cascading StyleSheet ­ Filha de Estilização em Cascata, tradução livre.

Page 11: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 7. Captura do jogo LightBot ­ Code Hour.

O jogo LightBot utiliza blocos de ação para controlar um pequeno robô para acender todos os locais em que o piso é azul. Conforme o jogo vai se desenvolvendo, diversos conceitos de lógica e informática são transmitidos.

Figura 8. Momento de depuração do código inserido via blocos do nível “Labirinto” do jogo Blockly Games, da Google for Education.

Page 12: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 9. Ao chegar no fim do percurso, o jogo mostra ao usuário a lógica em código JavaScript gerado a partir dos blocos inseridos.

O jogo Blockly Games é baseado na biblioteca gráfica Blockly, que transforma o navegador em uma interface gráfica de desenvolvimento lógico e proporciona a capacidade de exportar os códigos gerados a partir de blocos gráficos conectáveis para diversas linguagens, incluindo Lua, Python e JavaScript.

Figura 10. Demonstração das capacidades da biblioteca Blockly, disponível em https://developers.google.com/blockly/ .

Page 13: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Outro ambiente interessante de desenvolvimento é o Scratch, desenvolvido pelo Massachusetts Institute of Technology­MIT. Esta ferramenta online é voltada para a introdução de crianças e jovens à programação, a fim de que possam ser desenvolvidas interações simples por meio do navegador e , com toda certeza, este se mostrou o ambiente investigado com a maior divulgação.

Documentação e apresentação do material didático Desde o início da pesquisa, a disciplina Interfaces Físicas e Lógicas, citada

anteriormente, foi um ponto de referência, tanto para conhecimento dos conteúdos a serem explorados quanto para os parâmetros e métricas desenvolvidos para mensurar as capacidades relacionadas às diferentes linguagens de programação. Os conteúdos ministrados nas aulas pelos professores João Bonelli e Luiz Ludwig foram fortemente levados em consideração e foram adaptados para se adequarem à linguagem Lua, sendo esse um recorte de conteúdo identificado como o mais adequado para um primeiro desenvolvimento.

Os conceitos de informática expostos durante as sete primeiras aulas, que se encontram disponíveis no site da disciplina, http://bonelli.usuarios.rdc.puc­rio.br/dsg1412/index.html , principalmente para a turma ministrada pelo professor Bonelli, foram traduzidas para a linguagem de programação Lua. O repositório com todos os conceitos traduzidos, está acessível em https://bitbucket.org/GutoSPereira/progressao­de­aulas/src/master/ . Os conteúdos, incluindo conteúdos introdutórios sobre algoritmos e suas formas de representação em linguagem natural, em forma de fluxogramas e pseudocódigo são os que provavelmente serão inseridos no material didático que será desenvolvido ao final desta pesquisa.

Com o intuito de tornar o material didático mais atrativo visualmente e diminuir a tensão do usuário de estar consumindo um material didático voltado para o ensino da programação, a ilustradora e animadora Isabela Soares Quirino da Silva Fonseca foi convidada para criar um personagem que acompanhará todo o material didático. Em conjunto com o processo de criação do personagem, um projeto de composição tipográfica e cromática foi desenvolvido. As fontes tipográficas escolhidas para compor o material didático foram:

1. Título principal ­ Caveat Brush Regular 50px 2. Títulos internos ­ Caveat Bold 36px 3. Texto de apoio ­ Caveat Regular 30px 4. Corpo de texto ­ Montserrat Regular 12px

Page 14: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

Figura 11. Teste de aplicação tipográfica e inserção do personagem.

Conclusões Por meio das observações realizadas e conversas com os meus professores orientadores

João Bonelli e Luiza Novaes, além dos professores Luiz Ludwig e Roberto Ierusalimschy, foi possível identificar que para cada finalidade do ensino de programação, uma linguagem era favorecida em detrimento das outras, bem como o grau de familiaridade com o tópico de programação por parte do aluno e suas pretensões no tocante ao Design de Interação. Por conta disso, mostrou­se de suma importância que, independente de qual seja a linguagem de programação a ser aprendida, o indivíduo reconheça a existência de outras linguagens, bem como outros ambientes e estilos de desenvolvimento de interações. Uma vez ciente dessas outras formas de resolver um mesmo problema, ou mesmo de que um problema não solucionado em uma linguagem pode ser solucionado em outra utilizando de uma forma de pensar diferente, o aluno não se encontra preso a uma única forma de desenvolvimento.

Também foi possível verificar que, apesar de os ambientes gráficos de desenvolvimento possibilitarem uma série de facilidades quanto ao desenvolvimento dos códigos, é de extrema importância que os alunos tenham a capacidade de desenvolver logicamente um problema voltado para uma linguagem de programação, pois o objetivo principal do ensino desta competência não é que o aluno consiga sozinho resolver os problemas propostos, mas sim capacitar os alunos a, caso necessário, desenvolverem conteúdos de programação em situações reais ou, pelo menos, fazer com que consigam se expressar logicamente para se comunicar de forma coerente com os desenvolvedores, no caso de um ambiente multidisciplinar de trabalho.

Ao propiciar aos alunos de design o contato com conhecimentos abrangentes relacionados a programação criativa e a apropriação do pensamento lógico­matemático e de

Page 15: EXPERIMENTAÇÃO DA LINGUAGEM DE PROGRAMAÇÃO LUA EM … · 2018. 11. 8. · JavaScript (ECMAScript), Python 3.6, ActionScript 2.0 e ActionScript 3.0 também foram levantadas como

Departamento de Artes e Design

linguagens de programação, para uso em suas atividades profissionais, acredita­se que um espectro de possibilidades seja aberto para que os alunos se tornem profissionais criativos diferenciados. Espera­se que, ao absorver estes conhecimentos, os alunos ao desenvolver seus projetos de Design de Interação se sintam aptos a realizar testes iniciais. Espera­se, ainda, que esse aprendizado sobre programação possa se traduzir em facilidades para lidar com o processo lógico presente em seus projetos de design de interação.

Diversas formas de ensino de programação foram analisadas, sendo possível verificar que no processo de aprendizagem de programação é muito importante o desenvolvimento literal dos códigos ao invés de uma abordagem lúdica, em ambiente voltado para o desenvolvimento e apreensão apenas visual da lógica. Ao desenvolverem códigos, os alunos se apropriam desta forma de desenvolvimento e dominam uma nova área de conhecimento, aprofundando conceitos transmitidos em aula e o processo de redação de algoritmos.

Ao longo da pesquisa, identificamos que seria interessante verificar qual ou quais linguagens de programação estudadas eram mais aceitas e apresentavam um bom nível de aprendizado, desejável e adequado, por parte dos alunos de design e/ou não familiarizados com a área de Ciência da Computação. Um possível desdobramento para a pesquisa se configurou, então, em uma proposta de ensino de um conjunto de conceitos de programação, utilizando como base linguagens de programação diferentes, para grupos mistos, compostos por pessoas pertencentes a diferentes áreas de conhecimento. A intenção seria observar e estabelecer relações entre as diferenças, facilidades e/ou dificuldades no entendimento dos conceitos ao longo das aulas, e as linguagens adotadas para cada grupo. Vale ressaltar que os grupos mistos seriam compostos por membros com perfis semelhantes, para permitir a comparação. O intuito desta experiência seria verificar as dificuldades e as facilidades dos integrantes dos diferentes grupos, em cada uma das linguagens, e compreender os impactos delas no processo de aprendizagem de programação criativa. Referências BONELLI, João de Sá; NOVAES, Luiza (orientadora). Prática reflexiva em interfaces físicas: uma proposta de ensino­aprendizagem de design de interação . Rio de Janeiro: Tese de Doutorado, Departamento de Artes e Design, Pontifícia Universidade Católica do Rio de Janeiro, 2016 . IERUSALIMSCHY, Roberto. Programando em Lua . Tradução Ana Lúcia de Moura. 3ª ed., Rio de Janeiro: LTC, 2015. SCHÖN, Donald. Educando o profissional reflexivo: um novo design para o ensino e a aprendizagem . Porto Alegre: Artmed, 2000.