Lingua Gens

13
Ensino de linguagens formais e autômatos em cursos superiores de computação Marcus Vinícius Midena Ramos Resumo Linguagens formais e autômatos é uma disciplina fundamental dos cursos superiores da área de computação, especialmente daqueles que apresentam ênfase na formação científica do aluno, como é o caso dos cursos de bacharelado em Ciência da Computação e de vários cursos de Engenharia de Computação. Ela faz parte do nú- cleo denominado “Fundamentos da Computação” (conforme o cur- rículo de referência da Sociedade Brasileira de Computação [1]), e contempla tópicos que, normalmente, são considerados, pelos alu- nos, excessivamente áridos, abstratos, complexos e desvinculados da sua futura realidade profissional, o que contribui para reduzir o interesse e a motivação pelo seu aprendizado. O objetivo do pre- sente artigo é refletir sobre os conteúdos programáticos usualmente adotados para o ensino do seu conteúdo, oferecendo alternativas que possam contribuir para uma melhor assimilação dos tópicos da disciplina. Inicialmente é feita uma análise da enfoque comumente adotado para a construção e o desenvolvimento do referido con- teúdo. A seguir, apresentam-se propostas que possam contribuir para uma maior motivação dos alunos para o estudo da disciplina, assim como para uma aprendizagem mais eficiente. Palavras-chave: linguagens formais, autômatos, ensino, apren- dizagem. Abstract Formal languages and automata theory is a fundamental disci- pline in undergraduate computer programs, specially those with emphasis in the scientific education of the student, such as Com- puter Science and Computer Engineering . The discipline belongs to the kernel known as “Foundations of Computing” (according to the Brazilian Computer Society [1]), and contains a body of knowledge which is normally considered, by its students, as highly abstract, complex and unrelated to their future professional activi- ties, thus reducing their interest and motivation for its study. The objective of the present article is to reflect upon common practi- ces adopted in the development of its contents, presenting some alternatives that may contribute for a better absorption of the discipline. It starts with an analysis of the most usual approaches adopted, and then presents proposals that might contribute for a higher degree of motivation of the students, as well as for a more efficient learning process. Keywords: formal languages, automata, teaching, learning. UNIVASF — Universidade Federal do Vale do São Francisco Colegiado do Curso de Engenharia da Computação Avenida Antonio Carlos Magalhães, 510 — Santo Antônio Juazeiro — BA CEP 48902-300 [email protected] Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998 Vol. I N o. 1 22

description

Linguagens formais e automatos

Transcript of Lingua Gens

Page 1: Lingua Gens

Ensino de linguagens formais

e autômatos em cursos

superiores de computação

Marcus Vinícius Midena Ramos

Resumo

Linguagens formais e autômatos é uma disciplina fundamental doscursos superiores da área de computação, especialmente daquelesque apresentam ênfase na formação científica do aluno, como é ocaso dos cursos de bacharelado em Ciência da Computação e devários cursos de Engenharia de Computação. Ela faz parte do nú-cleo denominado “Fundamentos da Computação” (conforme o cur-rículo de referência da Sociedade Brasileira de Computação [1]), econtempla tópicos que, normalmente, são considerados, pelos alu-nos, excessivamente áridos, abstratos, complexos e desvinculadosda sua futura realidade profissional, o que contribui para reduzir ointeresse e a motivação pelo seu aprendizado. O objetivo do pre-sente artigo é refletir sobre os conteúdos programáticos usualmenteadotados para o ensino do seu conteúdo, oferecendo alternativasque possam contribuir para uma melhor assimilação dos tópicos dadisciplina. Inicialmente é feita uma análise da enfoque comumenteadotado para a construção e o desenvolvimento do referido con-teúdo. A seguir, apresentam-se propostas que possam contribuirpara uma maior motivação dos alunos para o estudo da disciplina,assim como para uma aprendizagem mais eficiente.

Palavras-chave: linguagens formais, autômatos, ensino, apren-

dizagem.

Abstract

Formal languages and automata theory is a fundamental disci-pline in undergraduate computer programs, specially those withemphasis in the scientific education of the student, such as Com-puter Science and Computer Engineering . The discipline belongsto the kernel known as “Foundations of Computing” (accordingto the Brazilian Computer Society [1]), and contains a body ofknowledge which is normally considered, by its students, as highlyabstract, complex and unrelated to their future professional activi-ties, thus reducing their interest and motivation for its study. Theobjective of the present article is to reflect upon common practi-ces adopted in the development of its contents, presenting somealternatives that may contribute for a better absorption of thediscipline. It starts with an analysis of the most usual approachesadopted, and then presents proposals that might contribute for ahigher degree of motivation of the students, as well as for a moreefficient learning process.

Keywords: formal languages, automata, teaching, learning.

UNIVASF — Universidade Federal do Vale

do São Francisco

Colegiado do Curso de Engenharia da

Computação

Avenida Antonio Carlos Magalhães,

510 — Santo Antônio

Juazeiro — BA

CEP 48902-300

[email protected]

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

22

Page 2: Lingua Gens

1 Introdução

Linguagens formais e autômatos constitui maté-ria considerada “clássica” na área da computação,uma vez que os seus principais resultados foramconsolidados nas décadas de 1960 e 1970,portantohá mais de 30 anos. Como resultado, existe um en-foque também “clássico” utilizado na produção deconteúdos programáticos e de estruturas curricu-lares voltados para o ensino dessa matéria. Textosdidáticos (tais como livros, apostilas e apresenta-ções) costumam adotar enfoques igualmente “clás-sicos”, com pouca diferenciação e inovação. Taisenfoques deixam, por vezes, de explorar caminhosque podem contribuir para aprimorar a qualidadeda aprendizagem dos alunos. O objetivo do pre-sente artigo é analisar o enfoque clássico, apre-sentando e analisando algumas sugestões para aconstrução de conteúdos programáticos (e, conse-quentemente, também, de textos didáticos) quesejam voltados para um ensino de linguagens for-mais e autômatos mais eficaz e mais estimuladordo aprendizado.

2 Formação teórica

O área da computação tornou-se, em pouco maisde 60 anos, um verdadeiro universo. O profissionalmoderno pode atuar em sub-áreas muito diversi-ficadas, as quais requerem conhecimentos especí-ficos e aptidões também bastante variadas.

Em função de toda essa diversidade, e tambémda complexidade a ela associada, os cursos supe-riores de computação se deparam com o dilemade procurar, com grandes esforços, acompanharas inovações e as tendências tecnológicas da área,incorporando-as de alguma forma aos seus currí-culos, ou, então, de oferecer aos seus alunos umasólida formação acadêmica, sobre a qual o futuroprofissional possa construir uma também sólidacarreira, conforme a sub-área em que pretendaatuar.

Se, por um lado, os cursos que possuem uma ên-fase maior nos aspectos tecnológicos da computa-ção favorecem a empregabilidade do aluno recém-formado, por outro lado esses mesmos alunos seressentem, à medida que o tempo passa, da faltade uma formação teórica mais completa que lhespermita se renovarem e se manterem competitivosno mercado de trabalho por mais tempo.

Por esse motivo, o estudo de matérias teóricas,como é o caso de Linguagens Formais e Autô-matos, não pode ter a sua importância relativi-zada na estrutura curricular de cursos que preten-dam formar profissionais preparados para enfren-tar não apenas os desafios atuais da computação,mas também, e especialmente, aqueles que aindaestão por vir.

O investimento no aprendizado dos fundamen-tos da computação significa a garantia de supri-

mento de futuros bons profissionais para a área,assim como do desenvolvimento de boas e novastecnologias e produtos.

A falta de investimentos, por outro lado, podeVol. 1 acarretar prejuízos que vão bem além dafalta de bons profissionais e das limitações decor-rentes da sua atuação no mercado. Ela pode, noprazo de alguns anos, provocar uma escassez crí-tica de professores e pesquisadores com esse perfil,sem os quais toda e qualquer ação de recupera-ção na área ficaria definitivamente comprometida.Num mundo globalizado, ela pode também criardependências de caráter científico que poderiamser nocivas ao país.

