Você está na página 1de 18

A Teoria da Computao e o profissional de informtica

Joo Jos Neto


Vol. I No. 1

Resumo
Discute-se neste trabalho a importncia do domnio do conhecimento e da uncia em assuntos tericos e abstratos como parte da bagagem conceitual dos prossionais da rea de Informtica. Apresenta-se um quadro panormico geral da rea, tecendo-se comentrios sobre diversos assuntos tericos de interesse, procurando-se correlacion-los e mostrar a sua relevncia para o exerccio competente da prtica prossional. Palavras-chave: informtica; Computao; Teoria da Computao; abstraes; cincia; tecnologia; fundamentos; prtica; aplicao.

Abstract
This paper discusses the importance of mastering and having detailed domain of theoretical and abstract knowledge as a part of the conceptual background for professionals in the eld of informatics. A broad landscape of this eld is shown, a diversity of interesting theoretical subjects are commented and interrelated, and their relevance for a competent professional practice is emphasized. Keywords: informatics; Computation; Theory of Computation; abstraction; science; technology; foundations; practice; applications.

Escola Politcnica da USP PCS Departamento de Engenharia de Computao e Sistemas Digitais Av. Prof. Luciano Gualberto, Travessa 3, n. 158 Cidade Universitria CEP 05508-900 So Paulo SP joao.jose@poli.usp.br

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

1 Introduo

um equilbrio aceitvel, de forma que possam cada qual contribuir a seu modo para uma formao no-polarizada de um prossional que, apoiado Nos dias de hoje, em que o imediatismo domina a na solidez que lhe pode conferir o conhecimento nossa sociedade, permeando muitas esferas scio- profundo das bases fundamentais da Computao, culturais, e inuindo direta e signicativamente seja capaz de, no dia-a-dia, optar, de forma comnos rumos de toda a humanidade, diversos aspec- petente, entre a inveno de novas solues e a tos da formao dos prossionais da rea tm sido adequao, aos interesses de cada momento, de alvo de discusses e de mudanas, visando sua solues previamente estabelecidas. adequao aos nossos tempos. Em particular, tem sido muito questionada a convenincia e at mesmo a necessidade de se estu- 1.1 Motivao dar, conhecer e dominar assuntos abstratos, dado que o exerccio prossional geralmente praticado Pode para alguns parecer anacrnico, na nossa era induz ao uso mecnico e quase cego de elemen- dos produtos prontos para o consumo, que conhetos pr-fabricados, de prateleira, parecendo at cimentos como os oferecidos pela Teoria da Commuito estranho discutir a eventual importncia putao sejam propostos como instrumentos de para o prossional de um reforo de formao em trabalho para pessoas cujas formaes se revelam conhecimentos complexos, exigentes e abstratos, to diversicadas, e cujos interesses, so mesclacomo aqueles propostos pela Teoria da Computa- dos com os de outras reas, como o caso de tano. tos prossionais da Informtica, cujos alvos mais Identicam-se a duas tendncias tecnolgicas diretos de interesse so os computadores e a comque, embora complementares, infelizmente costu- putao. mam ser interpretadas como sendo radicalmente excludentes: a primeira, sugerindo que se busque preferencialmente o (re)aproveitamento de produtos e resultados de esforos anteriores como forma de obteno de recursos humanos produtivos e ecientes, e a segunda, priorizando o cultivo da formao cientca como meio de formao de prossionais preparados para o desenvolvimento de trabalhos centrados na criatividade. Naturalmente, sempre que levadas aos limites, tendncias como essas geralmente acabam por contrapor-se, suscitando, de um lado, adeptos extremos da explorao direta de capacitaes j consolidadas, para o uso imediato de solues previamente desenvolvidas, e de outro, aqueles que radicalmente consideram legtimas apenas as tendncias estritamente investigativas, puramente tericas, talvez sem compromisso com a realidade. No faltaram nem faltaro argumentos de apoio ao progressivo esvaziamento de contedo das j to enfraquecidas disciplinas fundamentais dos currculos de formao dos prossionais da rea, em nome do pouco interesse prtico que se alega existir por conhecimentos que, de to especializados e complexos, conseguem fascinar apenas uma pequena elite. Nem faltam justicativas para a adoo de critrios cada vez mais restritivos de apoio ao desenvolvimento da dispendiosa, demorada e incerta pesquisa bsica em tantas universidades de todo o planeta, em nome da priorizao daquelas pesquisas ditas aplicadas e sustentveis, potencialmente lucrativas, em vista dos resultados que podem produzir em menor prazo e com menor custo. Argumentos dessa natureza infelizmente convencem e empolgam a muitos, consequentemente Aqueles se mostram quase sempre refratrios a favorecendo, em vrios nveis, tomadas de pospromoverem investimentos na formao da com- turas que, em nome dos resultados imediatos e ponente conceitual dos prossionais, e mais favo- de uma to desejada sustentabilidade, acabam rveis a investimentos de rpido retorno, que em eclipsando os efeitos de sua adoo no longo prazo, geral correspondem a um preparo mais supercial muitos deles adversos, perigosos, inevitveis, e e utilitarista, menos formal, mais informativo e possivelmente irreversveis, pelas restries que preponderantemente tecnolgico. impem s ideias e criatividade. Os outros, por sua vez, por valorizarem mais a busca de conhecimentos novos, acabam priorizando a pesquisa em reas pouco exploradas, o que exige investimentos de risco, a fundo perdido, em pesquisa pura, os quais raramente apresentam garantias absolutas de retorno do investimento, de resultados dos desenvolvimentos na forma de produtos teis sociedade, do cumprimento dos prazos inicialmente estimados. Como diz a sabedoria popular,a virtude nunca est nos extremos, e assim, torna-se conveniente que seja identicado aquilo que cada vertente tem de melhor para oferecer, buscando-se entre elas Este quadro, to hostil e to presente nos nossos dias, motiva uma reexo profunda acerca da importncia e da necessidade de um rpido retorno ao incentivo aos estudos e pesquisa de base, sem objetivos especulativos ou lucrativos, e que no discriminem, em suas metas, os temas mais abstratos da Teoria da Computao, os assuntos emergentes ou desconhecidos, que tipicamente no costumam estar atrelados produo imediata de resultados ou de benefcios materiais. Tal postura, vital para a soberania da nao no que tange sua capacitao tcnico-cientca, visa suprir os subsdios essenciais manuteno

Vol. I No. 1

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

da produo cientca de vanguarda, bem como para a formao acadmica e prossional autnoma daqueles que trabalham na rea, cujo papel se mostra absolutamente essencial gnese no apenas dos fundamentos das futuras tecnologias como tambm, principalmente, preparao das prximas geraes de prossionais que, ao seu tempo, devero estar aptos a capacitar outros, e a conduzir esses complexos desenvolvimentos sem recorrer compulsoriamente importao de prossionais, a qual nesse quadro certamente ter sido provocada pela ento provvel decincia da capacitao local. Considerando-se a importncia que ganha a cada momento o aspecto da qualidade, em suas mais variadas manifestaes, levando-se em conta a existncia do diversicado arsenal de ferramentas que nos oferecem as teorias conhecidas, muito poderosas e aplicveis s mais diversas situaes do dia-a-dia, pode-se constatar, pela simples observao, que muito pouca nfase se tem dado, por ocasio da formao acadmica do prossional, a um srio trabalho explcito de conscientizao, tanto aos alunos como aos professores, relativo a toda essa conjuntura. Torna-se, dessa maneira, muito importante formar uma conscincia bem fundamentada do valor que pode agregar, tanto qualidade do prossional de Informtica como dos produtos por ele desenvolvidos, o conhecimento profundo dos assuntos tericos que constituem os fundamentos conceituais e cientcos da Computao. O mesmo se pode dizer em relao s indiscutveis prerrogativas tcnicas de que gozam os prossionais que amplo domnio possuam sobre esses temas em relao queles que os desconhecem ou que deles prescindem, pois isso tambm invariavelmente se reete nem sempre de forma imediata, porm previsvel e inexorvel na qualidade apresentada pelos resultados do trabalho de cada um. Atravs da identicao e da anlise de diversos pontos, considerados essenciais formao de bases rmes para a conscientizao acerca da importncia de uma slida fundamentao terica para os prossionais de Informtica, o presente material pretende constituir uma pequena contribuio, tanto para reforar convices sobre esse fenmeno, como para promover uma possvel mudana de postura em relao a esse tema que, embora para alguns se mostre bastante bvio, explcita ou veladamente, com frequncia para outros se constata to desnecessariamente controverso.

principais pontos em que se cruzam as vias da teoria e da tecnologia. Para as diversas situaes assim identicadas, procura-se apresentar as principais razes de convivncia das duas frentes, citando-se, quando oportuno, opinies importantes a respeito de tais assuntos, emitidas por personagens ilustres da histria da Computao. Para tanto, temas-chave da Teoria da Computao so identicados, delineando-se suas dependncias relativas e suas aplicaes, e analisando-se a sua importncia prtica,para que se possa constatar mais facilmente a relevncia que apresenta, para a qualidade prossional de cada um, o domnio e a uncia em cada um dos aspectos do estudo de tais assuntos. Conclui-se o artigo com um convite a uma sria reexo acerca do valor da Teoria da Computao na formao acadmica dos futuros prossionais das inmeras reas de especialidade em que se subdividem as atividades da Informtica.

Vol. I No. 1

2 Os Aspectos Tericos da Computao


