META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

12
META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira

Transcript of META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

Page 1: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

META-PROGRAMAÇÃO

Nome: Leonardo Claro de Ávila

RA: 4204147

Orientador: Sergio Alves Moreira

Page 2: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

INTRODUÇÃO•O QUE É META-PROGRAMAÇÃO?

•O QUE É PARADIGMA DE PROGRAMAÇÃO?

•DEFINIÇÕES DA META-PROGRAMAÇÃO

•VISÃO GERAL DO PARADIGMA META-

PROGRAMAÇÃO

•FUNCIONAMENTO DA META-PROGRAMAÇÃO

•BENEFÍCIOS DA META-PROGRAMAÇÃO

•CONCLUSÃO

Page 3: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

O QUE É META-PROGRAMAÇÃO?

Page 4: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

O QUE É PARADIGMA DE PROGRAMAÇÃO?

Page 5: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

•Paradigma Imperativo

•Linguagens: Basic, Pascal, C, Assembler.

•Paradigma Funcional

•Linguagens: Lisp, ML, OCaml, Haskell.

•Paradigma Lógico

•Linguagens: Prolog.

•Paradigma Orientado Objectos

•Linguagens: C++, Java, Eiffel.

•Paradigma Meta-Programação

•Linguagens: Ruby, Python, Lua.

•Paradigma Concorrente

•Linguagens: Occam, Ada, Java.

PARADIGMAS

Page 6: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

DEFINIÇÕES DA

META-PROGRAMAÇÃO

Metacódigo: é um programa que gera como saída o código para outro programa. Nada além e não requer o uso de nenhum outro paradigma.

Metafunções: são funções que retornam outras funções (e muitas vezes também recebem funções como parâmetro). Com elas é possível criar funções dinamicamente, em tempo de execução.

Metaclasses: são classes cujas instâncias também são classes, portanto com elas é possível criar classes em tempo de execução.

Page 7: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

VISÃO GERAL DO PARADIGMA

META-PROGRAMAÇÃO

Page 8: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

FUNCIONAMENTO DA

META-PROGRAMAÇÃO

Page 9: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

BENEFÍCIOS DA

META-PROGRAMAÇÃO

Page 10: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

CONCLUSÃO

Page 11: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

DÚVIDAS?

Page 12: META-PROGRAMAÇÃO Nome: Leonardo Claro de Ávila RA: 4204147 Orientador: Sergio Alves Moreira.

REFERÊNCIASARTHURGEEK.NET – Disponível em: <http://www.arthurgeek.net/2007/5/22/codigos-mais-claros-usando-ruby>. Acesso em: 11 maio.2008.

HTMLSTAFF – Disponível em: <http://www.htmlstaff.org/ver.php?id=3764>. Acesso em: 25 fev. 2008.

IBM – Disponível em: <http://www.ibm.com/developerworks/linux/library/l-metaprog1.html>. Acesso em: 20 março.2008.

MINERAMA – Disponível em: <http://www.minerama.net/tags/metaprograma%C3%A7%C3%A3o>. Acesso em: 20 maio.2008.

OLA BINI – Disponível em: <http://ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html >. Acesso em: 22 maio.2008.

REFLEXÕES DE MONTE GASPPA E GIULIA C. – Disponível em: <http://montegasppa.blogspot.com/2006/07/metaprogramao.html>. Acesso em: 25 fev. 2008.

WEBLY / IEVOLUTION – Disponível em: <http://forum.ievolutionweb.com/index.php?showtopic=13999>. Acesso em: 12 maio.2008.

WIKIPEDIA – Disponível em: <http://en.wikipedia.org/wiki/Metaprogramming>. Acesso em : 24 fev. 2008.