A discussão acerca dos aspectos teóricos dacomputação, e da forma de ensino dos mesmos,deve ser, portanto, atual e permanente, não po-dendo ser relegada a um segundo plano, especial-mente quando se percebe que as áreas de naturezatecnológica estão sempre, e cada vez mais, pressi-onando por mais disciplinas e mais carga horárianos cursos de graduação em computação.

3 Temas

O corpo de conhecimento contido na área de lin-guagens formais e autômatos é derivado de duassub-áreas de conhecimento que eram considera-das de forma independente uma da outra até adécada de 1960: linguagens formais, de um lado,e teoria de autômatos, de outro. Foi a partir daspesquisas efetuadas e dos resultados obtidos nessadécada que se pôde estabelecer uma relação maisdireta entre tais sub-áreas, as quais foram, a partirde então, combinadas numa única grande área deconhecimento e são, nos dias de hoje, considera-das como sendo praticamente indissociáveis umada outra.

A sub-área linguagens formais trata da carac-terização, classificação, formalização e estudo daspropriedades das linguagens estruturadas em fra-ses. O marco inicial dessa sub-área é o trabalhode Chomsky, um matemático e linguísta que, emmeados da década de 1950, pesquisava a forma-lização gramatical de linguagens naturais. Ape-sar do seu insucesso no cumprimento desse obje-tivo, ele apresentou uma classificação das lingua-gens estruturadas em frases, organizada em níveisde complexidade crescente, que se tornaria refe-rência fundamental para o estudo das linguagensformais. Tal classificação passou a ser conhecidacomo Hierarquia de Chomsky [2].

Partindo-se da classe de linguagens mais “sim-ples” em direção à classe de linguagens mais “com-plexa” (os termos “simples” e “complexa” refe-remse aos diversos aspectos das classes de lingua-gens consideradas, mas costumam englobar pro-priedades estruturais, aspectos de formalizaçãosintática, custo do reconhecimento e grau de difi-culdade na demonstração de certas propriedades),

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

23

Page 3: Lingua Gens

a Hierarquia de Chomsky contempla: a classe daslinguagens regulares (ou tipo 3); a classe das lin-guagens livres de contexto (ou tipo 2); a classe daslinguagens sensíveis ao contexto (ou tipo 1) e, fi-nalmente, a classe das linguagens recursivamenteenumeráveis (ou tipo 0).

Por se tratar de uma taxonomia de linguagensna qual se percebe, naturalmente, uma escala decomplexidade crescente, e, também, devido aofato de que as classes de complexidade inferiorestão propriamente contidas nas classes de com-plexidade mais elevada, é comum considerar a Hi-erarquia de Chomsky como ponto de partida paraa organização de conteúdos programáticos (e ou-tros materiais didáticos) para a disciplina lingua-gens formais e autômatos, adotando-se as diferen-tes classes de linguagens contidas nessa hierarquiacomo principais temas de estudo.

Tal organização proporciona ao aluno uma in-trodução natural aos assuntos da área e permiteque o seu envolvimento aconteça de maneira gra-dual, à medida que o estudo das classes de lingua-gens mais simples dá lugar ao estudo das classesde linguagens mais complexas.

Como as classes de linguagens estão propria-mente contidas umas nas outras, o estudo de umanova classe a partir da anterior preserva todo o co-nhecimento adquirido pelo aluno até aquele mo-mento, e permite o aprendizado incremental damatéria, em que são estudados apenas os aspectosespecíficos das linguagens contidas na nova classee que não existiam na classe anterior.

Após a consolidação da Hierarquia de Chomskycomo referencial principal para o estudo das lin-guagens formais, novas pesquisas identificaramdiversas novas e importantes classes de lingua-gens situadas entre aquelas já identificadas porChomsky. Entre as mais importantes encontram-se: a classe das linguagens livres de contexto de-terminísticas e a classe das linguagens recursivas.

Por se tratar de classes de linguagens relevan-tes tanto do ponto de vista teórico quanto prá-tico, pelo menos um subconjunto dessas seis clas-ses de linguagens (regulares, livres de contexto de-terminísticas, livres de contexto gerais, sensíveisao contexto, recursivas e recursivamente enume-ráveis) é nomalmente adotado como base para aseleção dos temas principais que serão desenvolvi-dos numa disciplina sobre o assunto.

Se, por um lado, a sub-área de linguagens for-mais oferece uma perspectiva de estudo baseadana síntese de cadeias (através de dispositivos gra-maticais) para o estudo das várias classes de lin-guagens, por outro lado a sub-área de teoria deautômatos oferece uma perspectiva de estudo ba-seada na análise de cadeias (através de disposi-tivos de reconhecimento) com o mesmo objetivo.Naturalmente, a equipotência dos dispositivos desíntese e de análise para cada classe de lingua-gens considerada permite uma grande liberdade

de escolha na forma de organização do materialdidático.

Os três tipos de tema que podem ser conside-rados como principais estruturadores de materiaisdidáticos sobre o assunto são, portanto: (i) as vá-rias classes de linguagens; (ii) os vários tipos dedispositivos de análise e (iii) os vários tipos dedispositivos de síntese. Como consequência, é co-mum encontrar materiais didáticos que sejam es-truturados em torno de combinações diversas des-ses três tipos de tema, sem preocupação especialcom relação à sua uniformidade.

No caso de temas escolhidos no universo dosdispositivos de análise, as denominações tipica-mente adotadas são “Autômatos Finitos” (disposi-tivos capazes de reconhecer linguagens regulares),“Autômatos de Pilha” (capazes de reconhecer lin-guagens livres de contexto) e “Máquinas de Tu-ring” (capazes de reconhecer, com pequenas varia-ções, linguagens sensíveis ao contexto, linguagensrecursivas e linguagens recursivamente enumerá-veis).

De maneira similar, temas como “GramáticasLivres de Contexto” e “Gramáticas Sensíveis aoContexto” podem ser encontrados em materiaisorganizados em função dos tipos de dispositivo desíntese. “Linguagens Regulares”, “Linguagens Li-vres de Contexto” etc são típicos para temas deri-vados das principais classes de linguagens conhe-cidas.

Organizar um conteúdo programático em tornode temas que correspondam aos nomes das classesde linguagens ou dos tipos dos dispositivos de sín-tese e análise correspondentes não constitui, porsi só, um obstáculo ao aprendizado. Os problemaspodem surgir quando se adota um enfoque misto,em que partes do material são designados a partirdos nomes das classes de linguagens e outros sãodesignados a partir dos nomes dos corresponden-tes dispositivos de análise ou síntese.

Não é incomum encontrar casos, por exemplo,com a seguinte sequência de temas: (i) “Lingua-gens Regulares”, (ii) “Linguagens Livres de Con-texto” e (iii) “Máquinas de Turing”. A decisão,nesse caso, é normalmente justificada pelo fato deque, através das Máquinas de Turing é possíveldefinir e discorrer sobre três classes de linguagens,todas elas de complexidade superior à classe daslinguagens livres de contexto.

Do ponto de vista pedagógico, esse enfoquecria dificuldades para o aluno, uma vez que osprincipais elementos de estruturação do texto (ouseja, os seus temas) possuem naturezas diferen-tes (classes de linguagens e dispositivos de reco-nhecimento) contribuindo assim para uma menoruniformidade na apresentação do conteúdo.

O recomendado, num caso como esse, seriamanter o conceito “classe de linguagens” comosendo a natureza de todos os temas principais,procurando abstrair as várias versões da Máquina

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

24

Page 4: Lingua Gens

de Turing conforme a classe de linguagens que es-tiver sendo discutida.

Assim, por exemplo, o tema sobre linguagenssensíveis ao contexto poderia ser desenvolvido so-bre Máquinas de Turing com fita limitada, o temasobre linguagens recursivas sobre Máquina de Tu-ring que sempre param e, finalmente, o tema sobrelinguagens recursivamente enumeráveis sobre Má-quinas de Turing que podem ou não parar quandoa cadeia de entrada não pertence à linguagem emquestão.