Apresenta-se, nesta parte do artigo, a estrutura do ambiente contextual histrico e tcnico em que se desenvolve o tema de interesse central da presente matria. Em primeiro lugar considerada a rea mais vasta e abrangente do conhecimento, que se refere ao estudo da informao e da sua manipulao automtica, e que conhecida pelo nome de Informtica. Como parte nobre da Informtica, identica-se a Cincia da Computao, importante membro de uma grande diversidade de compartimentos do conhecimento humano associados especialidade, os quais envolvem, entre outros, assuntos relacionados com modelagens, mtodos, clculos, anlises, teorias, etc. Analisando-se um pouco mais de perto a Cincia da Computao vislumbra-se, entre os muitos assuntos tratados, a Teoria da Computao [1, 2], o mais importante alicerce de suas bases conceituais, em que esto apoiados todos os ramos da Computao. Por essa razo, reconhece-se na Teoria da Computao um dos mais importantes campos de conhecimento fundamental, do qual dependem fortemente todas as demais reas.

Sem pretenses de exaurir o assunto, buscase neste artigo apontar uma coleo signicativa de assuntos tratados na Teoria da Computao, 1.2 Organizao deste artigo identicando-se o inter-relacionamento existente Aps essa motivao, apoiada na observao e entre diversos dos temas abrangidos, e realandona anlise de alguns fatos da realidade atual do se, quando possvel, a importncia de seu estudo mundo da Informtica, o presente texto volta-se mediante a indicao do uso que na prtica se tem a uma discusso tcnica destinada a levantar os feito de cada um dos grupos de assuntos tericos.

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

2.1 A Informtica
Em toda a histria, constata-se que, antes mesmo que determinadas questes, algumas das quais bastante complexas, tenham sido sequer formuladas pela primeira vez, os cientistas costumam se antecipar apresentado para elas, diversas respostas interessantes, elegantes e criativas, como resultados de suas pesquisas.

cional, precedendo atividades de implementao e at mesmo da idealizao de aparatos fsicos capazes de resolver automaticamente o problema em questo.

Os resultados pioneiros de pesquisas como as de Boole, Turing, Gdel, Church, Chomsky e de tantos outros, apresentados com tanta antecedncia em relao ao advento das tecnologias que os viriam a utilizar, revelaram-se verdades gerais, fundamentais, independentes da tecnologia, imunes Embora nem fosse possvel imaginar ento a fuao tempo e s reas de aplicao, refratrias tura existncia de computadores digitais, e memoda, poltica, s preferncias e ao mercado, nos ainda, que aspecto teriam ou qual importncia extremamente poderosas e perenes, continuando eles viriam a ter nos dias de hoje, j nos meados por essa razo em pleno uso, incontestes, vlidas do sculo XIX George Boole brindava a Cincia e atualssimas, at os nossos dias. da Computao com a imensa contribuio representada pela famosa lgebra que, com justia, leva seu nome. 2.2 Informtica e a Cincia da Com as funes por ele idealizadas, tornou-se Computao possvel criar modelos precisos, tanto do funcionamento das volumosas, lentas e dispendiosas re- A Informtica dedica-se ao estudo do processades de circuitos lgicos eletromecnicos, utilizadas mento lgico e automtico da informao, que em nos primeiros computadores, como igualmente dos geral atualmente realizado com a ajuda de comgeis, compactos e econmicos circuitos digitais putadores digitais. Manifesta-se preponderantemente no estudo e desenvolvimento de computamicroeletrnicos modernos. O advento da modernidade trouxe a industria- dores, de seus componentes mecnicos e eletrnilizao, exigindo progressos tcnicos que permitis- cos, e de seus programas, bem como em diversos sem s mquinas resolver problemas de forma me- aspectos da concepo, realizao e uso de lingualhor, mais rpida e mais convel que os operrios. gens de programao, tecnologias de desenvolviSurgiram ento os primeiros algoritmos, na forma mento e softwares de aplicao.

Vol. I No. 1

Nos dias de hoje, a Informtica se mostra virtude receiturios que visavam preparar tais mquinas para o processamento automtico de certos almente onipresente, manifestando-se em bancos, no comrcio e na indstria, em componentes mitipos de informao. Importantes nomes apareceram, tais como Tu- croeletrnicos embutidos em eletrodomsticos, na ring, Gdel e Church, contribuindo decisivamente etiquetas de produtos, em telefones celulares, aunessa fase embrionria da Informtica atravs de tomveis, jogos eletrnicos, instrumentos de mesua marcante atuao, referente investigao da dida, sistemas de comunicao, cmaras fotogrviabilidade ou no de se resolver certas classes cas, equipamentos de laboratrio, robs, dispode problemas por aplicao mecnica e sequen- sitivos de sinalizao, de aquisio de dados, de cial de uma restrita variedade de operaes muito sensoriamento remoto e tantos outros. nessa vasta rea que podem ser localizadas a Teoria da Informao, a anlise numrica, a repreNa dcada de 1950, Chomsky, investigando abssentao do conhecimento, a modelagem de protraes para uso em lingustica, plantou os aliblemas, os mtodos tericos e formais, os procescerces tericos das gramticas gerativas, que mais tarde vie-ram a manifestar sua grande utilidade sos de clculo, e entre todas essas, tambm a Cinprtica nessa e em diversas outras aplicaes, com cia da Computao, alvo da presente publicao. destaque anlise lxica e sinttica de linguagens de programao, modelagem do comportamento 2.3 A Computao de organismos biolgicos, ao projeto de hardware e ao processamento de linguagem natural. O termo computao costuma ser empregado para Esses desbravadores anteviram, pesquisaram e designar o uso de algoritmos para a resoluo de deram resposta algumas, muito antes da con- problemas. Como se diz formalmente, esse voccepo dos primeiros computadores a variadas bulo alude execuo de algoritmos como meio e complexas questes, abrindo um caminho bem para realizar o clculo de funes. Foi praticada fundamentado e seguro no somente para o surgi- por milnios no passado, mentalmente ou por esmento como tambm para a evoluo que condu- crito, muitas vezes com o auxlio de tabelas. ziu a Informtica ao estado em que hoje se enconRamo da Matemtica e da Cincia da Computatra. o, a Teoria da Computao surgiu no princpio Esta sem dvida uma signicativa manifesta- do sculo XX, antes da inveno dos computadoo histrica da importncia de um estudo terico, res, e estuda modelos formais de computao, sua profundo, da natureza de um problema computa- aplicabilidade e sua viabilidade prtica resoluelementares.

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

o das diversas classes existentes de problemas. Desse estudo emergiram propostas, na forma de dife-rentes modelos de computao, representados atravs de diversicadas abstraes, apresentadas em variadas notaes. Segundo a conjuntura denominada Tese de Turing-Church, todos esses modelos se equiparam uns aos outros quanto ao seu poder computacional, alm de serem todos tambm equivalentes a um computador hipottico que oferecesse uma disponibilidade ilimitada de memria: A Mquina de Turing, que foi proposta como modelo universal de computao, e trabalha com operadores muito rudimentares sobre instrues e dados gravados em uma ta de trabalho de comprimento innito. Dos modelos universais de computao existentes, talvez seja o mais conhecido e famoso, e bastante aderente ao estilo de programao representado pelo paradigma imperativo; O Clculo Lambda [3], formalismo que foi proposto e empregado na representao de programas desenvolvidos segundo o paradigma de programao adotado pelas linguagens funcionais, e que se mostra muito adequado para a representao formal de fenmenos computacionais ligados a linguagens de programao declarativas;

vos podem ir alterando, de forma autnoma, seu prprio comportamento,em funo do seu histrico de funcionamento. Com isso, um dispositivo adaptativo torna-se equivalente Mquina de Turing, portanto poder represen-tar o conhecimento adquirido em sua operao, tendo, no entanto, sobre a Mquina de Turing, nesse aspecto, a vantagem de concentrar, de forma localizada, em seu prprio conjunto de regras, a representao de tal conhecimento. Assim, torna-se possvel identicar e acompanhar at mesmo de forma incremental a aquisio do conhecimento por um dispositivo adaptativo, atravs da inspeo do seu conjunto de regras e da sua variao toda vez que, durante sua operao, alguma ao adaptativa for executada. Por essa e diversas outras razes, os dispositivos adaptativos tm sido considerados como alternativas atraentes para a representao de fenmenos de aprendizagem, na rea de inteligncia articial. Muitos outros modelos de computao tm sido propostos e podem ser encontrados com facilidade na literatura, entre os quais podem ser destacados: os Sistemas de Post, as Cadeias de Markov, as mquinas de Mealy e de Moore, diversas outras variantes das mquinas de estados, dos autmatos e transdutores nitos e de pilha, Mquinas de Turing Universais, mquinas virtuais diversas, utilizadas na execuo de diversas linguagens de programao (P-system, Java byte-code, etc), Redes de Petri, Statecharts, mquinas probabilsticas, e inmeras outras.

Vol. I No. 1

As Funes Recursivas [2], utilizadas em Matemtica desde pocas muito anteriores dos computadores, podem tambm servir como um modelo computacional inspirado naquela cincia, e, ao contrrio da maioria dos outros modelos em uso, tm a grande A Teoria da Computabilidade investiga a posvantagem de permitir a representao e a sibilidade de mquinas computacionais e de cermanipulao direta de valores numricos; tos formalismos tericos adotados como modelos As Gramticas Gerativas [4] permitem a re- de computao apresentarem ou no a capacidade presentao de linguagens atravs do uso de de realizarem automaticamente determinados tiregras de substituio, que operam sobre pos de computao. Em termos do que se conhece sequncias de smbolos, sendo muito empre- hoje dos computadores e da computao, uma vergadas na especicao e na representao de so dessa investigao pode ser traduzida na busca linguagens articiais,como as de programa- de respostas para a pergunta seguinte: possvel o e de outras notaes constitudas de ca- ou no construir um algoritmo capaz de resolver deias de caracteres com lei de formao co- de forma automtica um dado problema atravs da nhecida, tornando natural a formalizao e execuo iterativa de passos de instrues em um a manipulao algortmica de textos simb- dado dispositivo computacional, como, por exemlicos. plo, um computador digital ou algum outro modelo Os Dispositivos Adaptativos [5], particular- computacional? mente aqueles baseados em autmatos, so Mais abrangente, a Teoria da Computao promodelos de computao capazes de repre- pe, estuda e compara modelos de computao, sentar fenmenos computacionais comple- as classes de problemas que cada um deles conxos atravs de quaisquer abstraes cujo segue resolver e os limites a que cada qual est comportamento seja descrito atravs de um sujeito. Ilustrando, podem ser citados alguns proconjunto de regras dinamicamente vari- blemas para os quais impossvel criar progravel. Essa dinmica se obtm associando- mas de computador que lhes sirvam de soluo. se aplicao de cada regra uma ao que So esses os problemas ditos incomputveis, entre especica alteraes a serem realizadas so- os quais se destacam: o problema da parada da bre o conjunto de regras. Assim,ao executa- Mquina de Turing; o problema da correspondnrem essas aes adaptativas, tais dispositi- cia de Post; determinar se a interseco de duas

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

