140 likes | 350 Views
Paradigmas de Programação. Paradigma funcional. Paradigma funcional. Permite o desenvolvimento de soluções computacionais a partir da aplicação de funções sobre conjuntos de dados . Não há estruturas de repetição. Deve ser utilizado recursão. As linguagens funcionais são interpretadas.
E N D
Paradigmas de Programação Paradigma funcional
Paradigma funcional • Permite o desenvolvimento de soluções computacionais a partir da aplicação de funções sobre conjuntos de dados. • Não há estruturas de repetição. Deve ser utilizado recursão. • As linguagens funcionais são interpretadas. • O interpretador trabalha como uma calculadora lendo as expressões e calculando os resultados.
Lisp • Foi desenvolvido em 1959 pelo Grupo de Inteligência Artificial do M.I.T., sob a direção do Prof. John McCarthy. • Facilitar experimentos no sistema proposto chamado AdviceTaker. • Foi desenvolvido para IBM 704. • Hoje existem várias versões do LISP.
Aplicações • Inteligência Artificial • Representação do conhecimento. • Aprendizagem de máquina. • Processamento de linguagem natural. • Sistemas de treinamento inteligente.
Mais aplicações • WebServer • Teepeedee2* (http://github.com/vii/teepeedee2) *página do autor: http://john.freml.in/ • Hunchentoot (http://weitz.de/hunchentoot/) • Editor de textos Emacs** • AutoCAD ** **http://www.psg.com/~dlamkins/sl/appendix-a.html • Yahoo Store (www.paulgraham.com/lisp.html)
Mais detalhes de Lisp http://www.lispworks.com/products/myths_and_legends.html
Qual a sua opinião? If the 90s were characterized by the rise of the Object Oriented paradigm, and this decade can be considered as a transition phase, then the future belongs to the functional paradigm. Whether developers prefer to mix this with other paradigms (e.g. in languages like Ruby, Python, C#, etc…), […] Antonio Cangiano, Software Engineer http://antoniocangiano.com/2008/11/08/ Se osanos 90 foicaracterizadopeloaumento do paradigmaOrientado a Objeto, essadécadapode ser consideradacomoumafase de transição, então o futuropertenceaoparadigmafuncional. Se desenvolvedorespreferemcombinar o paradigmafuncional com outrosparadigmas (emlinguagenscomo Ruby, Python, C# etc.) ouusarumalinguagemfuncional, o paradigmafuncionalestarálá.
Dados em LISP • Os dados na linguagem Lisp são chamados S-expressions (expressões simbólicas). • Poder ser uma lista ou um átomo • Átomo: a mais simples das expressões. • Pode ser uma letra ou um dígito
Exemplos de S-Expressions Átomos Listas A B C1 5 aluno (X Y Z) (X (Y Z)) ( + 4 5) (1 2 3 4 5) (A 1 B 2 C)
Avaliação das S-Expressions Átomo Listas • O interpretador trata cada átomo como se fosse uma variável, tentando recuperar seu valor. > A ; erro A não definido > ‘A ; é preciso colocar o ‘ para não A ; avaliar > teste ; erro > ‘teste teste > (X Y Z) ; erro > ‘(X Y Z) (X Y Z) > (+ 5 4) 9 > (+ 1 2 3 (* 4 5 6)) 126
Armazenamento das S-Expressions Átomos X Y Z nil Tabela de Átomos (X. (Y.Z))
Armazenamento das S-Expression Átomos X Y A Z B nil C Tabela de Átomos A = (X.Y), B = (Z) e C = Z