Trata-se, sem dúvida, de um desenvolvimentoum pouco mais trabalhoso, se comparado com otradicional, no qual adota-se como ponto de par-tida a Máquina de Turing geral para depois criar-se versões restritas, derivando-se delas as subclas-ses de linguagens correspondentes. A estratégiaproposta, no entanto, garante uma absorção gra-dual e sempre justificada do conteúdo apresen-tado, sem mudanças bruscas dos conceitos funda-mentais orientadores do estudo e sem antecipaçõesde assuntos que são, no fundo, dispensáveis paradiscutir a classe de linguagens sob foco.

Situações similares a essa acontecem quandosão escolhidos, como temas principais, termosde naturezas distintas que designam, além dostipos já citados, outros tópicos relacionados àsclasses de linguagens, como por exemplo: (i) assuas propriedades gerais (questões decidíveis, pro-priedades de fechamento etc); (ii) as suas pro-priedades específicas (minimização de autômatosfinitos,“pumping lemmas”etc);ou (iii) particulari-dades de uma determinada classe de linguagens(como é o caso da decidibilidade).

A superação desse obstáculo conceitual podeser alcançada se for possível atingir um elevadograu de uniformização na denominação dos te-mas principais, considerando-se apenas conceitosde mesma natureza, de preferência conceitos demaior abrangência e que englobem outros que lhesão naturalmente subordinados ou especializados.

Sugere-se, como alternativa, que os temas prin-cipais sejam denominados a partir das classes delinguagens que se deseja apresentar, iniciando-secom a mais simples e terminando com a maiscomplexa. Todos os demais assuntos relacionados(dispositivos de síntese, dispositivos de análise,propriedades etc) podem facilmente ser acomoda-dos dentro de uma estrutura de tópicos (doravantedenominados subtemas) que contemple não ape-nas os aspectos genéricos mas também os aspectosespecíficos das classes de linguagens consideradas.

Dessa forma, o ponto de partida para o estudoserá sempre uma classe de linguagens, e todos osdetalhes a ela relacionados ficam dentro dela en-capsulados e a ela subordinados. O sequencia-mento de temas, nessa proposta, evita que o focodo leitor seja deslocado do conceito mais funda-mental — a classe de linguagens que está sendoestudada — para outros conceitos de abrangên-

cia mais localizada e de natureza distinta, contri-buindo assim para uma melhor compreensão docontexto no qual se desenvolve o conteúdo.

4 Subtemas

A escolha, a denominação e o sequenciamento dossubtemas que são discutidos dentro de cada temasão igualmente importantes para motivar o aluno,facilitar a sua contextualização em relação res-tante do assunto e orientar o seu estudo.

Quando se trata da organização interna dos te-mas de um material didático sobre linguagens for-mais e autômatos, não existe uma estrutura con-ceitual padrão que possa servir como referênciapara o seu desenvolvimento. Por outro lado, ossubtemas que são discutidos dentro de cada temasão considerados clássicos e há pouca variação emrelação ao que se encontra num ou noutro textoda área. Por esse motivo, é usual se trabalhar comgrande liberdade na geração do conteúdo, porémnem sempre o resultado favorece a construção deuma visão, e portanto de um entendimento, estru-turados por parte do aluno.

Considera-se, normalmente, que cada classe delinguagens tem as suas características e o seu pró-prio conjunto de subtemas que devem ser discuti-dos no contexto da própria classe. Pouca atençãocostuma ser dada às possibilidades de construçãode um roteiro que possa ser replicado para diferen-tes classes de linguagens, o que poderia contribuirpara uma melhor percepção dos subtemas que sãocomuns e daqueles que são específicos para as di-versas classes de linguagens consideradas.

Uma análise preliminar de tais subtemas, noentanto, revela que, para as classes de lingua-gens consideradas anteriormente, todos os seguin-tes subtemas são presentes e relevantes, podendoassim constituir o alicerce para uma organizaçãomais estruturada do material didático, indepen-dentemente da classe de linguagens considerada(com uma ou outra exceção): (i) propriedades es-truturais; (ii) formalização gramatical; (iii) mo-delo de reconhecimento; (iv) equivalência entre osformalismos de representação de linguagens; (v)principais propriedades; (vi) a relação da classecorrente com a classe de linguagens precedente(consideradas numa escala de complexidade cres-cente) e, finalmente, (vii) a demonstração da exis-tência de linguagens que não pertencem à classe delinguagens corrente (como fator motivador para aapresentação da classe de linguagens seguinte).

Considere-se, por exemplo, a classe das lingua-gens livres de contexto. De acordo com o enfo-que proposto, uma possível sequência de apresen-tação dos subtemas relacionados a essa classe delinguagens, e que ainda guardam relação com sub-temas equivalentes para as outras classes de lin-guagens, seria: (i) balanceamento de termos (ani-nhamento); (ii) gramáticas livres de contexto; (iii)

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

25

Page 5: Lingua Gens

autômatos de pilha; (iv) equipotência dos autô-matos de pilha com as gramáticas livres de con-texto (no que se refere à capacidade de represen-tação de linguagens livres de contexto); (v) ques-tões decidíveis e propriedades de fechamento (daslinguagens livres de contexto); (vi) demonstraçãode que a classe das linguagens regulares está pro-priamente contida na classe das linguagens livresde contexto e (vii) demonstração de que existemlinguagens que não são livres de contexto (atravésdo “Pumping Lemma” para as linguagens livres decontexto).

De maneira semelhante, roteiros equivalentespodem ser desenvolvidos para as demais classesde linguagens.

Se, por um lado, a escolha de um conjunto pa-drão de subtemas a ser desenvolvido para cadaclasse de linguagens colabora de maneira significa-tiva para o melhor entendimento acerca da natu-reza de cada subtema e também da maneira comoele é contextualizado em cada classe de lingua-gens, por outro lado é fato que existem outrossubtemas que são específicos de um grupo redu-zido de classes de linguagens,ou mesmo pertinen-tes a uma única classe de linguagens.

Pode-se citar como exemplo, entre outros, ossubtemas transdutores finitos e a minimização deautômatos finitos (para a classe das linguagensregulares), árvores de derivação e ambiguidade(para a classe das linguagens livres de contexto)e decidibilidade (para a classe das linguagens re-cursivamente enumeráveis).

Nesses casos, a harmonização de tais subtemasespecíficos, juntamente com os subtemas que se-jam comuns a todas as demais classes de lingua-gens, pode produzir o efeito de fazer com que oaluno tenha uma melhor percepção das particula-ridades encontradas em cada classe de linguagensestudada, ou seja, das características e proprieda-des que são únicas em cada classe (ou subconjuntode classes).

Tal organização favorece, do ponto de vista pe-dagógico, uma compreensão mais clara acerca danatureza dos subtemas que são discutidos paracada classe de linguagens, e instiga o aluno a de-senvolver mecanismos mentais de entendimentoque sejam similares a outros previamente construí-dos, ou totalmente novos e independentes, con-forme os subtemas estudados possuam naturezasidênticas ou totalmente distintas de outros ante-riormente estudados.

Assim, por exemplo, acontece com o estudo dos“Pumping Lemma”. O mecanismo mental desen-volvido pelo aluno para compreender o “PumpingLemma” para as linguagens regulares é semelhanteao que ele desenvolve para compreender o “Pum-ping Lemma” para as linguagens livres de contexto(finitude do número de estados em um autômatofinito versus finitude do número de símbolos não-terminais em uma gramática livre de contexto).

Situação semelhante acontece com o estudo dasformas normais para gramáticas, não importandose se trata da classe das linguagens regulares ouainda das classes das linguagens livres de con-texto,sensíveis ao contexto ou recursivamente enu-meráveis.

Essa proposta evidencia, por outro lado, a ine-xistência de um “Pumping Lemma” para a classedas linguagens sensíveis ao contexto e, também,a inexistência de um subtema que discuta a mi-nimização de autômatos de pilha. Isso, do pontode vista pedagógico, pode ser bem explorado peloprofessor e também pelo aluno.

Sugere-se, portanto, que a escolha e a ordena-ção dos subtemas a serem discutidos no contextode cada classe de linguagens seja feita de formaque, num primeiro momento, se estabeleça umacorrelação direta com subtemas de mesma natu-reza quando estes ocorrerem em classes diferentesde linguagens e, num segundo momento, se evi-dencie os subtemas que são específicos para umaou mais classes de linguagens.