linguagens livres de contexto arbitrrias tambm livre de contexto; determinar, para uma gramtica livre de contexto sobre um alfabeto nounitrio, se a linguagem que ela representa regular;determinar se uma gramtica livre de contexto arbitrria ambgua; determinar se uma linguagem livre de contexto arbitrria inerentemente ambgua. Muitos outros problemas incomputveis existem, mas felizmente constata-se a existncia de outra innidade de problemas computveis, de grande importncia prtica, e isso motiva o seu estudo, do ponto de vista tanto terico como prtico. Dos problemas computveis, alguns se mostram impraticveis por exigirem um tempo abusivo ou uma quantidade de memria excessiva para sua operao. Para os decidveis possvel a construo de algoritmos que sempre terminam, quaisquer que sejam os dados a eles fornecidos. Para os indecidveis, possvel elaborar procedimentos computacionais, porm estes terminam somente quando se lhes apresentam dados corretos, aderentes ao que normalmente se espera, podendo, no entanto, iniciar um ciclo innito de execuo em resposta aos demais dados. O estudo da decidibilidade de algoritmos data dos anos 1930, quando os estudiosos da rea tentavam demonstrar ser invivel realizar raciocnios matemticos com a ajuda de dispositivos automticos. Um interessante problema nessa rea o das provas automticas dos teoremas de uma dada teoria. possvel provar que o excessivo tempo de resposta de provadores de teoremas para determinadas teorias torna impraticvel seu uso com frmulas grandes. o caso da Aritmtica de Presburger, que se mostra decidvel, porm duplamente exponencial em complexidade. Nos casos de problemas de alta complexidade computacional, pode ser interessante determinar para quais situaes vale a pena desenvolver uma soluo algortmica e para quais outras mais conveniente efetuar vericaes extensivas de propostas de soluo. O estudo das classes P e NP de complexidade computacional costuma analisar famlias de problemas que ilustram bem esta situao.

uso extensivo de expresses regulares para a especicao de padres de busca em cadeias de caracteres levou diversas linguagens de programao e sistemas operacionais a oferecerem recursos nativos especcos com essa nalidade. o caso de lingua-gens como Perl e Python, e de sistemas operacionais como UNIX, Linux e similares. No mbito das linguagens regulares, notrio o uso de autmatos nitos e de mquinas de estados nitos em um grande nmero de aplicaes importantes, tais como no projeto de circuitos sequenciais, em alguns sistemas voltados automatizao da resoluo de problemas, na construo de protocolos de comunicao, sequenciadores, controladores de interfaces Web, analisadores lxicos de compiladores e interpretadores para linguagens de programao, na especicao de sistemas reativos e de tem-po real, e at mesmo na especicao da lgica de determinados tipos de programas. Linguagens livres de contexto, as respectivas gramticas e os autmatos de pilha ocupam igualmente seu lugar na imensido de aplicaes que fazem uso das abstraes e dos resultados da teoria da computao. Assim, formalismos gramaticais livres de contexto tm sido usados extensivamente desde a poca de sua concepo na representao parcial da sintaxe de linguagens de programao [4, 6, 7]. Autmatos de pilha podem ser empregados na representao de fenmenos lingusticos envolvendo aninhamentos sintticos, e servem assim para modelar o comportamento de programas constitudos por um conjunto de procedimentos potencialmente interdependentes e mutuamente recursivos. Menos explicitamente exploradas, as linguagens dependentes de contexto esto muito mais disseminadas no mundo da computao do que pode parecer primeira vista. Linguagens de programao so, em sua quase totalidade, linguagens dependentes de contexto, para cuja representao as gramticas livres de contexto e os autmatos de pilha se revelam insucientes. Embora existam diversos modelos sucientemente expressivos para represent-las, seu uso costuma ser evitado por gerar formulaes extensas, complexas e obscuras. Em lugar disso, costuma-se aproximar, na prtica, as linguagens de programao por meio de modelos sintticos simplicados, livres de contexto, os quais devem ser complementados por trechos de cdigo, funes ou procedimentos externos, que se responsabilizem pela representao das dependncias de contexto, ausentes na formulao simplicada. Esta tem sido prtica corrente na construo de compiladores e de outros processadores de linguagens de programao.

Vol. I No. 1

Se de um lado a Teoria da Computao busca solues gerais e grandiosas para classes amplas de problemas, por outro lado ocupa-se tambm de determinar modelos de complexidade mnima que resolvam satisfatoriamente situaes menos gerais, de interesse prtico. Uma forma de avaliar o poder de expresso de um modelo computacional atravs do estudo da classe das linguagens formais que esse modelo capaz de representar; o resultado dessa prtica uma taxonomia baseada na hierarquia proposta 2.4 A Cincia da Computao por Chomsky para as linguagens formais. Isso tem importantes aplicaes prticas no es- A Cincia da Computao estuda os fundamentudo de linguagens, gramticas e autmatos: o tos e a prtica das computaes, investigando e explorando, atravs de algoritmos computacio-

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

nais, estruturas matemticas que modelam fatos do mundo real, permitindo assim que processos computacionais sejam formulados de maneira precisa para ento manipul-los devidamente, atendendo as necessidades das aplicaes desejadas. Para atingir esses objetivos, oferece ao prossional uma srie de contribuies tericas: proporciona bases em Linguagens Formais, na Teoria dos Autmatos e em Complexidade Computacional, oferece mtodos para que seja vericado se um requisito est sendo atendido ou no, disponibiliza tcnicas para o desenvolvimento de modelos, e proporciona meios com os quais se pode avaliar o poder dos modelos adotados. Cada vez mais potentes e mdicos, os computadores digitais constituem os dispositivos tecnologicamente mais importantes que materializam sicamente os modelos abstratos oferecidos pela Cincia da Computao. Ao mesmo tempo, os programas (softwares) que neles se executam constituem a melhor concretizao das abstraes lgicas que com eles pode ser realizada no dia-a-dia. Isso abre inmeras possibilidades para a utilizao prtica de abstraes computacionais, quer atravs do emprego de linguagens de programao bem projetadas e aderentes aplicao, quer para a construo de compiladores ou interpretadores, permitindo a disponibilizao, nos computadores, dos recursos oferecidos por essas linguagens. Os caminhos disponveis para a concepo de todas essas abstraes e dispositivos tecnolgicos, assim como os mtodos utilizados para a avaliao das aplicaes da vida real que com elas so desenvolvidas contam-se entre as principais contribuies de cunho prtico proporcionadas pela Cincia da Computao, as quais dicilmente teriam surgido sem os importantes fundamentos tericos que lhes deram origem. Pode-se identicar que uma importante caracterstica das teorias das quais se ocupa a Cincia da Computao que elas se apiam em bases matemticas muito bem estruturadas, constituindo assim um slido corpo de elegantes fundamentos, aplicveis a todas as atividades da rea. A motivao maior do desenvolvimento deste ramo do conhecimento gira em torno da investigao do alcance das computaes, da possibilidade ou no de se efetuarem determinadas computaes, culminando no importante conceito de algoritmo, cuja possibilidade de existncia fortemente associada viabilidade prtica de materializao das computaes realizveis. O estudo srio dos assuntos cientcos da computao proporciona ao interessado um duradouro lastro de formao, de largo espectro, a respeito dos assuntos em questo, que lhe garante segurana conceitual ao longo de toda sua vida prossional.Tal base tcnica dicilmente pode ser adquirida quando a formao do prossional estiver afastada da teoria, mas centrada na digesto fre-

quente de generalidades, de atualidades e de informao de divulgao. Embora para a rea mercadolgica, estratgica e empresarial, esse tipo de preparo seja essencial, para a formao de um prossional com perl mais tcnico tal esquema geralmente se traduz somente em uma cultura fugaz, especca e temporria, acerca dos fatos, do estado da arte e da tecnologia em moda em cada momento histrico, e isso costuma mostrar-se insuciente para o exerccio competente dos aspectos prossionais tcnicos de alcance mais profundo. Em lugar de simplesmente informar o interessado, preparando-o a produzir rapidamente para con-sumo imediato no mercado de trabalho, a formao acadmica e prossional baseada em fundamentos slidos capaz de conceder-lhe algo muito mais verstil e perene: o embasamento de que necessita para dominar os assuntos que constituem as mais profundas razes do conhecimento da rea, que resistam ao tempo, moda e tecnologia. Isso no deve ser entendido como uma apologia alienao quanto a avanos tecnolgicos, mas como um alerta para que os atraentes acenos do imediatismo no ofusquem o prossional exatamente naquele que seria seu melhor momento para priorizar sua formao conceitual em temas abrangentes e universais, reduzindo sem anular a prioridade da assimilao rpida de atualidades e da absoro imediata de treinamentos especcos em ferramentas tecnolgicas particulares, de interesse imediato e efmero, mas restrito e localizado. Com uma formao menos restrita e especca, o prossional de computao sempre ter sua disposio uma gama considervel de conhecimentos oriundos da Cincia da Computao, os quais virtualmente podero ser utilizados no desenvolvimento de variadas aplicaes, em qualquer rea de sua atuao prossional, bastando para isso que, inicialmente, adquira habilidades para modelar adequadamente suas aplicaes usando o ferramental terico assim assimilado, de modo que possa, num segundo momento, convert-los em programas executveis, ou seja, representados na forma de algoritmos. Aqui se pode avaliar bem a importncia de um prossional da rea conhecer e dominar profundamente, em teoria e na prtica, todo o processo de elaborao de algoritmos, desde a sua concepo, passando posteriormente pelos procedimentos de elaborao, materializao, vericao, e implantao, tanto de algoritmos representados por pequenos trechos de cdigo como dos atualmente frequentes sistemas de software, de porte cada vez maior. No basta que, durante o seu perodo de preparao acadmica para o mercado, o prossional se detenha apenas no estudo de um ou outro desses elementos, pois todos eles se mostram essenciais sua formao integral. Mostra-se, assim, de suma Vol. I No. 1

