dsl para geração de objetos de aprendizagem · conceituação: a escola tradicional a escola...

Post on 30-Nov-2018

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DSL para geração deObjetos de Aprendizagem

Luis Carlos S. C. Retondaro

Agenda:

●Conceituação

●Estado da Arte

●Terminologia/Introdução

●Proposta

●Estudo de Caso

●Conclusão

Conceituação:

Conceituação:

●Na sala de aula do futuro, a produção do conhecimento é colaborativa; o professor tem a função de mediar o processo.

●Alguns professores já adotaram o modelo:

– Aula em casa e “dever de casa” na escola.● Ex. Steven Cramer, do Departamento de

Melhorias no Ensino da Universidade de Wisconsin (EUA)

Conceituação:

●“É um movimento que merece tanta atenção quanto o surgimento da internet e o advento da globalização. As mídias sociais, a sociedade em rede e os conteúdos colaborativos mudam tudo radicalmente”

● Antonio Flavio Testa, sociólogo e antropólogo da UnB e pesquisador da Faculdade de Educação.

Conceituação:

●Objetos de Aprendizagem – e-Learning

potencializar o contato.”● professor John Booske, também da

Universidade de Wisconsin.

Ferramentas de e-learning podem ●

Conceituação:

A escola tradicional A escola inteligente

A disposição da sala - O professor permanece em pé, diante dos alunos, junto ao quadro. Os alunos ficam sentados em carteiras individuais, separados em fila.

A disposição da sala - O professor fica circulando entre os alunos, verificando o andamento dos debates ou da pesquisa, tirando dúvidas e dando orientações. Os alunos sentam-se em mesas de três lugares para estimular atividades em grupo.

As atividades - Além de ouvir a lição do professor, o aluno responde a perguntas ou faz exercícios em livros e cadernos. As atividades práticas ficam condicionadas a horários e locais predeterminados.

As atividades - Os estudantes assumem o papel de pesquisadores, em vez de ouvintes. Passam a maior parte do tempo buscando respostas, debatendo e avaliando o trabalho de outros colegas.

Conceituação:

A escola tradicional A escola inteligente

O professor - Passa a maior parte do tempo explanando sobre a disciplina, falando e fazendo anotações no quadro-negro.

O professor - Na maior parte do tempo, propõe problemas para os alunos, coordena debates e orienta as pesquisas dos estudantes. Resume a aula expositiva ao mínimo necessário.

Recursos pedagógicos - Em classe, são utilizados cadernos, livros, quadro-negro e mapas, slides etc. Para usar outros recursos, os alunos costumam ir (em horários e dias específicos) para laboratórios de informática ou ciências, ou para uma sala de artes.

Recursos pedagógicos - Na mesma sala, há computadores, material de laboratórios de ciências e recursos da sala de artes. O professor pode estimular os alunos a encontrar um tipo de relevo num programa de mapas na internet e sugerir que eles reproduzam aquele tipo de terreno utilizando material como papel, massa e tinta.

Conceituação:

A escola tradicional A escola inteligente

O tempo - O ensino é restrito ao horário escolar, isto é, à duração das aulas. Quando deixa a escola, o aluno estuda por conta própria ou completa uma tarefa elaborada previamente pelo professor.

O tempo - A aprendizagem não se limita à escola. Pela internet, em qualquer horário, o estudante pode participar de chats ou fóruns com os colegas, acessar materiais elaborados pelo professor e publicar o resultado de seus próprios estudos.

O estado da arte

● MOOC

– Massive Open Online Course

Objetivos

●Objetivos Gerais:

– Auxiliar a geração de materiais didáticos para serem aplicados como ferramentas de e-learning

– Permitir adaptação automatizada do material gerado para diversas mídias

●Objetivos Específicos:

– Criar uma Linguagem de Programação de Domínio Específico (DSL)

– Integrar a DSL com o Blender

Introdução

●Criação de um Núcleo de Geração de Conteúdos Didáticos

– Primeiro plano: Professores e Técnicos