Através da percepção das semelhanças e tam-bém das diferenças entre os subtemas que com-põem o corpo de conhecimento acerca de cadaclasse de linguagens, o aluno é instrumentado deforma que ele possa, em cada momento do seuestudo, compreender de forma contextualizada arelevância e a abrangência de cada tópico que lheé apresentado, o que naturalmente contribui parauma melhor absorção do conteúdo.

5 Demonstrações

Não é raro encontrar materiais didáticos que dei-xam para o leitor a tarefa, nem sempre fácil, decompletar a demonstração de certos teoremas.

Tal recurso pode ser considerado didáticoquando a disciplina prepara o aluno, até o pontoem que a exigência é apresentada, com as ferra-mentas necessárias à obtenção de uma solução queseja possível de ser alcançada de forma individuale sem esforços exagerados.

Além disso, há que se considerar a própria na-tureza dos teoremas cujas demonstrações são en-tregues ao aluno. Quando se trata de teoremasmenores, secundários no desenvolvimento do con-teúdo, ou mesmo de teoremas cuja demonstraçãoé de baixa complexidade, não há dúvida de queesse é um recurso de aprendizagem válido.

Nesses casos, ele pode ser considerado como ins-trumento de motivação para o aluno e é impor-tante como mecanismo pedagógico.

Quando, por outro lado, as demonstraçõespedidas ao aluno são relativas a teoremas degrande importância no desenvolvimento da disci-plina,ou,ainda, quando elas necessitam um instru-mental e uma bagagem normalmente não encon-tradas em estudantes que se deparam pela pri-

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

26

Page 6: Lingua Gens

meira vez com a matéria, então o efeito obtidoserá justamente o contrário. O aluno incapaz deefetuar as demonstrações solicitadas sente-se frus-trado e, naturalmente, desmotivado a seguir emfrente com os seus estudos.

A fim de se evitar a ocorrência de problemas deaprendizagem como consequência de demonstra-ções incompletas ou mesmo inexistentes, convémque todos os principais teoremas sejam demons-trados no próprio material didático ou no decorrerdas atividades de ensino.

Como exemplos de teoremas que costumam tera sua demonstração relegadas (pelo menos par-cialmente) a um segundo plano, pode-se citar aequipotência plena (portanto bidirecional) entrecada um dos principais formalismos utilizados narepresentação de linguagens regulares (gramáti-cas lineares, autômatos finitos e expressões re-gulares), a demonstração da existência da formanormal αAβ → αγβ para gramáticas sensíveis aocontexto, a demonstração da equivalência entrea classe das linguagens aceitas por Máquinas deTuring com fita ilimitada e daquelas geradas pe-las gramáticas irrestritas e ainda a demonstraçãoda existência de linguagens estruturadas em frasesque não são recursivamente enumeráveis.

6 Intuição e redundâncias

A aquisição de um conhecimento é uma tarefacomplexa que pode ser simplificada quando se fazuso de dois mecanismos complementares impor-tantes: explicações que apelam para a intuição doaluno e o emprego de formas alternativas para seapresentar um mesmo assunto ou resultado.

Os materiais didáticos da área de linguagensformais e autômatos adotam, normalmente, umalinguagem matemática (e portanto árida),que re-quer grande capacidade de abstração e raciocíniológico do aluno. Se, por um lado, essa caracterís-tica não pode ser mudada na sua essência (poisa matemática, especialmente a matemática dis-creta, é a base para todo o corpo de conhecimentodesenvolvido acerca do assunto), por outro ladoé fato que, por trás de todo formalismo, disposi-tivo algébrico ou demonstração de algum teorema,existe uma fundamentação que pode ser tradu-zida em termos mais coloquiais, sem prejuízo parao rigor matemático necessário ao seu desenvolvi-mento, e que colabora de forma significativa parauma melhor compreensão dos assuntos que estãosendo apresentados.

Dessa maneira, constitui boa prática acrescen-tar, ao lado das demonstrações matemáticas for-mais,textos em linguagem natural, exemplos quede alguma forma remetam às experiências ou co-nhecimentos prévios do aluno, a comparações comresultados ou assuntos similares encontrados namesma área ou em outras áreas do conhecimento,e o que mais se julgar conveniente, de modo que,

juntamente com o rigor dos formalismos empre-gados, o aluno tenha mais e melhores condiçõesde inferir sobre o que se pretende demonstrar, fi-xando com mais convicção os resultados e des-pertando para correlações nem sempre óbvias quepossam existir entre o tópico estudado e outrosque façam parte do mesmo corpo de conhecimentoou mesmo de disciplinas distintas.

O emprego de redundâncias também contribuicom esses objetivos. Certos teoremas podem serdemonstrados através da análise de um ou maisalgoritmos que produzem o resultado desejado.Por exemplo, a eliminação de transições em vazioem autômatos finitos, a minimização de autôma-tos finitos e a demonstração da equipotência entreautômatos de pilha não-determinísticos e gramá-ticas livres de contexto podem ser feitas atravésde mais de um algoritmo diferente em cada caso.

Nessas situações, a escolha de apenas um al-goritmo em cada caso suprime, para o aluno, apossibilidade de comparar soluções, compreendermelhor a natureza de cada uma delas e, final-mente, considerar a possibilidade de desenvolvera sua própria solução.

O uso de redundâncias é um recurso didáticoque pode ser decisivo e ajudar muito o aluno que,por um motivo qualquer, às vezes enfrenta obstá-culos de difícil transposição se o caminho que lheé oferecido é único. Nem sempre o que é consi-derado mais claro, mais simples ou mais didáticopelo professor é percebido da mesma forma peloaluno, uma vez que tais adjetivos não possuemum sentido objetivo e, geralmente, o seu signifi-cado decorre das experiências prévias vividas peloindivíduo em questão.

Não obstante, não é raro encontrar desenvolvi-mentos, ou mesmo materiais didáticos, nos quaisa complexidade algébrica e dos formalismos é re-legada a um segundo plano, e a apresentação dateoria é reduzida a uma mera enumeração de re-sultados, ou pouco mais do que isso.Tal estraté-gia prejudica a formação de bons profissionais, etambém de futuros pesquisadores, e não deve serincentivada.

7 Temas relacionados

Certos tópicos não são direta ou obviamente rela-cionados. Em alguns casos, no entanto, um enfo-que que desvende relações menos óbvias entre es-ses tópicos, relacionando-os de alguma forma nãousual ou não tradicional, pode contribuir, e muito,para um melhor entendimento de ambos os assun-tos, eventualmente alargando as fronteiras de vi-são do aluno para além do trivial.

Isso acontece, por exemplo, com as questões de-cidíveis das linguagens livres de contexto e quandoa questão “A cadeia w pertence à linguagem L”? éapresentada ao aluno. O encaminhamento naturalda resposta para essa questão consiste na apresen-

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

27

Page 7: Lingua Gens

tação de um algoritmo que, aceitando como en-trada uma gramática livre de contexto na FormalNormal de Greibach, gera sempre como saída umaresposta (afirmativa ou negativa) para a questãoacima.

Se essa estratégia contempla uma solução satis-fatória para a questão apresentada, por outro ladoé fato que, nesse estágio do estudo, a inserção detópicos contendo uma introdução ao tema da aná-lise sintática é bem-vindas, pois eles guardam umarelação direta com a questão formulada.

Se adotada, essa estratégia permite que o alunocompreenda melhor a abrangência e a profundi-dade de uma questão aparentemente simples e semmaiores consequências, e, além disso, entenda aorigem de toda uma tecnologia que foi desenvol-vida com o objetivo de produzir soluções eficientespara a resposta dessa mesma pergunta. Em adi-ção, podese introduzir as classes das linguagensLL(k) e LR(k), mostrando a relação delas comas demais classes de linguagens consideradas, emparticular a classe das linguagens livres de con-texto. Como resultado, verifica-se que a explo-ração conjunta dessas dois tópicos contribui parafortalecer a compreensão de ambos.