10

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

importncia que os programas dos cursos univer- mente melhor de todas as disciplinas da rea. sitrios da rea levem em considerao essas pon preciso lembrar que, como seria de se espederaes, equilibrando a nfase que do a essas rar, a Teoria da Computao se fundamenta em diversas componentes formativas de seus alunos. mtodos e tcnicas da Matemtica, em particular, na teoria dos conjuntos. Scheurer [11], alerta que se deveria dar mais ateno aos conhecimen2.5 A Teoria da Computao tos de teoria dos conjuntos ministrados aos futuros prossionais da rea, de modo que estes possam No vasto campo da Cincia da Computao, pode- empreg-los de forma to natural quanto os prose dizer com segurana que a Teoria da Computa- gramadores utilizam com uncia as suas linguao ocupa um merecido lugar de destaque, devido gens de programao. sua importncia como sustentculo conceitual Recorda ainda esse autor que os processos de de todos os conhecimentos da rea, tanto dos mais modelagem formal e matemtica independem do fundamentais e abrangentes como dos mais partiuso ou no de computadores. Arma ainda que, culares e especcos [810]. didaticamente, este importante fato deveria ser Eliminadas as peculiaridades dos problemas es- considerado com muita nfase ao se ministrar copeccos e a inuncia de idiossincrasias apresen- nhecimentos bsicos aos futuros programadores, tadas pelas tecnologias especcas em uso, a Te- permitindo-lhes assim assimilar em primeiro luoria da Computao investiga, estabelece e inter- gar os fundamentos, para, s depois de adquirida preta propriedades intrinsecamente associadas aos a devida habilidade de modelagem, comearem a sistemas computacionais, da tirando concluses utilizar o computador para a implementao dos universais de ampla aplicabilidade, e que se pro- modelos. vam independentes de casos e de especicidades. instrutivo constatar que a Teoria dos ConjunOs resultados da Teoria da Computao, na tos e a Lgica Matemtica funcionam como alicersua maioria obtidos na primeira metade do sculo ces para muitas reas da computao, merecendo passado,comprovaram-se totalmente refratrios destaque a engenharia de software, o software bhistria. Ilustrando atravs de um caso particu- sico e as linguagens de programao, nos quais se lar, na rea da programao pode-se dizer que tais pode identicar o uso extensivo dos seus conceitos resultados no foram afetados pelas evolues tec- no estudo e na prtica de mtodos algbricos tranolgicas reetidas no paradigma de programao dicionais, de mtodos formais, da semntica axiadotado, valendo indiferentemente para progra- omtica para linguagens imperativas, da semnmas desenvolvidos em linguagens funcionais, im- tica denotacional para linguagens declarativas, e perativas, lgicas, orientadas ou no a objetos, e em tantas outras situaes. explorando ou no o paralelismo ou a concorrnOutra rea, que merece ateno pelo amplo uso cia. que faz de assuntos tericos fundamentais, envolve Devido universalidade de que so dotadas, as Linguagens de Programao [4, 6, 7, 1216] e as poderosas ferramentas tericas proporcionadas os correspondentes Paradigmas [17, 18]: imperapela Teoria da Computao nem sempre so di- tivo, funcional, lgico, orientado a objetos, parareta e imediatamente aplicveis a casos particula- lelo, concorrente, etc., cada qual extensivamente res, a um produto especial ou a alguma tecnologia explora um ou mais temas associados, da Teoria especca, e esse fato infelizmente leva muitos pro- da Computao. ssionais por falta de base ou desinteresse a Na rea da modelagem de dados e na teoria dos afastar-se delas, a desconsiderar e at a desvaloriBancos de Dados, identicam-se muitos conceitos zar sua importncia. que se fundamentam em conceitos matemticos No de se esperar que prossionais despre- bsicos oriundos de temas tais como a teoria dos parados sejam capazes de apreciar o alcance dos conjuntos, as relaes e funes, a lgebra e o morecursos tericos, pois para isso deveriam possuir delo relacional. habilidades que os capacitassem anlise de situaMuitas outras reas interessantes poderiam ser es prticas, permitindo-lhe identicar, destacar aqui listadas cujo lastro terico e fundamental est e utilizar, dentre tantos resultados tericos dispona Teoria da Computao, mas as que foram antenveis, aqueles que se aplicam ao seu caso prtico riormente apresentadas constituem uma amostra especco, mas isso s se consegue com um bom signicativa do alcance exibido por essa imporpreparo tcnico prvio, que lhes proporcione amtante teoria fundamental da Cincia da Compuplo domnio sobre os fundamentos dessa teoria. tao, e do papel desempenhado por ela no desenReconhecendo a imensa importncia desse ramo volvimento e no aprimoramento tcnico das aplido conhecimento, Lewis e Papadimitriou [2] acer- caes computacionais. tadamente recomendam seu estudo acadmico precoce, como forma de proporcionar no somente a assimilao de habilidades matemticas, essenciais ao futuro prossional, como tambm as bases conceituais para um aproveitamento signicativa-

Vol. I No. 1

11

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

3 Convenincia do Estudo de Teoria

cia frequente do despreparo, por parte dos prossionais, na compreenso, em profundidade, da natureza dos seus projetos. Reynolds [20] alerta tambm que de um prossional da rea se espera no apenas competnEm seu prefcio ao livro de F. S. Beckman [19], cia nas especicidades do assunto de sua especiaj em 1980 o corpo editorial da srie escreve que lidade, mas que domine muito bem cada um dos o campo do software bsico surgiu a partir da temas a ela relacionados, em especial os princpios soma dos esforos esparsos de inmeros prossicientcos subjacentes de maior profundidade. onais de diversas especialidades, pressionados a Enm, convm ainda notar que um conheciproduzirem artesanalmente programas de sistema mento uente da teoria agua o juzo esttico do que fossem prticos e funcionais. Adiante, em seu prprio prefcio, esse autor re- prossional, dando-lhe habilidade para priorizar conhece a vastido dos temas que compem o as- em seus projetos os aspectos mais naturais, essunto do livro,e arma que em suas 443 pginas pontneos e elegantes dos processos computaciono se aprofunda sucientemente nos aspectos for- nais, apurando ainda seu senso esttico, favoremais da matria, e que por essa razo, o seu li- cendo assim a obteno de produtos com maior vro no seria recomendvel para estudantes srios beleza estrutural. de matemtica em cursos de graduao ou psgraduao devotados ao tema. razo para uma reexo preliminar um confronto entre a opinio emitida pelo autor acerca de seu prprio texto e o notrio excelente nvel apresentado pela publicao em pauta, especialmente se a compararmos com tantos textos hoje adotados em cursos superiores da rea. Neste ponto, cabe tecer mais algumas consideraes sobre alguns dos bvios porqus do estudo dos assuntos tericos da Computao, os quais lamentavelmente at mesmo nos dias de hoje, apesar das evidncias, continuam sendo considerados por tantos seguramente por desconhecimento do assunto como desnecessrios, difceis, desagradveis e at mesmo inteis. Uma exposio desses prossionais, sem preconceitos, s inmeras belas e profundas questes conceituais que permeiam essa rea do conhecimento torna-se a estratgia mais ecaz para contornar os tantos malefcios advindos desse fenmeno. Reynolds [20], em seu livro, lembra que, em busca de atividades remuneradas permanentes que os satisfaam, os prossionais costumam, principalmente no incio de suas carreiras, mudar de emprego com uma certa frequncia, e isso refora a necessidade que tm de uma base conceitual slida e abrangente, especialmente na rea da Computao. No mundo de hoje, que tende a priorizar um contnuo e imediato processo de captura e memorizao das novidades de uma tecnologia em rpida evoluo, a cultura assim adquirida mostra-se efmera e insuciente, motivando que seja resgatada a habilidade tcnica do prossional atravs do incentivo ao uso freqente e sistemtico do raciocnio abstrato para a recuperao e expanso plena dos seus processos mentais. Num cenrio como esse, torna-se indispensvel o exerccio da habilidade de raciocinar, e no apenas de memorizar, e neste papel insubstituvel o estudo da teoria, dele resultando uma preciosa desenvoltura na formulao precisa e clara de idias, na capacitao ao julgamento do alcance e das limitaes dos aparatos tecnolgicos em uso, e na habilitao para uma boa avaliao tcnica de propostas de solues algortmicas para os problemas.

Vol. I No. 1

3.1 Temas-chave da Teoria da Computao

