11
Os paradigmas de programação funcional e a matemática no contexto da computação gráfica Autores: Fabio dos Santos Orientador: Profa. MS. Claudia Haddad Santos 2011

Paradigmas de Programação Funcional

Embed Size (px)

DESCRIPTION

Pré Projeto de pesquisa envolvendo computação grafica, funções matematicas e programação funcional.

Citation preview

Page 1: Paradigmas de Programação Funcional

Os paradigmas de programação funcional e a matemática no contexto da

computação gráfica

Contracapa

Autores: Fabio dos Santos

Orientador: Profa. MS. Claudia Haddad

Santos

2011

Page 2: Paradigmas de Programação Funcional

2

Os paradigmas de programação funcional e a matemática no contexto da

computação gráfica

Pré-Projeto de Pesquisa apresentado ao

Curso de Análise e Desenvolvimento de

Sistemas da FACULDADE DE TECNOLOGIA

RUBENS LARA como um dos requisitos

obrigatórios para aprovação na disciplina

Metodologia da Pesquisa Aplicada e

Tecnológica.

Santos

2011

Page 3: Paradigmas de Programação Funcional

3

Sumário 1. Introdução .......................................................................................................................... 4

1.1 Contextualização ...................................................................................................................... 4

1.2 Problema.................................................................................................................................. 6

1.3 Problematização....................................................................................................................... 6

2. Objetivos ............................................................................................................................ 7

2.1 Objetivo Geral .......................................................................................................................... 7

2.2 Objetivos Específicos ................................................................................................................ 7

3. Relevância ......................................................................................................................... 8

3.1 Justificativa .............................................................................................................................. 8

3.2 Motivação ................................................................................................................................ 8

4. Abordagem Metodológica .................................................................................................. 9

4.1 Revisão Bibliográfica................................................................................................................. 9

4.2 Pesquisa Exploratória ............................................................................................................... 9

5. Cronograma ..................................................................................................................... 10

6. Referencias ...................................................................................................................... 11

Page 4: Paradigmas de Programação Funcional

4

1. Introdução

1.1 Contextualização

A história da arte remonta mais ou menos 40.000 anos a.C. com as pinturas rupestres. O

homem desde cedo tinha a arte correndo em suas veias, mas até então não havia

implementado esta na informática. O primeiro desenho a aparecer numa máquina eletrônica

foi em 1950, feito pelo artista e matemático Ben Laposky (GUIA DO HARDWARE, 2011).

Ele chamou-o de 'oscillons' e 'electronic abstractions'1.

Ainda segundo o site, em 1960 nasce o termo Computação Gráfica, forjado por William

Fetter para descrever o que ele fazia na Boeing. Em 1964 ele fez o primeiro modelo de

corpo humano no computador, que foi usado em um comercial de 30 segundos. O modelo

era formado por um corpo articulado o que possibilitou a sua animação. Nascia assim a

parceria computador-mídia de massa.

A animação por computador só foi possível com o desenvolvimento de tecnologias que

permitiram o trabalho com gráficos de forma interativa. Tais tecnologias começaram a

ganhar dimensão e complexidade na década de 1970 (LUCENA, 2005).

Ainda segundo o autor, a interatividade entre usuário e computador foi a característica

responsável pelo sucesso da informática. Além disso, a interatividade deveria se dar da

forma muito mais intuitiva possível e, para isso, a melhor escolha era o uso de imagens. Os

avanços em termos de capacidade de processamento e memória ocorridos na década de

1970 tornaram possível a interatividade de forma gráfica.

Define-se computação gráfica como o conjunto de algoritmos, técnicas e metodologias para

tratamento e representação gráfica de informações através da criação, armazenamento e

manipulação de figuras, utilizando-se computadores e dispositivos periféricos gráficos

(CUNHA, ET al. 1987).

Sabe-se que um gráfico pode ajudar a compreensão de uma relação entre grandezas.

Aprende-se cedo a fazer e ler gráficos conforme instrução formal, e obtém os benefícios

quase continuamente na vida diária das pessoas (HETEN, 2006). Ainda segundo esse

1 “oscilações e abstrações eletrônicas”

Page 5: Paradigmas de Programação Funcional

5

mesmo autor, o gráfico de uma função y = f(x), revela aspectos da relação dificilmente

discerníveis via análise de formulas ou através de valores numéricos.

Neste contexto, a matemática pode parecer um montante de números aglomerados em

equações que se destinam apenas à construção de objetos concretos, mas isso não é

verdade (AZEVEDO, 1999). Segundo Steve Hawking (apud AZEVEDO, 1999) em seu livro

The Large Scale Structure of Space-Time2, “a matemática é a linguagem do homem com a

natureza” e é exatamente aí que entram os computadores.

Em geral, os softwares de computação gráfica são diferenciados dos aplicativos pelo seu

grande volume de desenvolvimentos matemáticos apurados que desenvolve implicitamente

(EMERSON, 2005).

Segundo o professor Edilberto Silva, (2011) as linguagens de programação em geral se