Outra situação que pode ser explorada de formasemelhante refere-se ao estudo dos temas ambigui-dade e não-determinismo em linguagens livres decontexto, dois assuntos encontrados normalmentena maioria dos materiais didáticos da área de lin-guagens formais. A exploração da relação entreeles, no entanto, não é encontrada com tanta fa-cilidade.

A definição de gramáticas e de linguagens ambí-guas, em particular de linguagens inerentementeambíguas (ou seja, aquelas para as quais não exis-tem gramáticas que não sejam ambíguas), conduznaturalmente a um particionamento da classe daslinguagens livres de contexto entre (i) o subcon-junto das linguagens que são inerentemente ambí-guas e (ii) o subconjunto das linguagens que são,por assim dizer, não-ambíguas (ou seja, aquelaspara as quais é possível identificar pelo menos umagramática que as gerem e que não sejam ambí-guas).

Por outro lado, a definição de determinismotambém conduz a uma partição da classe das lin-guagens livres de contexto. Nesse caso, entre osubcojunto das linguagens para as quais é pos-sível identificar pelo menos um autômato de pi-lha determinístico que as reconheça (as chama-das linguagens livres de contexto determinísti-cas) e o subconjunto das linguagens para as quaisisso não é possível (ou seja, linguagens que po-dem ser reconhecidas apenas através de autôma-tos de pilha não-determinísticos), também conhe-cida como classe das linguagens livres de contextonão-determinísticas.

Determinismo (ou não-determinismo) e ambi-guidade (ou não-ambiguidade) são dois conceitos

que ensejam duas partições da classe das lingua-gens livres de contexto. E a pergunta que surgenaturalmente é: “Qual é a relação que existe entreessas partições?”.

Uma investigação um pouco mais cuidadosa [3]permite concluir, no entanto, que a classe daslinguagens livres de contexto determinísticas estápropriamente contida na classe das linguagens li-vres de contexto não-ambíguas. Ou seja, (i) todalinguagem determinística é também não-ambígua;(ii) nem toda linguagem não-ambígua pode serreconhecida de forma determinística e (iii) exis-tem linguagens que são, simultaneamente, ineren-temente ambíguas e não-determinísticas.

Portanto, a classe das linguagens livres de con-texto pode ser considerada a partir de três ou-tras subclasses propriamente contidas umas nasoutras, e todas elas de grande importância práticae teórica:a subclasse das linguagens determinísti-cas descendentes LL(k), a subclasse das lingua-gens determinísticas ascendentes LR(k), que cor-responde também à classe das linguagens livres decontexto determinísticas, e a subclasse das lingua-gens não-ambíguas, esta última contida propria-mente na classe das linguagens livres de contextogerais.

Tal enfoque, não usualmente adotada no en-sino de linguagens formais e autômatos, associadois conceitos aparentemente desconexos (deter-minismo e ambiguidade) e produz resultados quefazem com que o leitor tenha melhor domínio ecompreensão sobre ambos, entendendo vários dosseus desdobramentos, como por exemplo a defini-ção natural de outras classes de linguagens, alémdas inicialmente consideradas.A alternativa (ouseja,a não exploração dessa correlação) simples-mente deixa de contribuir para uma maior solideze abrangência do aprendizado do aluno.

8 Pesquisas anteriores e atuais

A área de linguagens formais e autômatosdesenvolveu-se principalmente nas décadas de1960 e 1970, quando pesquisadores no mundo in-teiro voltaram as suas atenções para as questõesem aberto da área, conseguindo produzir os re-sultados mais importantes que são conhecidos eusados nos dias hoje. Por esse motivo, a área éentendida como sendo formada por um corpo deconhecimento sólido e estável, em torno do qualpouco se pode fazer em termos de inovação, inclu-sive e principalmente do ponto de vista pedagó-gico.

Isso, no entanto, não precisa ser necessaria-mente verdade.Tal visão desconsidera os seguin-tes fatos: (i) que parte do grande volume de co-nhecimento produzido nos anos passados não estápresente de forma significativa nos conteúdos pro-gramáticos e nos materiais didáticos atuais; e (ii)que os resultados das pesquisas atuais não são se-

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

28

Page 8: Lingua Gens

quer citados nesses mesmos materiais.

Se, por um lado, é fato que os conhecimentosque são gerados ao longo de anos de pesquisa de-vem sempre ser relativizados, priorizados, depura-dos e sintetizados, para dessa forma compor umadisciplina moderna e consistente, formada apenaspor material relevante para a teoria e/ou para aprática profissional, por outro lado não se podedeixar de observar que muitos dos tópicos que hojesão considerados ultrapassados na área ainda po-dem ter um papel importante como recurso didá-tico, com grande benefícios para o aprendizado delinguagens formais e autômatos.

Um exemplo disso são os estudos que foram fei-tos acerca de gramáticas com derivações controla-das [4] (como é o caso das gramáticas controladaspor linguagens regulares, das gramáticas matri-ciais, das gramáticas programadas ou ainda dasgramáticas periodicamente variantes no tempo).Trata-se de formalismos gramaticais livres de con-texto que, através de algum tipo de mecanismode extensão relativamente simples, tornam-se ca-pazes de representar linguagens sensíveis ao con-texto.

De especial relevância é o caso das gramáticaslivres de contexto com derivações controladas porlinguagens regulares. Do ponto de vista didático,trata-se de dois formalismos clássicos, que são es-tudados em qualquer curso tradicional de lingua-gens formais e autômatos. No entanto, uma sim-ples combinação desses formalismos resulta numterceiro e novo formalismo, potente o suficientepara representar linguagens de uma classe hierar-quicamente superior, sem, portanto, a necessidadede se recorrer a formalismos mais complexos comoé o caso das gramáticas de atributos, das gramá-ticas de dois níveis ou mesmo das gramáticas sen-síveis ao contexto tradicionais que, em qualquercaso, apresentam um nível de sofisticação que de-sestimula o aluno.

Ao resgatar e introduzir assuntos antigos nosconteúdos programáticos atuais, como é o caso dasgramáticas com derivações controladas, o aluno éfavorecido em vários aspectos. Ele: (i) percebecomo simples combinação de outros formalismosjá conhecidos pode resultar em novos formalismosmais poderosos, e se sente estimulado a raciocinarde forma similar em outros contextos; (ii) cons-trói a sua compreensão de um assunto novo (nocaso, a representação sintática formal de lingua-gens sensíveis ao contexto) a partir da compre-ensão de formalismos previamente estudados e decomplexidade relativamente simples. Apesar dapouca divulgação nas salas de aula, e também nosmateriais didáticos de apoio produzidos, existemmuitos resultados de pesquisa atual na área que,se forem apresentados de forma comedida, apoi-ados em fundamentações de clara percepção peloaluno e relacionados com os tópicos clássicos dadisciplina, podem ser explorados sem grandes difi-culdades no ambiente de aprendizagem, com gran-

des vantagens para o aluno.

É representativo o caso dos autômatos de pi-lha estruturados [5], formalismo desenvolvido parapermitir a construção de reconhecedores sintáticosque apresentam vantagens importantes, inclusivedidáticas, quando comparados com os tradicionaisautômatos de pilha.

Organizado na forma de múltiplas submáqui-nas mutuamente recursivas, esse formalismo apre-senta, como principais vantagens: (i) uma maioreficiência de execução (pois a pilha é utilizada ape-nas quando isso for estritamente necessário, ouseja, no reconhecimento de construções aninha-das, operando como um autômato finito quandoesse não for o caso), e (ii) a possibilidade de secriar projetos e implementações modulares, comganhos em termos de legibilidade e de manuten-ção.

Um outro exemplo são as pesquisas atuais so-bre dispositivos adaptativos [6], as quais podemser aplicadas a dispositivos de natureza diversa,como é o caso das gramáticas e dos autômatos.

A inserção de tópicos sobre gramáticas e autô-matos adaptativos num texto introdutório sobrelinguagens formais e autômatos pode trazer osseguintes benefícios para o aluno: (i) demons-tra, como nos casos das gramáticas controladaspor regras e dos autômatos de pilha estrutura-dos, que a concepção de novos formalismos combase nos formalismos tradicionais pode ser van-tajosa sob inúmeros aspectos, especialmente osde caráter mais prático (facilidade de construçãoe eficiência da operação); (ii) demonstra que aárea ainda é objeto de pesquisas e que ela consti-tui,portanto,campo fértil para a atuação de futu-ros jovens pesquisadores.