Permeando todos os estudos relacionados com os aspectos tericos da Computao, encontram-se os assuntos usualmente conhecidos como Matemtica Discreta [23,24] e Lgica Matemtica [25,26]. Truss [27] arma que, independentemente de eventuais aplicaes, somente por sua complexidade e beleza a matemtica j em si prpria fascinante e signicativa, merecendo ateno e esSegundo Greenlaw [21], o conhecimento da tetudo. oria auxilia o prossional at mesmo em aspectos Diz tambm ser um verdadeiro prmio o fato de natureza humanstica, como , por exemplo, o de a matemtica ser tambm til, embora isso decaso da utilizao das complexas tcnicas da cripcorra da compreenso profunda da lgica e elegntograa para garantir privacidade no computador, cia subjacentes. e o domnio desse conhecimento inui decisivamente na competncia com que o prossional da Completa sugerindo que no se veja a matemcomputao exerce sua ocupao. tica como uma coleo complicada e incompreenReferindo-se aos projetos de software da sua svel de abstraes, mas como um interessante e poca, Wulf, Shaw e Hilnger armavam [22], j prazeroso tema de estudo, vivo e poderoso. em 1981, que as decincias principais observadas Entre os tpicos mais comumente estudados da nos programas de ento no eram decorrentes de Teoria da Computao, merecem destaque partilimitaes fsicas das mquinas, e sim, consequn- cular os seguintes:

12

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

matemtica discreta, teoria dos grafos, teoria dos conjuntos e teoria das funes recursivas; linguagens formais e autmatos; mquinas universais, computabilidade, algoritmos; complexidade, intratabilidade; mquinas nitas sequenciais com entrada e sada, transdutores, mquinas de Mealy e de Moore; lgica matemtica, gramticas formais, modelos matemticos, teoremas; aspectos tericos subjacentes a redes neurais, computao evolutiva e sistemas nebulosos. Alm de darem uma viso que permite avaliar o alcance e as limitaes dos computadores, uma observao menos supercial permite assegurar que, longe do que seria intuitivo, as complexas estruturas conceituais estudadas na Teoria da Computao gozam, na prtica, de uma extraordinria aplicabilidade. Assim, as ferramentas conceituais oferecidas pela teoria viabilizam a obteno de solues para muitos complexos problemas da prtica, e apontam formas elegantes e econmicas para a realizao tecnolgica de tais solues. Destacam-se, entre muitos outros, os seguintes casos ilustrativos: a lgebra booleana e a teoria das mquinas sequenciais fornecem um substrato conceitual essencial para a descrio de muitos fenmenos computacionais, sendo em particular extensivamente utilizadas no projeto lgico de computadores e de sistemas digitais em geral, de codicadores, de sistemas de comunicao, de controladores e de robs; a teoria das relaes e a lgebra relacional constituem fundamentos tericos nos quais se baseiam muitas tcnicas e mtodos hoje disponveis, que nas aplicaes prticas proporcionam formas metdicas e muito adequadas para a formulao rigorosa e convel de sistemas de software que operam sobre complexos bancos de dados; autmatos, transdutores e outras mquinas de estados clssicas, formuladas com base em estados internos, funes de transio e funes de sada, tm auxiliado signicativamente na elaborao de pr-processadores, de compiladores, e no processamento simblico de cadeias de smbolos. Essas abstraes constituem o alicerce de inmeros softwares, de interfaces entre o ser humano e os computadores, em particular os de acesso s redes de computadores, de processos de automao industrial e de protocolos de comunicao digital;

expresses regulares, que so formas gramaticais muito populares de descrio de linguagens regulares, tm sido modernamente adotadas como notao muito conveniente e prtica para a especicao de leis simples de formao de cadeias simblicas, e, cada vez mais, utilizadas no dia-a-dia de inmeras atividades prossionais, estando disponvel como recurso nativo de muitas linguagens de programao, aplicando-se principalmente em anlise lxica, na categorizao de cadeias, no alinhamento de textos e no reconhecimento e identicao de padres sequenciais simples; gramticas gerativas, originalmente estudadas e propostas para aplicaes em lingstica, representam formas construtivas para a especicao de linguagens em geral, encontrando freqentes aplicaes, no apenas na sua rea inicial de interesse, como tambm na anlise de lingua-gens complexas, e na especicao formal de notaes para a expresso de programas noconvencionais, tais como ocorre no projeto de linguagens para programas aplicativos especiais; a teoria da complexidade computacional [28] e de algoritmos, que se ocupa do estudo de problemas que permitem a obteno de solues algortmicas, ou seja, representveis atravs de programas de computador. Estudos nesses domnios tm propiciado o surgimento de mtodos e tcnicas destinados a identicar a viabilidade de construo de algoritmos cujo tempo de resposta no seja intrinsecamente abusivo, e que no apresentem exageradas exigncias de memria de trabalho. Em outra vertente, procuram garantir que algoritmos de criptograa se beneciem exatamente da diculdade computacional apresentada por alguns problemas especiais, os quais tm constitudo o fundamento de muitos dos protocolos criptogrcos modernos; a adaptatividade [5] outro aspecto que merece especial considerao, pelo poder computacional que pode proporcionar, e pela compatibilidade que apresenta com os formalismos clssicos estudados na Teoria da Computao. A ideia principal em que se baseia a possibilidade que tem um dispositivo conceitual adaptativo de automodicar dinamicamente seu comportamento. Essa propriedade lhe confere o mesmo poder computacional da Mquina de Turing. Podem ser identicadas diversas manifestaes histricas deste e de outros conceitos ans. Entre as principais, destacam-se: (i) diretamente na mquina muitos programas antigos, originalmente produzidos em linguagem de baixo nvel, e at mesmo em linguagem de mquina, cujo cdigo se automodi-

Vol. I No. 1

13

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

cava para melhor aproveitar a memria do computador, ou ento para realizar operaes no disponveis nos comandos bsicos da mquina; (ii) nos sistemas de programao programas cujo cdigo era organizado como um conjunto de overlays, que se revezam dinamicamente na ocupao de uma mesma rea de memria, viabilizando assim a execuo de programas que de outra forma no caberiam na memria fsica do computador; (iii) nas linguagens de programao as linguagens extensveis, que permitem ao programador denir novos comandos na linguagem, para depois utiliz-los na codicao de seus programas; (iv) nas metalinguagens as gramticas de dois nveis, que permitem criar, em duas etapas, gramticas especcas das sentenas particulares de linguagens dependente de contexto. as teorias dos conjuntos difusos, da computao evolutiva e das redes neurais constituem outras contribuies recentes aos fundamentos da inteligncia articial moderna, que nos ltimos anos tem se disseminado e evoludo de forma extraordinria.

tal conceitual de extraordinria aplicabilidade a outras disciplinas, habilitando o prossional a desenvolver argumentaes matemticas, formais e rigorosas, e proporcionando uma grande familiaridade com os fundamentos e princpios da Cincia da Computao. Muitas aplicaes deste ramo do conhecimento podem ser identicadas. Dentre as mais clssicas, destacam-se: o processamento de linguagens de programao textuais, a representao de processos, estruturas e protocolos de comunicao, do uxo da lgica dos programas, e de mquinas cujo funcionamento depende de sucessivas alteraes do seu estado interno. Arto Salomaa [36], cita Alfred Aho, que em uma palestra teria feito referncia teoria de linguagens formais como sendo a or da cincia da computao, cujas ptalas seriam a complexidade, as linguagens de programao, os sistemas de programao e os compiladores. Atualmente, inmeras aplicaes modernas tm explorado densamente as ferramentas conceituais estudadas nesta disciplina. Entre elas destacamse a computao grca, em particular as animaes computadorizadas, os hipertextos e as hipermdias, as interfaces Web, e as linguagens visuais e no-lineares em geral.

Vol. I No. 1

Os temas mais importantes cobertos pela Teoria da Computao, discutidos nos tpicos estudados a seguir neste artigo, no esgotam a rea, A importncia do estudo desse assunto se mamas fornecem um panorama bastante signicativo nifesta de vrias maneiras: dos assuntos estudados, proporcionando uma boa proporciona uma viso panormica das baviso de sua importncia prtica. ses cientcas da computao; 3.1.1 Linguagens Formais e Autmatos Este um assunto que vem sendo estudado desde a dcada de 1950, e tem destacada importncia na Teoria da Computao, fundamentando muitos outros temas da rea e oferecendo inmeros subsdios para aplicaes prticas. Ubquo em currculos acadmicos da rea, por sua to grande importncia conceitual e prtica costuma-se recomendar que seja apresentado o mais precocemente possvel aos estudantes das reas da computao e ans [2935]. Historicamente, constata-se que seu estudo foi inicialmente direcionado para questes lingusticas associadas representao e tratamento de lingua-gem natural, mas acabou conquistando a expresso que hoje apresenta ao se notar sua poderosa praticidade em aplicaes voltadas para a compilao ou interpretao de linguagens de programao em computadores digitais. Essa disciplina concentra sua ateno nas linguagens, apreciadas especialmente do ponto de vista de especicao e de reconhecimento, e tambm no estudo de modelos constitudos por abstraes gerativas e cognitivas a elas associadas, consideradas tais linguagens segundo sua estrutura, propriedades, caractersticas, classicaes e inter-relacionamento. Proporciona um variado e poderoso ferramen-

proporciona fundamentos tericos para a rea, atravs do estudo de assuntos tais como decidibilidade, computabilidade e complexidade computacional; fornece um slido lastro para o desenvolvimento de inmeras aplicaes computacionais, entre as quais o processamento de linguagens, o reconhecimento de padres e a modelagem de sistemas; estabelece um forte elo entre a teoria e a prtica computacional; permite que os conceitos e os resultados da teoria referente s linguagens, seus geradores, reconhecedores e analisadores possam ser aplicados de forma rgida; um dos temas que se mostra mais ecltico e menos divorciado dos demais assuntos estudados na Teoria da Computao. Segundo uma das grandes autoridades mundiais no assunto, Arto Salomaa [36], curioso observar que o tema das linguagens formais e autmatos, enquanto para tantos representa o principal tpico da pesquisa na Cincia da Computao, para outros constitui apenas algo de importncia muito duvidosa. O autor jocosamente insinua ser isso apenas reexo da poca e da cultura dos pareceristas.

14

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