dividem em 4 tipos: as imperativas, lógicas, orientadas a objeto e as funcionais. Este último,

o paradigma funcional, trata a computação como uma avaliação de funções matemáticas.

Programar em uma linguagem funcional consiste em construir definições e usar o

computador para avaliar expressões. O papel principal do programador consiste em

construir uma função para resolver um problema dado. Essa função que pode envolver um

número subsidiário de funções obedecendo a princípios matemáticos. O principal papel do

computador é agir como um avaliador ou calculador: é seu trabalho avaliar as expressões e

imprimir os resultados. Nesse aspecto o computador age como uma simples calculadora de

bolso. (TUTO MANIA, 2006).

O modelo de computação proposto por Church em cálculo lambda3, a chamada

definibilidade lambda, vem a ser a base do paradigma de programação funcional. Isto ocorre

porque os programas funcionais são mais próximos de especificações de problemas

computacionais do que programas imperativos, (BARENDREGT, 1984).

Segundo o site da ferramenta (BLENDER, 2011) o software de animação e modelagem

gráfica Blender 3D, foi escrito inicialmente em C que é uma linguagem imperativa, e

atualmente está escrito em C, C++ que é orientada a objeto, mas, algumas partes,

principalmente scripts embutidos, são escritos em Python que é uma linguagem funcional.

Ainda segundo o site, podemos criar aplicações em arquitetura, design industrial,

engenharia, animação, produção de vídeo, e desenvolvimento de jogos. Esta característica

pode ser ampliada e agilizada com o uso de scripts em Python.

2 “A estrutura em grande escala do espaço-tempo” 3 O lambda cálculo pode ser visto como uma linguagem de programação abstrata em que funções podem ser combinadas para formar outras funções, de uma forma pura.

Page 6: Paradigmas de Programação Funcional

6

1.2 Problema

A maioria dos softwares gráficos costuma ter acesso as suas funcionalidades por meio do

mouse e teclado, porém, muitas vezes quando se está fazendo uma modelagem um pouco

mais complicada, a precisão é necessária. Nessas horas o conhecimento matemático para

poder se utilizar dos scripts é fundamental (HUDAK, 1988).

Na figura 4 o exemplo de duas modelações, uma simples e outra mais complexa.

Contudo, os princípios básicos dos gráficos e da geometria usados para criar os gráficos

mais simples rendem também técnicas científicas úteis de visualização. Algumas técnicas

parecem naturais e óbvias; outras, mais sofisticadas, são de difícil compreensão, pois

chegam a usar a matemática e a geometria sob sutis metáforas (HETEM, 2006).

Os scripts matemáticos proporcionam um maior poder de abstração, ajudando na criação de

imagens complexas e em muitos casos não imaginadas. Mesmo as imagens geradas a

partir de equações podem ser consideradas arte, se essas equações forem fruto da

criatividade e da capacidade do descobridor que manifesta sua habilidade e originalidade

inventiva (AZEVEDO, 1999).

Basicamente, explorar esses meios e extremamente eficazes de representar e de

reconhecer informações sobre relacionamentos de funções é a principal finalidade deste

trabalho.

1.3 Problematização

Mas, de que forma um usuário pode usufruir desses recursos uma vez que estes estão

implícitos na maioria dos softwares de modelação gráfica?

A matemática, igualmente implícita nas linguagens de programação funcional, pode, em

forma de scripts, auxiliar na melhoria e agilidade de gráficos mais complexos?

Page 7: Paradigmas de Programação Funcional

7

2. Objetivos

2.1 Objetivo Geral

Esta pesquisa abordará o uso de linguagens de programação funcional como forma de

aprimorar o uso dos softwares de computação gráfica e assim agilizar e melhorar as

modelagens e animações.

O uso de conceitos matemáticos também será necessário para um maior entendimento da

pesquisa.

Será desenvolvida uma demonstração de uma modelação ou animação utilizando um

software específico para este fim, mostrando as vantagens da utilização dos conceitos já

contextualizados na pesquisa.

Para tornar a trabalho mais fácil serão utilizados softwares livres tanto para programação

quanto para modelação.

2.2 Objetivos Específicos

Para a Revisão Bibliográfica:

Identificar e estudar os conceitos matemáticos envolvidos desde o aparecimento das

perspectivas geométricas até o seu uso na computação.

Esmiuçar a linguagem de programação funcional e o software de modelação e

animação gráfica a ser utilizado.

Para um melhor entendimento dos conceitos matemáticos:

Será utilizado o software gratuito de plotagem de gráficos o Winplot.

Para a pesquisa exploratória:

Será utilizada a linguagem Python, pois se trata de um paradigma funcional e

também é livre.

Será utilizado o software de modelação e animação gráfica Blender 3D, pois usa a

linguagem Python para seus scripts e também é livre.

Page 8: Paradigmas de Programação Funcional

8

3. Relevância

3.1 Justificativa

Cada vez mais a computação gráfica está presente nos mais diversos ramos de atividade