Naturalmente que a idéia não é esgotar todosos principais resultados de uma linha de pesquisaatual (qualquer que seja ela) num material ounuma atividade didática de caráter introdutório,até porque esse não é o seu objetivo principal. Noentanto, a simples citação, apresentação e exem-plificação de alguns resultados mais importantesde uma linha de pesquisa moderna pode ter umefeito altamente motivador sobre o aluno, criandoperspectivas positivas para o aprofundamento doseu estudo e propiciando uma melhor compreen-são dos conceitos da teoria clássica.

Recomenda-se, portanto, manter sempre emvista o conhecimento gerado no passado, muitasvezes deixado perdido no tempo e no espaço, masainda assim capaz de contribuir para uma apren-dizagem mais eficaz no momento atual, e tambémo conhecimento gerado no presente, muitas vezesde circulação restrita, mas, apesar disso, maduroo suficiente para se relacionar com o conhecimentotradicional, proporcionando ao aluno mais e me-lhores instrumentos de aprendizagem.

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

29

Page 9: Lingua Gens

9 Experimentação

É comum que os materiais e as atividades didáti-cas de linguagens formais e autômatos adotem umenfoque essencialmente algébrico, o que exige dosalunos não apenas uma boa formação matemáticamas também, e principalmente, uma grande ca-pacidade de raciocíno lógico e abstrato. Por essemotivo, os estudantes de tais textos precisam li-dar com um nível de complexidade adicional, alémdaquele que é inerente aos assuntos da área, paraconseguir bons resultados na disciplina.

Não é raro, por outro lado, encontrar enfoquesque buscam superar essas dificuldades através douso de ferramentas computacionais que permitemao aluno vivenciar, em ambientes de simulação,os principais conceitos vistos na teoria. Ao con-templar o estudante com uma estratégia didáticacomplementar e alternativa em relação àquela ex-clusivamente algébrica, criam-se as condições paraque, através de perspectivas diferentes, ele obte-nha um nível de compreensão mais completo emrelação à matéria.

A categoria mais comum de dispositivos empre-gados para essa finalidade são os simuladores, se-jam eles gráficos ou não. Um simulador é um pro-grama de computador que permite ao aluno cons-truir dispositivos computacionais que reproduzamcomportamentos equivalentes aos dos dispositivosalgébricos estudados na teoria.

Dessa forma, é possível experimentar com gra-máticas, reconhecedores, transdutores ou outrosformalismos abstratos (como por exemplo expres-sões regulares), bem como verificar suas propri-edades (por exemplo, determinar se a linguagemaceita por um autômato finito é vazia ou não) ouaplicar algoritmos de mapeamento (por exemplopara a minimização de autômatos finitos).

A diferença entre o uso de um ambiente gráficoou não-gráfico (baseado em texto apenas) consistena facilidade com que o usuário consegue criar,visualizar e modificar os seus modelos para, emseguida, aplicar sobre eles um conjunto normal-mente básico e predefinido de operações disponi-bilizadas pelo simulador.

Um simulador de gramáticas livres de contextopoderia, por exemplo, além de verificar a sintaxeda gramática fornecida como entrada, oferecer aousuário operações que lhe permitissem, por exem-plo, gerar de forma aletória sentenças pertencentesà linguagem por ela definida, montar árvores dederivação, detectar a existência de símbolos inú-teis e inacessíveis, simplificar a gramática e ob-ter uma forma normal qualquer equivalente. Con-forme o tipo de formalismo, a lista pode ser tornarrelativamente extensa.

De especial interesse, quando se trata da simu-lação de autômatos (finitos, de pilha, Máquinasde Turing, etc), são os simuladores gráficos, quepermitem ao usuário um grande conforto na edi-

ção e visualização dos dispositivos. Através demenus, janelas e botões, e usando principalmenteas ações de clicar e arrastar com o mouse, o usuá-rio consegue facilmente construir o seu dispositivo,deixando-o pronto para a aplicação das operaçõesdisponibilizadas pela ferramenta. São diversas asferramentas existentes com esse objetivo, mas tal-vez a mais conhecida seja o JFLAP [7].

Os simuladores (sejam eles gráficos ou não) ser-vem como importante instrumento de aprendiza-gem e contribuem de forma decisiva para uma me-lhor compreensão dos aspectos dinâmicos dos dis-positivos estudados (como, por exemplo, a tran-sição entre estados com consumo de símbolo numautômato finito, ou a derivação de uma forma sen-tencial numa gramática), e servem também para avisualização do resultado da aplicação prática dealgoritmos de transformação ou de mapeamentode dispositivos (como por exemplo a eliminaçãode não-determinismos em autômatos finitos ou aobtenção de expressões regulares a partir de autô-matos finitos).

Seja como auxílio para analisar um comporta-mento de um dispositivo ou de um método, sejacomo recurso para validar as respostas de exer-cícios propostos ou ainda como ferramenta paraexploração de conceitos obscuros da teoria, o fatoé que tais simuladores oferecem ajuda significativapara o aluno que, de outra forma, estaria limitadoàs representações algébricas e à sua própria capa-cidade de raciocínio e de abstração.

Uma outra vantagem derivada dessa estratégiaconsiste no fato de que o aluno de computaçãopassa a utilizar uma ferramenta computacionalpara estudar a matéria, o que normalmente servecomo elemento de estímulo para o seu aprendi-zado.

Apesar de todas essas vantagens, tais simula-dores limitam a capacidade de experimentação dousuário final, a qual costuma acontecer apenasdentro das possibilidades previstas pelo desenvol-vedor da própria ferramenta.

Assim, por exemplo, o usuário encontra à suadisposição um conjunto limitado e fechado de dis-positivos sobre os quais pode realizar simulações.Além disso, para cada tipo de dispositivo pre-visto, ele pode realizar apenas os experimentospreconcebidos, devendo se satisfazer com os mes-mos. Suponha-se, como exemplo, que um certosimulador permita ao usuário construir modelosde linguagens regulares.

Suponha-se também que ele ofereça ainda umasérie de operações sobre tais modelos. Masimagine-se que o usuário deseja experimentar comquestões decidíveis das linguagens regulares, emparticular sobre linguagens que sejam vazias, fi-nitas ou infinitas. Se a ferramenta não oferecersuporte para esse tipo de experimentação, nadapoderá ser feito no âmbito da simulação e o usuá-rio deverá se contentar com a forma tradicional

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

30

Page 10: Lingua Gens

para a fixação do conteúdo.

Tal situação decorre do fato de que a maioriados simuladores existentes atualmente são fecha-dos, ou seja, o usuário não dispõe de condiçõespara modificar ou estender o seu comportamento,agregando novas funcionalidades ou alterando ou-tras características.

Como alternativa, sugere-se o uso de ambientesde simulação abertos (em contraposição aos “si-muladores fechados”), nos quais o usuário, alémde poder utilizar os seus modelos predefinidos,experimentando-os à luz de um conjunto de opera-ções também prefinidas, pode ainda: (i) criar no-vas operações para modelos predefinidos; (ii) mo-dificar operações preexistentes para modelos pre-definidos e (iii) definir novos modelos de dispo-sitivo, atribuindo-lhes um conjunto de operaçõesiniciais.

Simuladores com essas características podemainda beneficiar os seus usuários na medida emque os modelos e operações que constituam o seunúcleo inicial façam parte de um projeto estrutu-rado, coerente e bem documentado, que permitaespecializações e reaproveitamento de código comfacilidade e naturalidade. Dessa forma, o usuáriocompreende melhor o projeto do conjunto de mo-delos iniciais, entende a sua fundamentação e assuas relações internas e externas, e percebe as pos-sibilidades de desenvolvimento que eles oferecem,sentindo-se estimulado para criar novos modelos enovas operações baseadas nas já existentes.