Comentando sobre a receptividade dessa disciplina pelos seus alunos, Peter Lintz menciona em sua obra [37] que os estudantes por vezes a rotulam como superuamente abstrata e intil na prtica. Sugere que, em resposta a essa tendncia, o professor oriente seu ensino atravs de exerccios, e que continuadamente conscientize os alunos dos interessantes desaos que tais disciplinas vo impondo sua persistncia e inventividade na manipulao de problemas de difcil soluo. Hopcroft e Ullman armam em seu livro clssico da rea [38] que esta disciplina compe uma importantssima sub-rea da Cincia da Computao. Lembram que Noam Chomsky criou em 1956 um modelo matemtico na forma de gramtica, com o qual se props a estudar a sintaxe de lnguas naturais, mas alguns anos mais tarde seu modelo revelouse expressivo em outra rea, ganhando impulso por adequar-se perfeitamente formalizao da lingua-gem de programao ALGOL 60. O estudo terico da relao, hoje inseparvel, entre gramticas e os correspondentes autmatos acabou levando criao da importantssima ideia dos compiladores dirigidos por sintaxe, e tambm do conceito de compilador de compiladores, ou seja, dos geradores automticos de compiladores, ambos at hoje muito utilizados [39]. digno de uma cuidadosa e responsvel ateno o alerta, proclamado por Hopcroft e Ullman [38],lembrando que virtualmente impossvel fazer qualquer estudo srio na rea da Computao no qual no seja priorizada a uncia do estudante nas tcnicas e nos resultados emanados da teoria das linguagens formais e dos autmatos. 3.1.2 Linguagens de Programao Outro assunto, que se revela de imensa importncia terica e prtica na vida do prossional de computao, refere-se s linguagens de programao. Este artigo procura no se reportar s lingua-gens especcas propriamente ditas, atendo-se, por questes de escopo, somente ao aspecto terico e conceitual do estudo de linguagens de programao em geral. Os temas tericos mais relevantes, associados ao estudo das linguagens de programao, incluem: O Clculo Lambda e a Teoria dos Combinadores, teorias matemticas que fundamentam a programao funcional; A Lgica de Floyd-Hoare, sistema formal usado para provar correo de programas imperativos. preciso lembrar que os mtodos formais tm adquirido importncia crescente, permeando estudos srios em Engenharia de Software, e fundamentando muitas de suas prticas contemporneas; A relativamente recente Teoria de Objetos, estabelecida por Abadi e Cardelli, que fun-

damenta toda a rea da programao orientada a objetos, atualmente muito disseminada e em expanso; As Semnticas Formais clssicas, voltadas especicao formal da interpretao das lingua-gens de programao: semntica operacional, semntica denotacional e semntica axiomtica. O estudo terico das linguagens de programao vem recebendo contribuies de diversas origens, e em muitas direes, compreendendo assuntos fundamentais, relativos composio, aos domnios, aos escopos, s ligaes, s transies, s regras de inferncia associados aos programas que com elas podem ser desenvolvidos. Razes no faltam para que seja reconhecida a necessidade de um conhecimento profundo da teoria das linguagens de programao por parte de qualquer prossional que atue na rea de computao: A radicalizao da aplicao do conceito de reaproveitamento de cdigo tende, progressiva e desnecessariamente, a levar os programadores a se afastarem das tarefas mais criativas e originais da prosso, reduzindo aos poucos a nobre atividade de programao a um mero processo, cada vez mais mecnico e menos intelectual, de seleo e reorganizao de componentes prfabricados. As linguagens de programao modernas incorporam inmeros conceitos no-triviais, como por exemplo, sosticados sistemas de tipos, e por isso mesmo seu uso competente exige no apenas programadores com prtica, mas prossionais que apresentem um mnimo de intimidade com os conceitos e fundamentos abstratos que lhes so subjacentes, para que possam utilizar essas linguagens em todos os seus recursos. A necessidade crescente do desenvolvimento de sistemas de software de grande porte torna a especicao dos programas uma tarefa cada vez mais difcil de realizar por parte de prossionais que no possuam um profundo conhecimento e grande uncia na utilizao do indispensvel ferramental conceitual exigido em tais projetos. Para o desenvolvimento de softwares de segurana, nos quais os requisitos de qualidade se manifestam em nveis muito superiores ao que se pratica usualmente no desenvolvimento de programas convencionais, tornase necessrio o uso de mtodos rigorosos de vericao e de validao formal, cuja aplicao competente exige do prossional profundos conhecimentos tericos, e no apenas uma habilidade puramente pragmtica. Todo sistema de software que oferece a seus usurios uma interface, atravs da qual sejam feitas as comunicaes entre o programa

Vol. I No. 1

15

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

e seu operador, requer algum tipo de procesAludindo a essas posies, professadas por tansador de linguagem, para cuja concepo e tos prossionais, cita ainda o autor um trecho do projeto so necessrios profundos conheci- Dicionrio Oxford, que contrasta os conceitos de mentos e habilidades tericas. cincia e de arte : aquela, fundamentada em prin Sistemas que se utilizam extensivamente de cpios e na constante utilizao dos mesmos; esta, conceitos e conhecimentos tericos relativos sustentada pelo conhecimento de tradies e pelas s linguagens de programao esto presen- destrezas que se desenvolvem atravs da prtica. tes em toda parte, destacando-se os sistemas de comunicao, os sistemas de manipulao simblica em geral, os processadores de texto, os sistemas operacionais e muitos outros. 3.1.3 Cincia da Programao Em seu prefcio ao livro de David Gries [40], o conceituado prof. Edsger W. Dijkstra manifesta sua preocupao com a resistncia mental que surge toda vez que se prope o uso de tcnicas do pensamento cientco em uma nova rea de conhecimento, e recomenda um cuidado especial ao se procurar convencer netos de que, embora primeira vista isso no seja evidente, aqueles inteis formalismos abstratos no apenas so muito teis, como tambm indispensveis. Ainda nesse livro, o autor sugere que esse fenmeno assim ocorre devido a uma srie de razes:

Gries ainda arma que a programao s poder se converter em uma cincia atravs do cultivo de uma profunda maturidade matemtica, acompanhado de uma inteno real de empregar esse tipo de recurso na prtica do dia-a-dia. 3.1.4 Computabilidade De forma anloga ao que se pode observar em outras especialidades cientcas, uma grande variedade de importantes descobertas desta fascinante rea do conhecimento foi obtida teoricamente, muito antes de sua prtica tornar-se tecnologicamente vivel. Infelizmente, tal fato induziu, e ainda hoje induz muitos, dissociao entre os fatos ligados ao estudo e ao uso dos computadores e os ensinamentos proporcionados pela Teoria da Computabilidade. Vol. I No. 1

Kfoury, Moll e Arbib [41] armam, no entanto, em seu livro que, por sua importncia, a Teoria Muitas vezes, pessoas que desconhecem o asda Computabilidade pode e deve ser considerada sunto costumam colocar objees injusticacomo sendo, apesar de tudo, o corao da Cincia das a seu uso, em funo da diculdade que da Computao. sentem em compreender e conviver com notaes matemticas, formalismos, tcnicas Nessa linha, tem-se procurado determinar e derigorosas e provas formais. senvolver um alicerce cientco para o estudo de Alegando serem esses formalismos desneces- assuntos relacionados com a Informtica de modo srios no dia-a-dia, argumentam que, em geral, e em particular,de assuntos ligados ao provista do demorado e oneroso preparo prvio cessamento de dados atravs de algoritmos, ao exigido de um prossional para que esteja projeto de computadores digitais e ao projeto de apto a us-los uentemente, torna-se lcito programas desenvolvidos em linguagens de proe prtico aceitar como satisfatria a quali- gramao. dade de programas pragmaticamente resulDesde meados do sculo passado, em diversos tantes de desenvolvimentos artesanais, efe- aspectos se tem observado um crescimento signituados sem qualquer ajuda de mtodos ri- cativo do desenvolvimento da Computao, como gorosos. por exemplo: a sosticao dos processos; o baOutro argumento, infundado e recorrente, rateamento dos componentes eletrnicos e o vioalega ser difcil e at invivel o emprego lento aumento de sua capacidade e complexidade; de tcnicas rigorosas para desenvolver e a viabilizao de equipamentos eletrnicos muito implementar programas de grande porte, poderosos e a custo acessvel; os avanos nas mecuja ocorrncia se mostra cada vez mais todologias de programao; a drstica reduo do tempo necessrio para a obteno de programas freqente na prtica. complexos e conveis; o desenvolvimento de tcPor incrvel que parea, alguns prossionais nicas avanadas de especicao rigorosa de proda rea alegam ser muito mais importante gramas, processos e equipamentos. que se disponha de uma especicao basNesse contexto, a grande aplicabilidade da Teotante precisa para um software a ser desenria da Computabilidade pode ser facilmente idenvolvido do que o correspondente programa ticada, considerando-se que abrange, entre muiestar, ele prprio, correto. tos outros assuntos: No extremo, outros alegam ainda que o Aspectos da sintaxe e da semntica de mundo real dispensa provas formais, e que, lingua-gens de programao para todos os efeitos, na prtica suciente apenas que o programa desenvolvido cum Estudo da enumerao e da universalidade pra sua tarefa. das funes computveis

16

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

Tcnicas de computabilidade e estado computvel de problemas

se detm nos aspectos da viabilidade prtica da execuo de algoritmos considerados adequados Metodologia de programao e prova de cor- para a tarefa. Assim, os problemas computveis conseguem reo de programas motivar os estudiosos da Computabilidade no Semntica denotacional apenas por representarem curiosos desaos a seProgramas recursivos rem resolvidos pelo programador, mas tambm Regras de prova para propriedades dos pro- por constiturem por si prprios interessantes objetos de estudo: gramas variados formalismos esto disponveis para sua modelagem e estudo uma vez abstrados e formalizados, podem ser analisados de maneira independente do particular formalismo com o qual foram representados ao estudarem as propriedades dos problemas, os pesquisadores buscam para eles solues que preferencialmente sejam ao mesmo tempo rpidas e compactas para essas propostas de soluo, so consideradas particularmente convenientes aquelas que apresentem requisitos polinomiais em suas exigncias de rea de trabalho, e de tempo de resposta as solues mais adequadas na prtica so aquelas que apresentam, no espao e no tem-po,comportamento polinomial de ordem baixa (de preferncia, linear) Vol. I No. 1