sejam eles comercial, tecnológico, arquitetônico, escolar e até hospitalar, nota-se que é

comum médicos analisando órgãos do corpo humano em animação 3D tornando mais

simples o trabalho de entender o já complexo interior do corpo humano. Sendo assim, os

avanços na computação científica tendem a aumentar a complexidade de modelos e de

simulações matemáticas. Isso resulta em simulações mais próximas da realidade, o que

realça a possibilidade de adquirir conhecimentos novos e de maior controle. A imensa

quantidade de valores numéricos que estão sendo produzidos e coletados contém muita

informação.

A animação dá uma dimensão adicional muito importante da visualização técnica/cientifica.

A mente pode recolher a informação de animações que seria virtualmente impossível de

obter através da observação de imagens independentes.

3.2 Motivação

A motivação na realização da pesquisa vem da percepção do problema de como

transformar toda essa informação em algo útil para os profissionais que utilizam essa

ferramenta de forma que eles utilizem eficazmente potencialidades criativas e analíticas

inerentemente humanas.

Ao permitir que o profissional coopere com o computador, aumentam-se as possibilidades

para a inspiração, a introspecção e a compreensão. Com a contribuição de muitas áreas,

mesmo as realmente antigas, como a geometria, é possível gerar novas ferramentas

poderosas que permitem uma maior cooperação com o computador.

Page 9: Paradigmas de Programação Funcional

9

4. Abordagem Metodológica

4.1 Revisão Bibliográfica

Será feita uma extensa revisão bibliográfica sobre os conceitos matemáticos a fim de

entender de que forma as funções matemáticas podem gerar as primitivas geométricas.

Após isso, será feita uma revisão bibliográfica sobre a linguagem de programação a ser

abordada na pesquisa.

Uma breve leitura sobre o software de modelação gráfica Blender 3D será necessária para

absorver os conceitos básicos, pois por ser um tipo de programa mais pratico do que

teórico, a maioria das funções se aprende na prática.

4.2 Pesquisa Exploratória

Após as revisões, para que haja uma maior solidificação dos conceitos matemáticos, será

usado o software de plotagem funcional chamado Winplot.

Será feita uma pesquisa de campo com profissionais da área matemática e de programação

com o intuito de dar maior embasamento à pesquisa.

Alem disso, para que se possa criar os scripts necessários para a pesquisa, haverá uma

abordagem prática sobre a linguagem Python.

Feito isso, haverá também pesquisa pratica com o software de modelagem gráfica Blender

3D para fundamentar os conceitos.

Em seguida, será feita uma miscigenação de todos os conhecimentos obtidos para a criação

dos scripts matemáticos e dos módulos de funções para o Blender.

De posse desse material, será criado um trabalho modelação complexo e outro mais

simples para comparação dos conceitos.

Por fim, será produzido o material para a apresentação.

Page 10: Paradigmas de Programação Funcional

10

5. Cronograma

2012 2013

Ago Set Out Nov Dez Jan Fev Mar Abr Mai Jun

Escolha do Orientador

Entrega Pré-Projeto

Revisão Bibliográfica

Entrega Relação Qualificação

Pesquisa Campo

Pesquisa Exploratória

Elaboração Demonstração

Finalização e Conclusão

Entrega Do TCC

Apresentação Banca

Page 11: Paradigmas de Programação Funcional

11

6. Referencias

AZEVEDO, Eduardo “Teoria da Computação Gráfica”, Editora: Campus, 1999. BARENDREGT, H. P. The “Lambda Calculus: its Syntax and Semantics”. North-Holland. Amsterdam, 1984. BATISTA, Emerson de Oliveira “Sistemas de Informação”Editora Saraiva, 2005 “ BLENDER, “Architecture”, <2003>, (http://www.blender.org/development/architecture/ (Último acesso em 29/05/2011) CUNHA, Gilberto José da ; BERALDO, Antonio Tadeu Mendes; BARREIROS Fernando Pierry ; BATTAIOLA André Luiz, “Computação Gráfica e suas aplicações em CAD”,Atlas, 1987 GUIA DO HARDWARE, “Computação Gráfica para Todos”, Disponível em http://www.hardware.com.br/artigos/computacao-grafica-iniciantes/ Ultimo acesso em 22/05/2011 HETEM JR, Annibal “Computação Gráfica” ,LTC, 2006 HUDAK, Paul “Conception, evolution, and application of functional programming languages. Disponível em. http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_funcional#cite_note-0 MELO, A Silva, F. “Princípios de Linguagem de Programação”, Edgard Blücher,2003 SILVA, Edilberto. “Criar Web”. Disponível em <http://www.edilms.eti.br/uploads/file/pp/PP-aula-01-apresentacao.pdf> .Ultimo acesso em 21/05/2011. TUTO MANIA, “Paradigma de Programação Funcional”, 01/06/06, 09:59 hs.<Disponível em http://www.tutomania.com.br/tutorial/paradigma-de-programacao-funcional>Acessado em24/05/2011).