– Segundo plano: Especialistas

● Oficinas de Blender

– Foco em animação

● Criação de Linguagem de Programação

– Para “leigos”

– Específica para geração de conteúdo em vídeo, inicialmente.

Introdução

●Qual a abordagem ideal neste caso?

– Um Framework contextualizado ao domínio

●Caminho da solução: Linguagem “LDA”

– Protótipo:● Configuração de uma viewport:

view=”port1” video fade 640 540 120 140● Sobrepõe um vídeo a partir dos 12 segs, na

viewport indicada:

seg.mp4 >> 12 [ port1 ]● Agora ele assume a viewport principal, a

partir dos 15 segs

view = port1 >> 15

Introdução

● LDA + Blender

Introdução

● LDA + Blender

Introdução

●DSLs

●O assunto não é novo

– Algumas linguagens evoluíram para propósito geral, mas foram criadas com propósito de resolver problemas em determinadas áreas:

● COBOL – Negócios;● FORTRAN – Processamento numérico;● LISP – Processamento simbólico.

– Apesar disso, outras necessidades particulares surgiram e mais DSLs foram criadas.

Introdução

●Soluções empregadas:

– Bibliotecas de sub-rotinas – Frameworks e Componentes Orientados

a objetos

Introdução

●Soluções empregadas:

– DSLs● Normalmente são linguagens pequenas e

declarativas;● Oferecem um poder de expressão focado

em um domínio de problema particular;● Em muitos casos, programas DSL são

traduzidos para as chamadas de uma biblioteca de rotina comum e a DSL pode ser vista como um meio para esconder os detalhes dessa biblioteca.

Introdução

●Apesar de muitas DSLs terem sido projetadas e utilizadas ao longo dos anos, o estudo sistemático é muito recente.

●Embora a pesquisa seja atual e haja progresso substancial os autores explicam que continuará a ser importante por vários anos.

– Porquê?....

Introdução

●Porquê?

– Notações específicas do domínio vão além das limitações da GPL (definidas pelo usuário);

– Melhoria de produtividade (manutenção);

– Certas construções e abstrações específicas não podem ser mapeadas diretamente em funções e objetos de bibliotecas;

– Ao contrário de GPLs, DSLs não precisam ser executáveis. (isso é sempre bom?!)

Terminologia

●“Uma linguagem de domínio específico (DSL) é uma linguagem de programação ou linguagem de especificação executável que oferece, através de notações e abstrações apropriadas, um poder de expressão focado e geralmente restrito, a um domínio de problema particular.”

Terminologia

●DSLs são geralmente pequenas

●na literatura são também chamadas “micro-linguagens” (little-languagens)

– Às vezes porém elas contém uma GPL inteira, como sendo uma sublinguagem dela.

– Isto ocorre quando são projetadas como linguagens embutidas/extensões.

Terminologia

●ODM (Organization Domain Modelling)

– É preciso pensar o “domínio como conjuntos de sistemas”, visando a reutilização do código; ao invés de pensar o “domínio como mundo real”, como faz a comunidade de pesquisa em IA.

Terminologia

●ODM (Organization Domain Modelling)

– ODM enfatiza sistemas de software existentes (legados) como valiosas fontes de conhecimento de domínio.

Terminologia

●Compilador DSL

– Por ser declarativa a DSL é vista como uma linguagem de especificação

– Muitas DSLs são suportadas por um compilador DSL que gera as aplicações

– Neste caso, o compilador é referido como gerador de aplicações e DSL como linguagem de aplicação.

– Outras DSLs, como YACC e ADSL, não se destinam especificamente a programação de aplicações completas, mas sim a geração de bibliotecas e componentes.

Terminologia

●Outros termos

– Além disso, existe DSL para geração de documentos (TEX), ou imagens (PIC)

– Um termo comum para DSL voltada para processamento de dados, é Linguagem de 4ª geração (4GL)