Tal estratégia serve, em última instância, paraque alunos e professores possam aprender não ape-nas a partir de um conjunto predefinido de mode-los e operações, mas também, e principalmente, apartir do projeto, implementação e testes de novosmodelos e das suas respectivas operações. Cria-se,assim, a possibilidade estimulante de se trabalharcom projetos e atividades de laboratório numa dis-ciplina de caráter essencialmente teórico.

Não bastassem essas vantagens, a estratégiaproposta permite a exploração de um outro as-pecto, de caráter mais prático, e portanto de es-pecial interesse para os cursos de engenharia decomputação ou afins. Trata-se da questão da im-plementação dos modelos teóricos e das diferen-tes técnicas que podem ser aplicadas nessa im-portante etapa, levando-se em conta os resultadosesperados de performance e outros relacionados.

Por esse motivo, o uso de simuladores abertospode ser visto, também, como uma estratégia queajuda a promover o interrelacionamento de umadisciplina de caráter principalmente teórico (lin-guagens formais e autômatos) com outras disci-plinas da computação, de caráter mais prático e,muitas vezes, já conhecidas e dominadas pelos alu-nos (como é o caso da modelagem, metodologiade desenvolvimento, programação e testes de soft-ware), o que (i) contribui para diminuir o isola-mento da disciplina no contexto do curso;(ii) serve

como estímulo para o aluno, na medida em que elepode relacionar o conteúdo da mesma com o deoutras disciplinas; (iii) permite a experimentaçãoassociada à realização de projetos e à construçãode artefatos de software.

Apesar de todas as vantagens apresentadas, oemprego de simuladores, sejam eles gráficos ounão, fechados ou abertos, deve sempre ser feitode modo criterioso, a fim de não preterir o pen-samento algébrico do aluno. Se usadas de formaampla e sem planejamento, tais ferramentas po-dem induzir uma espécie de preguiça mental queprejudica o alcance dos objetivos da disciplina.

10 Estudos de caso

A organização da disciplina Linguagens Formaise Autômatos em torno de temas e subtemas queapresentem uma certa uniformidade e, especial-mente, que sejam organizados de forma hierár-quica, permitindo ao aluno identificar afinidadesentre eles, pode ser, conforme visto nas seções an-teriores, um grande facilitador do aprendizado.Na prática, no entanto, as principais referênciasde estruturação curricular para essa disciplina nãorefletem tal visão.

Um exemplo disso pode ser encontrado no“Computing Curricula 2001 — Computer Science”[8], uma referência da ACM (Association for Com-puting Machinery) para a elaboração de currículospara cursos de Ciência da Computação.

Nesse documento, o tópico Teoria de Autôma-tos é definido dentro da área Algoritmos e Com-plexidade, e possui a seguinte relação de unida-des sugerida: (i) autômatos finitos determinís-ticos; (ii) autômatos finitos não-determinísticos;(iii) equivalência entre autômatos finitos determi-nísticos e não-determinísticos; (iv) expressões re-gulares; (v) “pumpimg lemma” para a expressõesregulares; (vi) autômatos de pilha; (vii) relaçãoentre autômatos de pilha e gramáticas livres decontexto; (viii) propriedades de gramáticas livresde contexto; (ix) MáquinasdeTuring; (x) Máqui-nas de Turing não-determinísticas; (xi) conjuntose linguagens; (xii) Hierarquia de Chomsky; e (xiii)Tese de Church-Turing.

As unidades (i), (ii), (vi), (ix) e (x) referem-se a modelos de dispositivos de análise de lingua-gens. A unidade (iv) refere-se a um dispositivode síntese de linguagens. As unidades (iii) e (vii)referem-se à equipotência entre dispositivos de na-turezas distintas. As unidades (v) e (viii) discu-tem propriedades das correspondentes classes delinguagens. E, finalmente, as unidades (xi), (xii)e (xiii) discutem tópicos isolados. Não há, por-tanto, uma uniformidade conceitual significativano conjunto de unidades sugeridas.

Outro exemplo é encontrado no “Currículo deReferência da SBC para Cursos de Graduação emComputação e Informática” [1]. Nele, a matéria

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

31

Page 11: Lingua Gens

Linguagens Formais, Autômatos e Computabili-dade está contida no núcleo denominado Funda-mentos da Computação, e possui os seguintes tó-picos sugeridos: (i) gramáticas; (ii) linguagens re-gulares, livres-de-contexto e sensíveis-ao-contexto;(iii) tipos de reconhecedores; (iv) operações comlinguagens; (v) propriedades das linguagens; (vi)autômatos de estados finitos; (vii) autômatos depilha; (viii) Máquina de Turing; (ix) funções re-cursivas; (x) Tese de Church; (xi) Teorema da In-completude de Gödel; (xii) classes de problemasP, NP, NP-completo e NP-difícil; (xiii) métodosde redução de problemas.

Aqui também é possível observar o uso de te-mas de natureza distinta para definir o conteúdoda matéria. Senão, os tópicos (iii), (vi), (vii) e(viii) referem-se a dispositivos de análise, e os tó-picos (i), (ii), (iv) e (v), respectivamente, a dispo-sitivos de síntese, classes de linguagens, operaçõese propriedades das classes de linguagens.

É claro que uma simples relação de tópicos,como essas da ACM e da SBC, não precisa, ne-cessariamente, ser adotada como roteiro defini-tivo para a elaboração de conteúdos programá-ticos ou de materiais didáticos. Mas é provávelque uma organização de tópicos alternativa, com-patível com os princípios anteriormente apresen-tados, talvez represente uma contribuição impor-tante para aqueles que buscam em tais documen-tos referências para a preparação dos seus traba-lhos.

Também nos livros-texto da área encontram-sesituações semelhantes. Esse é o caso de [9], consi-derado, até os dias hoje, umas das principais re-ferências sobre o assunto.

Seus capítulos são: (i) preliminares; (ii) autô-matos finitos e expressões regulares; (iii) proprie-dades dos conjuntos regulares; (iv) gramáticas li-vres de contexto; (v) autômatos de pilha; (vi) pro-priedades das linguagens livres de contexto; (vii)Máquinas de Turing; (viii) indecidibilidade; (ix)Hierarquia de Chomsky; (x) linguagens livres decontexto determinísticas; (xi) propriedades de fe-chamento das famílias de linguagens. O livro se-gue com outros capítulos.

Além de comentários similares aos feitos anteri-ormente para os currículos de referência da ACMe da SBC, é possível fazer alguns comentários adi-cionais acerca dessa organização.

Os capítulos (ii) e (iii) tratam da classe daslinguagens regulares, mas isso não fica explícitoatravés de uma simples inspeção do sumário. Omesmo ocorre com os capítulos (iv), (v), (vi) e(x), que tratam da classe das linguagens livres decontexto. No caso do capítulo (ii), os dispositi-vos de síntese e análise são discutidos de formaconjunta. No caso das linguagens livres de con-texto, eles são discutidos em capítulos separados(respectivamente os capítulos (iv) e (v)).

Já o capítulo (vii) serve para introduzir as Má-

quinas de Turing e as suas principais variações, aomesmo tempo em que faz uso das mesmas para de-finir e apresentar as classes das linguagens recursi-vas e recursivamente enumeráveis. A discussão daimportante classe das linguagens sensíveis ao con-texto, por outro lado, que também pode ser feita apartir da definição de um modelo restrito de Má-quina de Turing, é apresentada apenas no capítulo(xi), onde se discute a Hierarquia de Chomsky.

Situações semelhantes podem ser encontradasem livros-texto mais modernos, como é o casode [10], que possui a seguinte estrutura de capí-tulos: (i) preliminares da matemática; (ii) lingua-gens; (iii) gramáticas livres de contexto; (iv) for-mas normais para gramáticas livres de contexto;(v) autômatos finitos; (vi) propriedades das lin-guagens regulares; (vii) autômatos de pilha e lin-guagens livres de contexto; e (viii) Máquinas deTuring. O livro segue com outros capítulos.