Auto-referncia em computabilidade e teorema da recurso Conjuntos, conjuntos recursivos, conjuntos recursivamente enumerveis, teorema de Gdel Mquina de Turing e formulaes alternativas da teoria da computabilidade. Automatizao da prova de teoremas Monty Newborn, em seu livro sobre provadores automticos de teoremas [15], comenta que os computadores modernos tm evoludo muito rapidamente, cando, cada vez mais, velozes, compactos e baratos, e j permitiram a construo de programas capazes de provar teoremas e at de vencer campees mundiais de xadrez. 3.1.5 Complexidade computacional

Em artigo recentemente publicado [42], o conceiMuitos tpicos costumam ser considerados dentuadssimo prof. Peter Denning, reportando-se a observaes da realidade do dia-a-dia das prin- tro da temtica da Complexidade Computacional: cipais aplicaes dos computadores, resume, em Algoritmos : modelos de computao copoucas palavras, a relevncia e o impacto que tem nhecidos podem ser convertidos algoritmio tema Complexidade Computacional sobre as aticamente uns nos outros, com uma perda vidades do prossional da rea: polinomial de ecincia, exceto nos casos no-determinsticos, de resposta expo. . . over 3,000 common problems in scinencial. Assimetrias e no-determinismos ence, engineer-ng, and business are so criam atraentes possibilidades para a classidicult to solve that even the fastest cao de problemas quanto sua complesupercomputers would take centuries xidade computacional. on simple versions. (Peter J. Denning The profession of IT Communications of the ACM, v.51, n. 8, aug. 2008, p. 21) De origem relativamente recente, datada da segunda metade da dcada de 1970,a Teoria da Complexidade Computacional tem recebido uma extraordinria ateno dos pesquisadores da Cincia da Computao, em vista de sua grande importncia para a rea [2, 28]. O estudo da Complexidade Computacional exige a compreenso de fenmenos no triviais, resultantes da interao da computao, da lgica e das aplicaes, para investigar as razes de alguns problemas apresentarem solues computacionais to onerosas. Enquanto a Teoria da Computabilidade se ocupa de determinar a possibilidade ou no de uma dada classe de problemas poder ser resolvida algoritmicamente, a complexidade computacional Mquina de Turing: Computabilidade e Decidibilidade : de aparncia primeira vista obscura, e dispondo de operaes bsicas muito primitivas, a Mquina de Turing mostra-se capaz de representar algoritmos sem signicativa perda de ecincia, o que a tem consagrado como modelo de computao. Computacionalmente muito poderosa, a Mquina de Turing capaz at mesmo de computar fatos no-triviais sobre os algoritmos que representam.Todavia, h muitos problemas, ditos incomputveis, aos quais no existe qualquer possibilidade de se associar um algoritmo, ainda que ineciente. Mquinas de Turing estritamente representam, portanto, problemas computveis. Estuda-se, para problemas computveis, o fenmeno da decidibilidade: alguns dos problemas computveis, ditos indecidveis, so representados por Mquinas de

17

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

Turing que iniciam um processamento in- transcreve-se a seguir um trecho de uma entrenito em resposta a certos dados de entrada, vista [43] dada pelo conceituado prof. Denning: enquanto os demais (problemas decidveis) The four core practices of compugarantidamente terminam o seu processating professions are programming, sysmento qualquer que sejam os dados a elas tems, modeling, and innovating.To be fornecidos. Naturalmente, quando possvel, a complete computing professional, os ltimos so os preferidos, em termos pryou should know the principles and be ticos. competent in the four practices. Lgica booleana e Lgica de Primeira Ordem : Estas formulaes permitem criar sis(Entrevista do prof. Peter J. Denning temas de provas gerais e compreensveis, por Ubiquity) meio de comandos matemticos detalhados cuja semntica associa cada sentena resTem-se observado uma queda cada vez mais pectiva aplicao matemtica, permitindo pronunciada na qualidade da formao dos futuexpressar fatos sobre computaes, o que ros prossionais da Computao no que tange propicia o surgimento de problemas lgicos concepo e implementao de programas, esindecidveis. pecialmente os de porte menor. O estabelecimento de Classes de CompleA formao que eles recebem tem, nesses casos, xidade e sua inter-relao um assunto negligenciado os essenciais aspectos microscpicos complexo e com inmeros pontos ainda em da problemtica dos projetos pequenos, em favor aberto, e isso tem motivado diversos traba- de uma forte polarizao para a gesto de grandes lhos na rea, e dado origem a muitos assun- projetos de software ou para o desenvolvimento de tos de investigao, constituindo assim um grandes sistemas. tema bastante adequado para pesquisa atual Como resultado,nota-se,da parte do prossioem Cincia da Computao. nal, uma perda sensvel de habilidade de pro Redues e completude: O uso da lgica jeto de programas e algoritmos, uma diculdade se revela muito interessante quando, atra- de compreenso de diversos assuntos ligados s vs das tcnicas de reduo, se torna pos- lingua-gens de programao e sua utilizao svel estabelecer pontos em comum acerca como instrumento para o desenvolvimento de proda diculdade apresentada pelos problemas gramas. Observa-se ainda uma notria decincia pertencentes a toda uma classe de comple- em sua criatividade para a resoluo autnoma de xidade. O estudo da NP-completude e de problemas, sem recorrerem a repositrios de protemas ans suscita importantes mtodos de gramas pr-existentes. anlise da Complexidade Computacional. Em relao a isso, j em 1981 o renomado David A diculdade apresentada por determinados Gries alertava [40] que, no mnimo, os programas problemas pode demonstrar-se til e no in- grandes podem ser vistos como uma coleo orgadesejvel como ocorre na maioria dos casos nizada de programas menores, e que ningum se prticos. o que ocorre no estudo da Crip- pode considerar especialista em produzir progratograa, no qual a complexidade dos algo- mas grandes de qualidade enquanto no se provar ritmos justamente aquilo que se busca e um perito no desenvolvimento de bons programas se necessita ter sob controle. Curiosamente, pequenos. nessas exatas situaes em que a complexiPode-se acrescentar que temerrio considerar dade mais almejada, que se mostra mais capacitado para gerir um dado projeto um prosdifcil obter a sua manifestao. sional no dotado de um pleno domnio sobre to Computao paralela uma rea de inte- dos os aspectos do mesmo, pois dicilmente costuresse na qual se mostra mais necessrio e mam ser passivamente acatadas as diretrizes emamais rduo o estudo da complexidade com- nadas por gestores que no estejam aptos a deputacional, especialmente quando tal es- monstrarem competncia nos assuntos a que se tudo envolve simultaneamente numerosos refere o projeto que pretendem conduzir. elementos como agentes paralelos. Outro assunto de importncia para a presente reexo, refere-se inuncia da adoo de mtodos baseados em formulaes tericas na quali4 Formao dos prossionais dade dos produtos gerados pelos prossionais de computao. da rea Alvo tradicional da pesquisa terica da comComplementando as diversas aluses j feitas an- putao,a resoluode problemas formulados de teriormente neste artigo, cabem algumas observa- maneira precisa e rigorosa atravs de formalismos es adicionais sobre a maneira como se formam matemticos bem estabelecidos mostra-se essenou como deveriam ser formados os prossionais cial para assegurar a construo de programas de que trabalham com Computao. Inicialmente, alta qualidade.

Vol. I No. 1

18

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

Tais formulaes constituem, na prtica, um grande desao, representando um importante auxlio a atividades de projeto, e, por suas propriedades, podem ser exploradas no estabelecimento de mtodos de avaliao objetivos. As mtricas assim desenvolvidas se empregam em instrumentos de avaliao que utilizam ndices de mrito do software, o que proporciona formas objetivas interessantes no apenas para avaliaes individuais como tambm para comparaes entre diferentes softwares e para uso em sistemas de auxlio tomada de decises.

quanto Funes Recursivas e Clculo Lambda seriam empregados para o paradigma funcional e outros paradigmas declarativos. Do ponto de vista pedaggico, para que possam ser adequadamente fundamentadas as diferentes atividades ligadas programao, aconselham os autores que se d certa uniformidade nfase com que efetuado o estudo dos diferentes modelos de computao disponveis. Com a formao conceitual abrangente, assim proporcionada, os prossionais tero condies de gerar solues simples e transparentes para seus problemas, e como decorrncia natural, de produzir para eles programas ecientes, elegantes e corretos. muito atual e oportuno meditar muito seriamente sobre o cenrio cientco e tecnolgico em que trabalha o prossional da computao nos dias de hoje.