– Programação de domínio específico, ou programa de usuário final, são termos relacionados a tarefas simples de programação de macros ou scripts, como a macro-linuagem do Excel, por exemplo, que é considerada uma DSL.

Exemplos

●Literalmente, existem centenas de DSLs

– Destas, apenas um subconjunto é realmente descrito na literatura

● Os exemplos clássicos mais conhecidos são:

– PIC, SCATTER, CHEM, LEX, YACC

– MAKE, SQL, BNF e HTML

Exemplos●Os domínios podem ser classificados em:

– Engenharia de Software: controle de comportamento, finanças, BD,etc ;

– Sistemas: Análise de estruturas de dados, driver de vídeo, especialização do sistema operacional,etc;

– Multimídia: Web, manipulação de imagem, Animação 3D, computação gráfica, etc;

– Telecomunicações: protocolos, comutação, autenticações, etc;

– Diversos: simulação, agentes móveis, visão comput., controle de robô, etc;

Desenvolvimento de uma DSL●Passos necessários:

● (1) Identificar o domínio do problema;● (2) reunir todo conhecimento relevante

neste domínio;● (3) classificar o conhecimento em várias

noções semânticas e operações;● (4) projetar uma DSL que descreva de

forma concisa aplicações no domínio;● (5) construir uma biblioteca que

implementa as noções de semântica;● (6) projetar e implementar um compilador

que traduz programas DSL para uma seqüência de chamdas à biblioteca;

● (7) Escrever programas DSL para todas as aplicações desejadas e compilá-los.

Estudo de Caso: Whimsy

– Artigo publicado na Game Developer, 2008

– Autor: Mick West co-fundador da Neversoft

●Whimsy é uma DSL que cria arte, baseada nas pinturas abstratas de Rodney Alan GreenBlat

– o artista responsável pelos personagens de “Parappa the Rapper”

Whimsy

●Domínio

– As obras do artista Greenblat

– Greenblat tem um grande conjunto de obras de arte com um estilo muito extravagante e distinto

– Para o domínio específico, foi

escolhida a obra de arte a partir de

sua turnê Elemental● uma coleção de pinturas semi-

abstratas em um estilo geomético

de cores vibrantes.

Whimsy

●Domínio

– A ideia era esta: Se um estilo de arte era p/ ser usado em um video-game, então pode ser muito útil ter uma DSL que encapsule o estilo e que permita a fácil criação de peças semelhantes.

– O primeiro passo na criação de uma DSL é ter uma ideia dos elementos que compõem o domínio.

Whimsy

●Domínio

– Olhando para o trabalho Elemental, podemos ver uma série de aspectos comuns:

● Há formas ovais concêntricas, com “pétalas” em várias seções.

● Muitas das obras têm círculos segmentados com círculos coloridos dentro deles.

● Existem hélices pequenas e diversas outras formas que se repetem tanto nas obras individuais como na coleção geral de Greenblat.

“Módulo Lunar” de Greenblat – parte do domínio

Whimsy

●Domínio

– A melhor forma de abordar a criação da DSL foi escolher uma peça (“Módulo Lunar”) e tentar replicar parte dela.

– A peça tem muitos elementos comuns em seu estilo:

● círculos sólidos, ovais concêntricas com gradientes de cor, pétalas e estrelas.

Whimsy

●Domínio

– Sendo mais seletivo, foi escolhida uma parte da peça:

Whimsy

●Código

– Para a primeira iteração, o autor decidiu "construir" em vez de "extender".

– Ele queria que o processo de criação fosse interativo para que ele pudesse editar o "código" em tempo real e ver imediatamente os resultados.

– Ele também não estava certo sobre o nível de abstração que ia usar

– Ele desejava que a linguagem fosse muito livre, sem restrições por requisitos de sintaxe.

Whimsy

●Código

– Para ter mais controle sobre a velocidade de execução, foi decidido construir um parser usando C++, chamado Whimsy.

– A exploração inicial foi bastante simples. O código seria lido em um arquivo, dividido em linhas, cada linha dividida em partes chamadas tokens, que são analisados com uma série de declarações "if"

