quarta-feira, 20 de maio de 2009

A importância da Matemática para Computação

Leiam abaixo o texto do professor Heron Carvalho, do Departamento de Computação da Universidade Federal do Ceará (UFC), de 26 de outubro de 2006:

-----
Estive hoje na reunião do PET/Alunos com alguns professores, onde certas inquietações por parte dos estudante foram expostas. Dentre estas, uma que causa o meu especial interesse é a não compreensão da importância de algumas disciplinas do currículo, notadamente aquelas de forte cunho teórico. Em particular, semestre passado tive o prazer de ministrar a disciplina de Teoria da Computação, justamente aquela que introduz ao aluno os conceitos básicos da teoria que propiciou o uso prático dos computadores para solução de problemas gerais. A computação, como tenho dito algumas vezes, é um dos poucos exemplos de artefatos desenvolvidos pelos seres humanos cujo uso prático veio a disseminar-se fortemente devido ao desenvolvimento de uma teoria formal, no sentido matemático, durante as décadas de 20 e 30.

A tensão dialética entre TEORIA e PRÁTICA nas universidades é recorrente em várias disciplinas do conhecimento e independente de região ou contexto
cultural, porém é bastante evidente na computação. Tomemos como exemplo a área de Medicina, na qual os alunos não costumam questionar a necessidade de conhecer as teorias que embasam sua prática, pois o não conhecimento destas os impediriam, por exemplo, de atuar em situações de risco nas quais nunca foram "treinados" (este é apenas um dos motivos). Este caso particular me faz recordar a ação de um médico cirurgião do Hospital da Restauração na cidade do Recife, que salvou a vida de uma turista israelense baleada no coração durante em um assalto. Tendo em vista o caráter peculiar da lesão apresentada, a intervenção foi possível devido não apenas a um conhecimento técnico adquirido, mas de todo um embasamento teórico do cirurgião e sua equipe, que os permite intervir em situações novas que lhes são apresentadas em uma emergência daquele porte. Outro exemplo é a engenharia. Já viram algum estudante de engenharia contestar o ensino do cálculo (I, II, III, IV) em seus currículos ? Estes sabem, e isto é evidente inclusive para os leigos, que a construção de edificações complexas, com uso otimizado dos recursos (tempo e dinheiro) e nível elevado de segurança, exigem aplicação da matemática contínua. Na maioria dos casos, para um não-engenheiro é
possível subjetivamente saber se uma certa edificação é "complexa" ou não. Comparo então com o software. Quanto mais complexo este, os conhecimentos necessários para o seu desenvolvimento extrapolam o mero conhecer do uso de ferramentas de linguagens, exigindo do profissional o conhecimento teórico em áreas como algoritmos e estruturas de dados (qual a forma mais eficiente de implementar certo problema ?), controle de concorrência (como evitar a interferência entre processos concorrentes ?), teoria da computabilidade (é um certo problema possível de ser implementado ?), dentre outras questões. Mas, ao contrário de edificações, são exceções os casos onde a complexidade de um software é evidente para os usuários leigos, pelo simples fato de que um dos objetivos do bom engenheiro de software é esconder a complexidade do seu artefato por trás de uma interface elegante. Imaginem se usuários leigos de Windows, Linux, ou MacOS tivessem que enxergar a complexidade desses sistemas operacionais para ser possível interagir com estes.

O material em anexo é uma evidência a vocês, iniciantes no mundo da computação em sua perspectiva de ciência, de que a tensão e
ntre teoria (leia-se matemática) e prática (leia-se uso de tecnologias) é recorrente nas melhores universidades do mundo. Isso também pode ser envidenciado pelos artigos que eu enviei anteriormente. Espero que possam ter tempo para ler essas coisas. São artigos publicados em um número da Communications of the ACM, respeitável publicação orientada a acadêmicos e profissionais.

Abraço,
Heron

----

Os artigos citados estão todos em inglês. Em breve iremos fazer aqui a tradução (bem, já deu pra notar também que pra Computação é muito bom saber inglês, né!). Segue a lista abaixo:

Communications of the ACM
Volume 46 , Issue 9 (September 2003)
Why CS students need math (Por que estudantes de Ciência da Computação precisam de matemática)
Seção: Why universities require computer science students to take math (Por que as universidades exigem que os estudantes de Ciência da Computação estudem matemática)
Introduction, por Keith Devlin
Why math? (Por que matemática?), por Kim B. Bruce, Robert L. Scot Drysdale, Charles Kelemen, Allen Tucker
Mathematical reasoning in software engineering education (Raciocínio matemático no ensino de Engenharia de Software), por Peter B. Henderson
What is the attraction to computing? (Qual é a motivação para a computação?), por Vicki L. Almstrum


Em breve, mais artigos sobre o assunto.