-
Notifications
You must be signed in to change notification settings - Fork 0
/
artigo.html
83 lines (75 loc) · 20.3 KB
/
artigo.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!DOCTYPE html>
<html lang="pt-bt">
<head>
<link href="estilos/limpo.css" type="text/css" media="all" rel="stylesheet" />
<link href="estilos/documento.css" type="text/css" media="all" rel="stylesheet" />
<meta charset="utf-8" />
<title>Webis: Linguagem e ambiente Web acessível de programação</title>
</head>
<body>
<section class="posTextual artigo">
<h1 id="anexoA">WEBIS: Linguagem e ambiente Web acessível de programação</h1>
<p class="autor"><strong>Lucas Pereira da Silva</strong></p>
<p class="resumo"><strong>Resumo</strong>: As dificuldades encontradas no aprendizado de uma primeira linguagem de programação estão relacionadas com a própria linguagem que é objeto de estudo e também com o ambiente de programação a ser utilizado. Boa parte das linguagens não possuem regras sintáticas e semânticas simples e tão pouco oferecem um ambiente de programação simplificado e intuitivo. Isso ocorre, pois na maioria dos casos, as linguagens de programação são desenvolvidas com um foco profissional e não de aprendizado <cite><a href="#referenciaArtigo1">[1]</a></cite>. Telis é uma linguagem e um ambiente de programação que busca resolver esse problema através de uma sintaxe simples e de uma abordagem que traz de forma natural na linguagem conceitos avançados de linguagens de programação. Entretanto, Telis não resolve o problema de pessoas com deficiência visual e que dependem da utilização de leitores de tela. Este trabalho terá o objetivo de unir as principais características de Telis com uma acessibilidade mais adequada e que permita que pessoas com deficiência visual possam ter um maior poder de expressão. Essa junção resultará no desenvolvimento de uma nova linguagem e de um novo ambiente de programação <i lang="en">Web</i>, chamados de Webis. <strong>Palavras-chave</strong>: linguagens de programação, Web, acessibilidade, pessoas com deficiência visual.</p>
<h2>Introdução</h2>
<p>As dificuldades encontradas no aprendizado de uma primeira linguagem de programação estão relacionadas com a própria linguagem que é objeto de estudo e também com o ambiente de programação a ser utilizado. Boa parte das linguagens não possuem regras sintáticas e semânticas simples e tão pouco oferecem um ambiente de programação simplificado e intuitivo. Isso ocorre, pois na maioria dos casos, as linguagens de programação são desenvolvidas com um foco profissional e não de aprendizado <cite><a href="#referenciaArtigo1">[1]</a></cite>. Em decorrência desse fato, o primeiro contato com uma linguagem de programação pode ser muitas vezes traumático, fazendo com que o programador iniciante perca o interesse.</p>
<p>A linguagem Telis, desenvolvida no <dfn>Laboratório de Software Educacional <abbr title="Laboratório de Software Educacional">Edugraf</abbr></dfn>, possui regras sintáticas e semânticas simples que podem ser facilmente assimiladas. Telis também é o nome do ambiente de programação oferecido para a linguagem. O presente projeto consistirá do desenvolvimento de uma linguagem baseada em Telis e de uma máquina de execução escrita diretamente em <span lang="en">JavaScript</span>. O projeto também deverá ter grande foco no ambiente de programação que deverá ser executado nativamente por navegadores Web. O novo ambiente e a nova linguagem de programação a serem desenvolvidos serão chamados doravante de Webis.</p>
<h2>Definição da linguagem baseada em Telis</h2>
<p>A linguagem Telis que vem sendo desenvolvida desde <time>1998</time> <cite><a href="#referenciaArtigo2">[2]</a></cite> pelo <abbr title="Laboratório de Software Educacional">Edugraf</abbr>, permite, através de construções sintáticas e semânticas simples, que o programador tenha um grande poder de expressão e possa expor de forma natural conceitos avançados como orientação a objetos, paralelismo, programação distribuída, programação de eventos e outros.</p>
<p>A linguagem Webis será criada a partir da linguagem Telis. As construções léxicas e sintáticas da nova linguagem serão muito semelhantes às mesmas existentes em Telis. A diferença entre as duas linguagens estará principalmente relacionada com os novos requisitos da linguagem Webis. Por exemplo, como Webis deverá ter suporte à manipulação de sons 3D, será necessário que esses recursos sejam incorporados à nova linguagem.</p>
<p>Um aplique Webis em execução será composto por um sistema de coordenadas cartesianas onde atores estarão distribuídos. Uma das características fundamentais do Webis será permitir que os atores possuam, além da representação gráfica, uma representação sonora equivalente. Com isso, sons poderão ser associados aos atores e sempre que um ator se movimentar no sistema de coordenadas, o sistema de som deverá refletir a mudança de modo que seja possível perceber sonoramente a movimentação do ator. Ou seja, as primitivas de posicionamento e movimentação como <code>frente</code>, <code>direita</code>, <code>andarPara</code> e outras, deverão provocar mudanças tanto no sistema gráfico quanto no sonoro.</p>
<p>O Webis disponibilizará algumas primitivas sonoras que permitirão o ator manipular sons. A primitiva <code>fixarSom</code> permitirá associar um som a um ator. Quando executada, essa primitiva obterá um parâmetro na pilha que indicará o endereço de um som que deverá ser associado ao ator. Um característica importante é que ao ator executar a primitiva, o som começará a ser tocado e a execução do ator seguirá normalmente, ou seja, o ator não será bloqueado. Após a finalização do som, o ator ficará em silêncio até que outro som seja fixado. Caso o ator deseje que o som seja tocado repetidamente, então bastará utilizar a primitiva <code>fixarSomContínuo</code>.</p>
<p>Por padrão, um ator iniciará em silêncio e mesmo que um som seja fixado, o ator permanecerá em silêncio. Para que um som fixado seja tocado será necessário que o ator utilize a primitiva <code>comSom</code>. Essa primitiva fará com o ator passe a emitir sons, caso possua algum associado a ele. Existirá também a primitiva <code>semSom</code> que terá o objetivo de silenciar o ator. Se o ator estiver com um som fixado, então a utilização da primitiva <code>semSom</code> fará com que o ator pare imediatamente tocar o som. Já se o ator não estiver com nenhum som fixado, então a primitiva <code>semSom</code> não terá nenhum efeito imediato, porém caso o ator execute futuramente a primitiva <code>fixarSom</code> ou <code>fixarSomContínuo</code>, então o som fixado não será tocado.</p>
<h2>HTML5 e JavaScript</h2>
<p>A <i lang="en">Web</i> é baseada em três importantes pilares: o <dfn>Identificador Uniforme de Recursos <abbr lang="en" title="Uniform Resource Identifier">URI</abbr></dfn>, o <dfn>Protocolo de Transferência de Hipertexto <abbr lang="en" title="Hypertext Transfer Protocol">HTTP</abbr></dnf> e a <dfn>Linguagem de Marcação de Hipertexto <abbr lang="en" title="Hypertext Markup Language">HTML</abbr></dfn> <cite><a href="#referenciaArtigo3">[3]</a></cite>. Neste projeto existirá um grande foco no terceiro pilar, em especial na mais nova versão do <abbr lang="en" title="Hypertext Markup Language">HTML</abbr>, o <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr>.</p>
<p>O <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr> não é apenas uma nova especificação para uma linguagem de marcação, mas sim um conjunto completo de tecnologias com novas funcionalidades. O objetivo das novas especificações é fazer da <i lang="en">Web</i> uma plataforma completa e aberta, permitindo que as tradicionais aplicações <i lang="en">desktop</i> possam ser inteiramente convertidas em aplicações <i lang="en">Web</i>. A vantagem disso é a existência de um padrão aberto, onde uma aplicação poderá ser desenvolvida independentemente do dispositivo em que será executada. Tudo que o dispositivo precisará é de uma navegador <i lang="en">Web</i> com suporte ao <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr>.</p>
<p>Dentre as principais especificações incorporadas ao <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr>, destacam-se a <dfn>Folha de Estilos em Cascata 3 <abbr lang="en" title="Cascading Style Sheet 3">CSS3</abbr></dfn> e as novas <abbr lang="en" title="Application Programming Interface">API</abbr>s do <span lang="en">JavaScript</span>, como a <i lang="en">Web Audio API</i> e a especificação de <i lang="en">Web Workers</i>. O <span lang="en">JavaScript</span> terá um papel fundamental no desenvolvimento da máquina Webis. Nesse capítulo serão discutidos conceitos importantes do <span lang="en">JavaScript</span> e do <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr> para que se possa compreender melhor os mecanismos utilizados pela máquina Webis.</p>
<h2>Máquina Webis</h2>
<p>A máquina Webis será responsável por executar os programas Webis. A máquina será escrita em <span lang="en">JavaScript</span> e seu ambiente de execução deverá ser em um navegador <i lang="en">Web</i>. Um programa escrito na linguagem Webis será, através do processo de geração de código, traduzido para uma lista de comandos <span lang="en">JavaScript</span>. A máquina Webis terá o objetivo de fornecer um ambiente de execução de modo que a entrada desse ambiente seja uma lista de comandos <span lang="en">JavaScript</span> que representa um programa Webis.</p>
<p>As etapas de análise léxica, sintática e geração do código do Webis serão realizadas através da ferramenta <abbr lang="en" title="Another Tool for Language Recognition">ANTLR</abbr>. O <abbr lang="en" title="Another Tool for Language Recognition">ANTLR</abbr> é um gerador de analisador léxico e sintático que pode ser utilizado para a criação de interpretadores de linguagens, compiladores e outros tradutores <cite class="parenteses"><a href="#referenciaArtigo4">[4]</a></cite>. No contexto desse projeto, o <abbr lang="en" title="Another Tool for Language Recognition">ANTLR</abbr> será utilizado para gerar um tradutor que transformará um programa codificado na linguagem Webis em um código <span lang="en">JavaScript</span>. Nesse sentido, o <abbr lang="en" title="Another Tool for Language Recognition">ANTLR</abbr> atuará como um <i lang="en">compiler-compiler</i>, e o código <span lang="en">JavaScript</span> será, então, executado pela máquina Webis. Um <i lang="en">compiler-compiler</i> é uma ferramenta que permite criar tradutores a partir de uma descrição formal de uma gramática.</p>
<p>A máquina Webis trata-se basicamente de uma máquina de pilha. Nela os parâmetros necessários para as operações são desempilhados, enquanto que os resultados das operações são empilhados. A entrada da máquina Webis nada mais é do que uma lista que contém as instruções do programa, sendo que cada uma dessas instruções é um elemento <span lang="en">JavaScript</span> que saberá se executar. O sistema de execução da máquina Webis, portanto, se torna muito simples em uma primeira análise. De forma simplificada, o que o núcleo da máquina Webis faz é enviar a ordem de execução para cada uma das instruções da lista recebida como entrada. Além da ordem de execução, o sistema de execução da máquina Webis fornece à instrução a ser executada o contexto do programa. Desta forma, cada instrução terá acesso à pilha de dados e ao escopo de variáveis, podendo empilhar e desempilhar elementos da pilha de dados e alterar, remover e criar variáveis.</p>
<p>A máquina Webis conterá um componente denominado ecossistema. O ecossistema será o responsável por gerenciar modelos, atores e qualquer interação desde último com a página <abbr lang="en" title="Hypertext Markup Language">HTML</abbr> ou com elementos que existam apenas no fluxo principal. Um programa Webis consistirá de uma página <abbr lang="en" title="Hypertext Markup Language">HTML</abbr> que conterá um <i lang="en">script</i> com o ecossistema. O ecossistema assumirá aqui o papel do <i lang="en">script</i> que executa no fluxo principal. Por isso, quando for falado em execução do ecossistema estará implícito que a execução é no fluxo principal. De forma análoga, um ator executará em um <i lang="en">Worker</i> e, por isso, quando um ator for mencionado estará implícito que a execução deste é em um <i lang="en">Web Worker</i>.</p>
<h2>Ambiente Webis</h2>
<p>Além da linguagem de programação e do ambiente de execução, o Webis também será composto por um ambiente de programação. Assim como o ambiente de execução, o ambiente de programação também deverá ser inteiramente disponível através de um navegador <i lang="en">Web</i>. Para o desenvolvimento do ambiente de programação será utilizado o <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr> em conjunto com algumas das suas mais recentes funcionalidades.</p>
<p>Ao acessar o Webis, qualquer usuário, estando autenticado ou não, poderá ter acesso aos apliques criados por outros usuários. Será permitido que qualquer usuário visualize e execute qualquer aplique. No ambiente Webis será possível visualizar a listagem de todos os apliques existentes. Por padrão, os apliques são ordenados de acordo com a data da última modificação. Através dessa ordenação, os usuário poderão acompanhar os mais recentes programas Webis que estão em desenvolvimento.</p>
<p>O ambiente Webis permitirá que os usuários carreguem sons no sistema. Dessa forma, os sons carregados poderão ser utilizados nos programas Webis. Assim como ocorre com os apliques, os sons também poderão ser utilizados por todos usuários. O Webis disponibilizará uma listagem com os sons carregados. Para utilizar um determinado som em um programa Webis, basta que o usuário forneça a <abbr lang="en" title="Uniform Resource Identifier">URI</abbr> do som como parâmetro das primitivas <code>fixarSom</code> e <code>fixarSomContínuo</code>. Usuários autenticados terão acesso à página <strong>Meus sons</strong>, onde todos os sons carregados pelo usuário serão listados.</p>
<p>O Webis possui uma abordagem voltada para permitir a criação de um ambiente colaborativo de desenvolvimento, onde programadores possam desenvolver e compartilhar soluções. É por esse motivo que os programas Webis poderão ser visualizados por qualquer pessoa. Mais do que isso, programas Webis poderão ser reutilizados e modificados para permitir que programadores possam trabalhar em conjunto para resolver um determinado problema. Qualquer programa Webis, criado através do ambiente, será implicitamente livre. O livre compartilhamento dos programas Webis traz algumas vantagens:</p>
<h2>Utilização do Webis na ACIC</h2>
<p>O Webis foi utilizado no Curso de Criação de Páginas Acessíveis e Programação <i lang="en">Web</i>, ministrado na <dfn>Associação Catarinense para Integração do Cego <abbr title="Associação Catarinense para Integração do Cego">ACIC</abbr>. O curso foi ministrado por Pablo Valério Polônia, mestre em Engenharia de Automação e Sistemas pela <dfn>Universidade Federal de Santa Catarina <abbr title="Universidade Federal de Santa Catarina">UFSC</abbr></dfn> e contou com a participação de cinco alunos, sendo quatro deles cegos e um com baixa visão. O curso foi dividido em duas partes, sendo a primeira parte voltada para a criação de páginas <i lang="en">Web</i> acessíveis com <abbr lang="en" title="Hypertext Markup Language">HTML</abbr> e <abbr lang="en" title="Cascading Style Sheet">CSS</abbr>, e a segunda parte focada no desenvolvimento de programas <i lang="en">Web</i> através da linguagem <span lang="en">PHP</span>. No contexto desse curso, o Webis foi utilizado com a finalidade de preparar os alunos com noções básicas de programação. Seu objetivo foi de servir como suporte para a segunda etapa do curso.</p>
<p>A utilização do Webis no curso foi voltada à apresentar os conceitos básicos existentes nas linguagens de programação, como estruturas de controle de fluxo, laços de repetição, estruturas de dados e outros. Percebeu-se no decorrer das aulas com Webis que a sintaxe, bastante simples, facilitou os alunos na hora de escreverem seus programas. Essa facilidade ficou bastante clara ao analisar as dificuldades encontradas pelos alunos em relação às sintaxes do <abbr lang="en" title="Hypertext Markup Language">HTML</abbr> e do <span lang="en">PHP</span>. O principal problema enfrentado pelos alunos com a sintaxe do Webis foi em relação às acentuações. As primitivas do Webis são acentuadas e em algumas ocasiões os alunos esqueceram de utilizar os acentos. A primitiva <code>fixarSomContínuo</code>, por exemplo, era escrita algumas vezes pelos alunos como <code>fixarSomContinuo</code>, gerando, assim, erros de execução.</p>
<h2>Conclusão</h2>
<p>A implantação do Webis através da linguagem JavaScript executando em um navegador <i lang="en">Web</i> se mostrou bastante plausível. Graças às novas funcionalidades provenientes do <abbr lang="en" title="Hypertext Markup Language 5">HTML5</abbr>, como <i lang="en">Web Workers</i> e <i lang="en">Web Audio API</i>, foi possível implementar adequadamente o modelo de execução e o sistema sonoro do Webis. A implementação foi dificultada em alguns aspectos devido às diferenças entre o modelo de execução do Webis e do <span lang="en">JavaScript</span>, entretanto essas dificuldades foram contornadas com estratégias apropriadas para a modelagem da arquitetura da máquina Webis. Se por um lado existiram dificuldades para a implementação do Webis devido ao uso do <span lang="en">JavaScript</span>, por outro lado o modelo de orientação a objetos baseados em protótipos unido com os aspectos funcionais da linguagem facilitaram bastante o processo de programação.</p>
<p>O sistema de sons do Webis também se mostrou viável para permitir que pessoas com deficiência visual possam, além de executar programas mais acessíveis, desenvolver seus próprios programas.</p>
<p>O Webis ainda pode evoluir bastante no sentido de facilitar o aprendizado de programadores iniciantes e de se tornar uma plataforma mais completa de desenvolvimento. Isso abre a possibilidade de trabalhos futuros virem a melhorar algumas características do Webis e trazerem novas funcionalidades. A ampliação do sistema gráfico e sonoro, a comunicação direta entre atores, o servidor de estímulos para permitir que apliques conversem entre si, a adição de novas funcionalidades no editor de programas e no ambiente de execução e a adição de novas primitivas são apenas algumas das melhorias que podem ser adicionadas a eventuais futuras novas versões do Webis. O Webis desenvolvido através deste trabalho possibilitou a criação de uma base sólida tanto para o ambiente de programação quanto para o ambiente de execução. Entretanto, melhorias e modificações são necessárias para permitir a criação de uma ambiente mais completo de desenvolvimento, abrindo, assim, a possibilidade de trabalhos futuros virem a contemplar essas melhorias e modificações.</p>
<h2>Referências bibliográficas</h2>
<p class="referencia" id="referenciaArtigo1">
[1] GOMES, Anabela; MENDES, A. J.
<strong lang="en">Learning to program</strong>:
<span lang="en">difficulties and solutions</span>.
<span lang="en">International Conference on Engineering Education</span>,
Coimbra, Portugal, 2007.
</p>
<p class="referencia" id="referenciaArtigo2">
[2] PIERI, Giovani.
<strong>Projeto e implementação de uma linguagem de programação</strong>.
Curso de Ciências da Computação, Departamento de Informática e Estatística, Universidade Federal de Santa Catarina,
Florianópolis, Santa Catarina, Brasil, 2007.
</p>
<p class="referencia" id="referenciaArtigo3">
[3] FERREIRA, Elcio; EIS, Diego.
<strong lang="en">HTML5</strong>.
W3C escritório Brasil,
2010.
Disponível em: <a href="http://www.w3c.br/pub/Cursos/CursoHTML5/html5-web.pdf">http://www.w3c.br/pub/Cursos/CursoHTML5/html5-web.pdf</a>.
Acesso em: maio de 2013.
</p>
<p class="referencia" id="referenciaArtigo4">
[4] PARR, Terence.
<strong lang="en">The definitive ANTLR reference</strong>:
<span lang="en">Building domain-specific languages</span>.
<span lang="en">The Pragmatic Bookshelf</span>,
2007. 358 p.
</p>
</section>
</body>
</html>