Whimsy

●Código

– Exemplo:if (token == string("rectangle")){

debug_log("NEW RECTANGLE");CWhim *p_whim = new CRectangle();Add(p_whim);if (!grouping)

m_parse_context.clear();m_parse_context.push_back(p_whim);

}if (token == string("at")){

float x = (float)atof(tokenizer.NextToken().data());float y = (float)atof(tokenizer.NextToken().data());m_parse_context.back()->SetPosition(Vector2(x,y));

}

Whimsy

●Código

– Por existirem formas que distinguem outras formas, e formas que são composições de outras formas:

● Foi cricada uma lista hierárquica de objetos

– Foi criada uma classe abstrata● A composição da pintura é um vetor dos

objetois derivados dessa classe.

Whimsy

●Código

– Um exemplo de primitiva gerada pelo Whimsy:

superegg 0.15,0.10,3.5 at .3,.7 size 1.2 black distort .01petals 14 0.05 size 1.8 petalblueinner .88,.01 tvpurplesuperegg .1,.2,2 at .20,.7 size .4 distort .01 tvlimeinner .65,.01 tvyellowinner .45,.01 tvlightyellowsuperegg .1,.2,2 at .3,.7 size .5 distort .01 tvblackinner .85 tvbrowninner .80 tvredinner .75 distort .03 tvorangeinner .70 tvyellowsuperegg .1,.2,2 at .4,.7 size .4 distort .05 tvblueinner .6 distort .2 tvdarkblueinner .4 petalblue

Whimsy

●Resultado

Como muitos parâmetros são numéricos, fica fácil substituir o mecanismo de interação textual, por uma interface gráfica.

Whimsy

●Concluindo...● Muito mais tem de ser adicionado para a

linguagem ser capaz de criar o resto da peça ou outras obras da série.

● Mas já existe um conjunto muito poderoso de primitivas.

● Pode-se obter uma variedade de resultados a partir de código bastante simples.

● Este tipo de energia é algo que muitas vezes não existe até você colocar uma ferramenta como esta DSL nas mãos de um artista e dar-lhe a chance de brincar com os parâmetros e o código.

Whimsy

●Concluindo...● O código poderia facilmente ter sido

implementado em C++ como uma série de chamadas de função com funcionalidade muito semelhante.

– O problema é que teria que recompilar e executar o programa cada vez que fizesse uma mudança.

– Agora, os resultados de uma mudança são exibidos no instante em que é modificado, o que proporciona uma experiência muito mais interativa.

Whimsy

●Concluindo...● Poderia ter implementado Whimsy como

uma extensão de uma linguagem de script poderosa, como Ruby ou Python.

– Isso teria permitido um feedback quase instantâneo, mas a desvantagem é a sintaxe mais restritiva.

● Interface Gráfica– Uma razão para definir uma DSL original é

que ele pode ser mais facilmente estendido a partir de uma ferramenta de edição de texto para uma ferramenta de edição gráfica.

– Muitos parâmetros numéricos poderiam ser alterados através de GUI.

Whimsy

●Concluindo...

– Usado desta forma, uma DSL pode ser um passo intermediário útil no desenvolvimento de ferramentas.

Próximos passos...

●Selecionar um domínio ligado à proposta de trabalho

– Learning Objects, e-Learning, online Teaching

– Por exemplo:● Ensino de Física/Matemática/Lógica...

– Há laboratório experimental– Há pouca material que forneça liberdade

de criação em tempo real● Ensino de Saúde

– Há laboratório experimental (odontologia e anatomia)

– diversas características ainda não exploradas

Próximos passos...

●Modelar o domínio de aplicação

– ODM, por exemplo

●Projetar uma DSL que descreva de forma resumida as aplicações do domínio

●Construir uma biblioteca que implementa as noções de semântica do domínio.

●Revalidar a proposta, antes de fazer integração com o Blender

Obrigado!

luis.retondaro@gmail.com

top related