Após uma introdução genérica ao assunto lin-guages (no capítulo (ii)), o autor discute gramáti-cas livres de contexto e formas normais para gra-máticas livres de contexto nos capítulos (iii) e (vi),respectivamente. Na sequência, são discutidos osautômatos finitos (capítulo (v)) e as propriedadesdas linguagens regulares (capítulo (vi)). Final-mente, o capítulo (vii) retoma a discussão acercadas linguagens livres de contexto e dos autômatosde pilha.

Percebe-se, portanto, que o texto inicia com aapresentação indireta de uma classe de linguagensde nível intermediário (a classe das linguagens li-vres de contexto), onde é discutido o respectivomodelo de síntese e, em seguida, são apresentadasas correspondentes formas normais. Logo depoisé a vez da classe das linguagens regulares, anali-sadas inicialmente pela perspectiva do correspon-dente dispositivo de análise e depois pela discus-são das suas principais propriedades. Por último,o capítulo (vii) retoma a discussão da classe daslinguagens livres de contexto, e os tópicos, dessavez, são os seus dispositivos de análise e a própriaclasse, enquanto categoria de linguagens.

As discussões sobre as gramáticas regulares e assuas respectivas formas normais, assim como sobreas principais propriedades da classe das linguagenslivres de contexto, ficam confinadas, como subte-mas de difícil localização, dentro dos temas acimaindicados.

Comentário idêntico ao que foi feito para a re-ferência [9], no caso das Máquinas de Turing e dasclasses das linguagens recursivas, recursivamenteenumeráveis e sensíveis ao contexto, também podeser feito para a referência [10].

Por isso, apresenta-se a seguinte sugestão de tó-picos como alternativa para a organização de au-las e de textos didáticos sobre linguagens formaise autômatos: (i) conceitos básicos de linguagens(símbolo, alfabeto, cadeias e linguagens); (ii) mo-delos genéricos de síntese (gramáticas) e análise

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

32

Page 12: Lingua Gens

(reconhecedores) de linguagens; (iii) Hierarquia deChomsky; e (vi) classes de linguagens (regulares,livres de contexto, sensíveis ao contexto, recursi-vas e recursivamente enumeráveis), seus modelosde síntese e análise, a relação entre as classes esuas principais propriedades. Para cada uma dasclasses de linguagens relacionadas em (iv), pode-se considerar a estrutura de subtemas sugerida naseção 3 do presente artigo.

Essa sugestão privilegia as classes de linguagenscomo principais elementos estruturadores do con-teúdo, e desenvolve, para cada uma delas, os tó-picos que lhe são naturalmente relacionados.

11 Conclusão e resumo

O presente artigo apresenta uma série de ideiase sugestões com a intenção de contribuir para acriação de conteúdos programáticos e de materi-ais didáticos originais sobre linguagens formais eautômatos e o ensino dessa mesma disciplina.

Essas ideias e sugestões passam inicialmentepela estruturação do corpo de conhecimento daárea, enfatizando a necessidade de construí-loacerca de temas de mesma natureza. Considera-se, em seguida, o detalhamento de cada grandetema da área, identificando, inicialmente, os sub-temas que sejam comuns a todos os temas e, por-teriormente, os subtemas que sejam particulares aum ou mais temas.

O desenvolvimento de cada subtema pode, porsua vez, se beneficiar, do ponto de vista pedagó-gico, da exploração de tópicos de vaga correlaçãoaparente, do uso de argumentos intuitivos, do em-prego de redundâncias e da demonstração de to-dos os resultados considerados fundamentais parase apresentar os principais resultados, sem relegartal tarefa para o aluno.

O uso do resultado de pesquisas anteriores,eventualmente deixado em desuso nos dias dehoje por questões de natureza não-pedagógica,também pode constituir estratégia importante naapresentação e fixação dos tópicos considerados“clássicos”. Da mesma forma, a incorporaçãodos resultados de alguma pesquisa recente, pode,ainda que em caráter introdutório, constituir ele-mento de motivação para o estudo, servindo tam-bém para promover uma maior e melhor contex-tualização do conhecimento “clássico” com as pes-quisas de ponta na área.

Finalmente, o uso de ferramentas de experimen-tação prática permite romper a barreira da aridezalgébrica, do raciocínio lógico e do pensamentoabstrato, permitindo que os alunos com menos fa-cilidade para a manipulação desse tipo de notaçãoe desses mecanismos mentais não seja prejudicadono aprendizado da matéria. O uso de simuladoresabertos, em contraposição aos fechados, oferecea vantagem de criar pontos adicionais de contatocom outras disciplinas da área de computação, o

que pode contribuir de forma decisiva para a mo-tivação, retenção e aprendizado dos alunos.

As idéias e sugestões apresentadas nesse artigonão esgotam o assunto. Ao contrário, elas são ape-nas uma tentativa no sentido de revigorar a forma“clássica” de ensino de uma disciplina considerada“clássica”, renovando e aumentando, dessa forma,o interesse dos alunos e dos docentes, e mostrandoque, a partir de proposições relativamente simples,é possível construir materiais didáticos e/ou pro-gramas de curso diferenciados no que se refere àassimilação do seu conteúdo e à contextualizaçãodo mesmo no universo da computação moderna.

As proposições apresentadas no presente artigosão resultado da experiência de vários anos do au-tor com o ensino da disciplina linguagens formaise autômatos em cursos superiores de computação.Tal experiência resultou na produção de um livro-texto didático, voltado para alunos de cursos supe-riores de computação, que incorpora os princípiose as ideias aqui discutidas [3].

Referências

[1] Sociedade Brasileira de Computação,“Currículo de Referência da SBC paraCursos de Graduação em Computação eInformática,” 1999. Disponível em http:

//www.sbc.org.br/index.php?language=

1&subject=28&content=downloads&id=82.

[2] A. N. Chomsky, “Three models for the des-cription of language,” Information Theory,

IRE Transactions on, vol. 2, no. 3, pp. 113–124, 1956.

[3] M. V. M. Ramos, J. J. Neto, and I. S. Vega,Linguagens formais: teoria, modelagem e

implementação. Bookman, 2009. ISBN:9788577804535.

[4] A. Salomaa, Formal languages. AcademicPress Professional, Inc. San Diego, CA, USA,1987.

[5] J. J. Neto and M. E. S. Magalhães, “Re-conhecedores sintáticos-uma alternativa di-dática para uso em cursos de engenharia,”in XIV Congresso Nacional de Informaática,pp. 140–148, 1981.

[6] J. J. Neto, “Solving complex problems effi-ciently with adaptative automata,” in Confe-

rence on the Implementation and Application

of Automata - CIAA 2000, CIAA, London,Ontario, Canada, 2000.

[7] “JFLAP.” Disponível em http://www.

jflap.org/. Acessado em setembro de 2008.

[8] “Computing curricula 2001,” J. Educ.

Resour. Comput., 2001. Disponível emhttp://www.computer.org/portal/cms_

docs_ieeecs/ieeecs/education/cc2001/

cc2001.pdf.

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

33

Page 13: Lingua Gens

[9] J. E. Hopcroft and J. D. Ullman, Introduction

to Automata Theory, Languages and Compu-

tation. Reading, MA: Addison Wesley, 1979.

[10] T. A. Sudkamp, Languages and machines: an

introduction to the theory of computer sci-

ence. Addison-Wesley Longman PublishingCo., Inc. Boston, MA, USA, 2005.

Mini-currículo do autor: Marcus Vinícius Midena Ramos Enge-nheiro elétrico (1982) e mestre em sistemas digitais (1990) pelaEscola Politécnica da Universidade de São Paulo. Atuou em di-versas instituições de ensino superior, entre públicas, privadas econfessionais, em São Paulo e em Recife, em cursos de Bacha-relado em Ciência da Computação, Engenharia da Computação eoutros relacionados. Sua área de atuação abrange as disciplinas deLinguagens Formais e Autômatos, Teoria da Computação, Com-piladores e Linguagens de Programação. Atualmente é professorassistente do colegiado de Engenharia da Computação da Univer-sidade Federal do Vale do São Francisco, sediada em Petrolina,Pernambuco.

Revista de Computação e Tecnologia da PUC-SP — Departamento de Computação/FCET/PUC-SP ISSN 2176-7998

Vol. I

No. 1

34