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 METAPROGRAMAÇÃO •FUNCIONAMENTO DA META-PROGRAMAÇÃO •BENEFÍCIOS DA META-PROGRAMAÇÃO •CONCLUSÃO O QUE É META-PROGRAMAÇÃO? O QUE É PARADIGMA DE PROGRAMAÇÃO? PARADIGMAS •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. 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. VISÃO GERAL DO PARADIGMA META-PROGRAMAÇÃO FUNCIONAMENTO DA META-PROGRAMAÇÃO BENEFÍCIOS DA META-PROGRAMAÇÃO CONCLUSÃO DÚVIDAS? REFERÊNCIAS ARTHURGEEK.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/lmetaprog1.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/rubymetaprogramming-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.