1 / 10

Programação Funcional

Programação Funcional. Otavio Bergmann e Raphael Miollo. Parte 2 – Investi ga ção e apresentação. Questão 2.1 : Pesquise a  história  de uma linguagem de programação funcional à sua escolha, buscando responder às seguintes questões : (Linguagem escolhida: LISP).

cili
Download Presentation

Programação Funcional

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação Funcional Otavio Bergmann e Raphael Miollo Parte 2 – Investigação e apresentação

  2. Questão 2.1: Pesquise a história de uma linguagem de programação funcional à sua escolha, buscando responder às seguintes questões: (Linguagem escolhida: LISP) • 2.1.1 – Quem criou a linguagem? • LISP foi inventado por John McCarthy em 1958, enquanto ele estava no Instituto de Tecnologia de Massachusetts(MIT). McCarthy publicou um artigo onde ele mostra que com alguns operadores simples e uma notação para funções é possível construir uma linguagem Turing para algoritmos. John McCarthy (1927-2011)

  3. 2.1.2 – Qual a motivação para a criação da linguagem? • Os motivação para criação de LISP, segundo McCarthy era desenvolver uma linguagem algébrica para o processamento de listas para trabalho com IA(inteligência artificial). • 2.1.3 – Em que ano foi criada e como evoluiu a linguagem? • LISP foi criada em 1958 e sua evolução foi de grande importância para as linguagens que surgiram posteriormente. • Durante 1980s e 1990s, um esforço grande foi feito e surgiram numerosos dialetos do lisp(interlisp, Maclisp, ZetaLisp). Lisp influenciou pesadamente o inventor de SmallTalk.

  4. 2.1.4 - A linguagem é usualmente implementada via interpretador, compilador, ou ambos? • A linguagem LISP é interpretada, onde o usuário digita em uma linguagem formal definida e recebe de volta a avaliação de sua expressão. • LISP é implementada via interpretador, porem todos os dialetos de LISP tem compiladores. Em algus dialetos o compilador é uma função que pode invocar a partir de código normal para transformar uma lista numa função invocável.

  5. 2.1.5 – Informe nomes, versões, URL’s e descrições de duas implementações da linguagem. • FranzLisp(http://en.wikipedia.org/wiki/Franz_Lisp) • InterLisp(http://c2.com/cgi/wiki?InterLisp) • ZetaLisp(http://wiki.alu.org/ZetaLisp) • Scheme (http://groups.csail.mit.edu/mac/projects/scheme/) • LeLisp(http://lelisp.org/) • AutoLisp(http://pt.wikipedia.org/wiki/AutoLISP) • MacLisp(http://c2.com/cgi/wiki?MacLisp)

  6. 2.1.6 – Descreva algum aspecto que você considera curioso sobre a linguagem. • Algumas coisas que LISP trouxe: • Uso de condicionais (if-then-else); • GarbageColletor; • Recursividade; • Tipos de dados; • Variáveis são tratadas como ponteiros; • Alguns fatos: • O nome LISP vem de List Processor; • A primeira plataforma de popular para desenvolvimento de lojas virtuais, a ViaWeb foi inteiramente desenvolvida em LISP; • LISP é a principal linguagem usada em estudos de inteligência artificial;

  7. 2.2 – O paradigma de programação funcional tem seus prós e contras. Busque mais sobre isso e escolha uma vantagem e uma desvantagem do paradigma. • Prós: • Programas mais concisos; • Programas próximos de uma especificação matemática; • Permite decompor problemas em componentes reutilizáveis; • Contras: • Alguns algoritmos são mais eficientes quando implementados de forma imperativa; • Difícil de prever os custos de execução; • Compiladores/interpretadores mais complexos.

  8. 2.3 – Sabendo que funções de alta ordem são recursos importantes ne programação funcional, crie uma apresentação (slides ou vídeo) explicando uma função de alta ordem à sua escolha (Haskell). • Funções de alta ordem podem receber como parâmetro ou retornar funções. • Alguns exemplos são: Mapear, Filtrar, Reduzir. • Ex: >mapsqrt[100, 9, 25, 16] • A função acima pega cada elemento da lista e obtém a sua raiz quadrada. • Saída: [10, 3, 5, 4] Mapsqrt Entrada 25 16 100 9 √100 √9 √25 √16 5 4 Saída 10 3

  9. Em provas e exames na área de computação (POSCOMP, ENADE, concursos, disciplinas, etc), é comum haver alguma questão sobre paradigmas de programação. Pesquise provas/exames disponíveis na internet e selecione uma questão relacionada ao paradigma de programação funcional. Estude o que for necessário para resolver a questão.

  10. 2.5- Procure na web algum programa escrito segundo o paradigma de programação funcional, em qualquer linguagem • Implementação do algoritmo de ordenação quicksort com haskell. • Exemplo em C • voidqsort(int a[], intlo, inthi) • { • int h, l, p, t; • if (lo < hi) { • l = lo; • h = hi; • p = a[hi]; • do { • while ((l < h) && (a[l] <= p)) • l = l+1; • while ((h > l) && (a[h] >= p)) • h = h-1; • if (l < h) { • t = a[l]; • a[l] = a[h]; • a[h] = t; • } • } while (l < h); • a[hi] = a[l]; • a[l] = p; • qsort( a, lo, l-1 ); • qsort( a, l+1, hi ); • } • } Exemplo em Haskell qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

More Related