As principais metas que se costuma perseguir quando se utilizam tais mtodos so: embasamento matemtico slido para os modelos desenvolvidos; fundamentao cientca para as decises tomadas; alta qualidade tcnico-cientca para os produtos desenvolvidos; anteposio de um planejamento cientco aplicao de prticas tecnolgicas; expurgo conseqente da prtica de De um lado, possvel adquirir conhecimentos reapro-veitamento mope de peas pr-fabricadas para formar conscincia da importncia que tm no desenvolvi-mento de produtos de software de no dia-a-dia os temas difceis e abstratos de que alta qualidade. tratam as disciplinas tericas da rea da Computao, e graticante a certeza da utilidade de uma slida formao, resistente moda, ao tempo e tecnologia, que paire inabalvel acima de ten5 Concluso dncias polticas e mercadolgicas. Para atender s necessidades de uma poca em que se faz necessrio exigir do prossional uma capacitao cada vez melhor e mais ampla, preciso um constante esforo de reciclagem e atualizao, tanto da parte dos prossionais como das instituies de ensino, para que seja possvel bem trabalhar com os atuais sistemas computacionais, de complexidade e calibre sempre crescentes. consenso ser fator distintivo dos mais capacitados prossionais da Informtica o conhecimento e domnio das teorias, abstraes e conceitos que fundamentam suas atividades tcnicas, e essa distino se evidencia progressivamente medida que, simultaneamente, crescem as dimenses dos sistemas computacionais contemporneos. Na rea acadmica, verica-se um crescente afastamento de metas entre disciplinas formativas e as de carter mais pragmtico, e isso outro preocupante motivo de ateno. Cabe assim um alerta sobre a necessidade de resgate das importantes relaes entre elas existentes, manifestas nas anidades entre os modelos abstratos estudados na teoria e as atividades, mtodos e tcnicas prticas de programao que neles devem sempre se apoiar. Flvio S. C. da Silva e Ana C. V. de Melo defendem em seu livro [17] a existncia de uma forte anidade entre cada paradigma de programao e algum dos modelos de computao existentes, sugerindo que para cada paradigma seja utilizado o modelo de computao que lhe for mais expressivo. Assim, por exemplo, seriam usadas mquinas de Turing para o paradigma imperativo, en-

Vol. I No. 1

De outro,a observao dos fatos do nosso mundo traz muitas incertezas sobre a maneira como sero tratados esses assuntos no futuro. angustiante a constatao de que a inuncia do desconhecimento e da falta de preparo, aliados ao imediatismo, venha de h muito produzindo seus efeitos, especialmente atravs de decises tomadas com base em prioridades distorcidas, que acabam criando importantes barreiras a uma boa formao prossional. Desse quadro, os maus efeitos que ainda no vieram tona seguramente se manifestaro em futuro prximo, quando, com certeza, uma reforma para a reverso dessa situao dever mostrar-se muito difcil, demorada e one-rosa, se no invivel. Referindo-se em particular ao futuro das atividades de programao, em entrevista concedida a Edward Feigenbaum [44], o respeitadssimo prof. Donald Knuth faz um grave alerta que convida reexo, dada sua veracidade e as severas consequncias no mencionadas, dela decorrentes: Im worried about the present state of programming. Programmers now are supposed to mostly just use libraries. Programmers arent allowed to do their own thing from scratch anymore. Theyre supposed to assemble reusable code that somebody else has written. Theres a bunch of things on the menu and you choose from these and put them together. Wheres the fun in that? Wheres the beauty in

19

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

that? (Commun. of the ACM, v.51, n.8, aug. 2008, p. 35)

[14] B. Meyer, Introduction to the Theory of Programming Languages. Englewood Clis: Prentice Hall, 1990.

[15] M. Newborn, Automated theorem proving: Fica ento esta pergunta para ser respondida: theory and practice. Springer Verlag, 2001. se as atuais tendncias continuarem como as observamos hoje, com que dever parecer-se a nossa [16] G. Winskel, The Formal Semantics of Programming Languages. Cambridge, Massachuprosso daqui a uns quinze ou vinte anos? No setts: MIT Press, 1993. apenas no que tange atividade da programao, mas igualmente a todas as outras especialidades [17] F. S. C. Silva and A. C. V. Melo, Modelos da rea da Computao. . . Clssicos de Computao. Thomson, 2006.

Referncias
[1] D. I. A. Cohen, Introduction to Computer Theory. Wiley, 1997. 2nd ed. [2] H. R. Lewis and C. H. Papadimitriou, Elementos da Teoria da Computao. Porto Alegre: Bookman, 2004.

[18] R. W. Sebesta, Concepts of Programming Languages. Redwood City, Calif.: Wiley, 2002. [19] F. Beckman, Mathematical Foundations of Programming. Boston: Addison-Wesley, 1980. [20] J. Reynolds, Theories of programming languages. Cambridge University Press, 1998.

Vol. I No. 1

[3] H. Barendregt, The Lambda Calculus: Its [21] N. Greenlaw and H. Hoover, Fundamentals of the Theory of Computation. San Francisco: Syntax and Semantics, volume 103 of Studies Morgan Kauman, 1998. in logic and the foundations of mathematics, vol. 155. 1984. [22] W. A. Wulf, M. Shaw, and P. N. Hilnger, Fundamental Structures of Computer Sci[4] R. Backhouse, Syntax of Programming Lanence. Reading, Massachusetts: Addison Wesguages. London: Prentice-Hall International, ley Publishing Company, 1981. 1979. [5] J. J. Neto, Adaptive rule-driven devices general formulation and case study, in CIAA (B. W. Watson and D. Wood, eds.), vol. 2494 of Lecture Notes in Computer Science, pp. 234250, Springer, 2001. [6] F. G. Pagan, Formal Specication of Programming Languages: A Panoramic Primer. Englewood Clis, New Jersey 07632. Prentice-Hall, Inc., 1981. [23] E. R. Schneiderman, Matemtica Discreta uma introduo. Thomson, 2003. [24] N. L. Biggs, Discrete Mathematics. Oxford Science Publications, Clarendon Press, revised ed., 1989. [25] A. G. Hamilton, Logic for mathematicians. 1990. revised edition. [26] E. Mendelson, Introduction to mathematical logic, Van Nostrand-Rein-hold Co., New York, 1964.

[7] K. Slonneger and B. Kurtz, Formal Syntax and Semantics of Programming Langua- [27] J. K. Truss, Discrete mathematics for comges: A Laboratory Based Approach. Addisonputer scientists. Addison-Wesley, 1994. Wesley, 1995. [28] C. Papadimitriou and C. Papadimitriou, [8] C. L. Lucchesi and et al, Aspectos Tericos Computational complexity. Addison-Wesley da Computao. Impa CNPq, 1979. Reading, MA, 1994. [9] J. C. Martin, Introduction to Languages and [29] J. Carroll and D. Long, Theory of Finite Authe Theory of Computation. New York: tomata with an Introduction to Formal LanMcGraw-Hill, 2003. guages. Prentice Hall, 1989. [10] M. Sipser, Introduo Teoria da Computao. Editora Thomson Learning, 2007. [30] P. G. et al., Teora de autmatas y lenguajes formales. Mxico: Alpha mega, 2001.

[11] T. Scheurer, Foundations of computing: sys- [31] M. Harrison, Introduction to formal language tem development with set theory and logic. theory. Addison-Wesley Longman Publishing Addison-Wesley Longman Publishing Co., Co., Inc. Boston, MA, USA, 1978. Inc. Boston, MA, USA, 1994. [32] J. E. Hopcroft and J. D. Ullman, Introduction [12] M. Gordon, Programming Language Theory to Automata Theory, Languages and Compuand Its Implementation. Englewood Clis: tation. Reading, MA: Addison Wesley, 1979. Prentice-Hall, 1988. [33] J. E. Hopcroft, R. Motwani, and J. D. Ull[13] A. D. McGettrick, The Denition of Proman, Introduction to Automata Theory, Langramming Languages. Cambridge University guages, and Computation. Addison Wesley, Press, 1980. 2001.

20

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998

[34] R. Muoz and L. Villodre, Lenguajes, gramticas y autmatas: Curso bsico. Mxico: Alpha mega, 2002. [35] G. Revesz, Introduction to Formal Language Theory, 1983. [36] A. Salomaa, Jewels of formal language theory. Computer Science Press, Incorporated, 1981. [37] P. Linz, An Introduction to Formal Languages and Automata. Boston: Jones and Bartlett Publishers, 2006. [38] J. E. Hopcroft and J. D. Ullman, Formal languages and their relation to automata. Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, 1969. [39] A. Aho, The Theory of Parsing, Translation, and Compiling. Englewood Clis: PrenticeHall, 1972. [40] D. Gries, The Science of Programming. Springer-Verlag, 1981. [41] A. Kfoury, R. Moll, and M. Arbib, A Programming Approach to Computability. Springer-Verlag, 1982. [42] P. J. Denning, The profession of IT, Communications of the ACM, vol. 51, Aug. 2008. [43] J. Gehl, Ubiquity Interview: Great Principles of Computing. Ubiquity Editor John Gehl interviews Peter J. Denning about the progress of the Great Principles Project, Ubiquity An ACM IT Magazine and Forum, vol. 7, November 2006. http://www.acm.org/ubiquity/

interviews/v8i22_denning.html last visited 30th December 2007. [44] E. Feigenbaum, Interview with Donald Knuth: A lifes work interrupted, Communications of the ACM, vol. 51, pp. 3135, aug 2008.

Vol. I No. 1

Mini-currculo do autor: Joo Jos Neto graduado em Engenharia de Eletricidade (1971), mestre em Engenharia Eltrica (1975), doutor em Engenharia Eltrica (1980) e livre-docente (1993) pela Escola Politcnica da Universidade de So Paulo. Atualmente, professor associado da Escola Politcnica da Universidade de So Paulo e coordena o LTA Laboratrio de Linguagens e Tecnologia Adaptativa do PCS Departamento de Engenharia de Computao e Sistemas Digitais da EPUSP. Tem experincia na rea de Cincia da Computao, com nfase nos Fundamentos da Engenharia da Computao, atuando principalmente nos seguintes temas: dispositivos adaptativos, tecnologia adaptativa, autmatos adaptativos,e em suas aplicaes Engenharia de Computao,particularmente em sistemas de tomada de deciso adaptativa, anlise e processamento de linguagens naturais, construo de compiladores, robtica, ensino assistido por computador, modelagem de sistemas inteligentes, processos de aprendizagem automtica e inferncias baseadas em tecnologia adaptativa.

21

Revista de Computao e Tecnologia da PUC-SP Departamento de Computao/FCET/PUC-SP

ISSN 2176-7998