A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Seminco – 2006 Blumenau - SC A Linguagem Haskell Claudio Cesar de Sá Grupo de Computação Cognitiva Aplicada (COCA) Universidade do Estado de Santa Catarina.

Apresentações semelhantes


Apresentação em tema: "Seminco – 2006 Blumenau - SC A Linguagem Haskell Claudio Cesar de Sá Grupo de Computação Cognitiva Aplicada (COCA) Universidade do Estado de Santa Catarina."— Transcrição da apresentação:

1 Seminco – 2006 Blumenau - SC A Linguagem Haskell Claudio Cesar de Sá Grupo de Computação Cognitiva Aplicada (COCA) Universidade do Estado de Santa Catarina (UDESC)

2 Seminco – 2006 Blumenau - SC Agenda 1.O que é uma Linguagem de Programação 2.Os Paradigmas das LPs 3.Histórico e contexto do Haskell 4.Características 5.Exemplos 6.Aplicações 7.O livro: Haskell: Uma Abordagem Prática 8.Referências

3 Seminco – 2006 Blumenau - SC Linguagem de Programação O Propósito das Linguagens de Programação: (O que é uma linguagem de programação?) Abstração de uma máquina virtual Programar é a arte de contar a outro humano aquilo que se quer que o computador faça.

4 Seminco – 2006 Blumenau - SC Paradigmas de Linguagens de Programação IMPERATIVAS: C, Basic, Assembler, Fortran, Cobol, FUNCIONAIS: Lisp, Miranda, Scheme, Comoom Lisp, Haskell, ML,... LÓGICAS: Prolog e derivados ORIENTADAS A OBETOS: Smalltalk,... HÍBRIDAS: C++ Builder, Java, Delphi, Kylix,... ESPECÍFICAS: GPSS, Simula, Auto-Lisp,... BASEADAS EM REGRAS de PRODUÇÃO: CLIPS, Jess,... Shell de SEs... SEBESTA,Robert W. Concepts of Programming Languages. 4 ed. Addison Wesley, 1999.

5 Seminco – 2006 Blumenau - SC Qual linguagem a ser ensinada? Funcionais Imperativas ou procedurais C C++ Visual C++ Visual Basic Java Assembler Fortran Cobol Haskell ML Scheme Erlang

6 Seminco – 2006 Blumenau - SC Evolução: Genealogia From Sebestas Concepts of ProgrammingLanguages Haskell PrologSWI-Prolog

7 Seminco – 2006 Blumenau - SC Histórico do Haskell Origem do nome: Haskell Brooks Curry Criado pelo comitê da conferência de FPCA em, 1987 –Necessidade de uma linguagem puramente funcional, padrão, sem restrições de uso, … Uma versão consolidada: Haskell 98 Uma LP projetada (~ 10 anos)

8 Seminco – 2006 Blumenau - SC Porquê do Haskell? Haskell é uma linguagem de muito alto-nível (muitos detalhes são tratados automaticamente) Haskell tem uma boa expressividade e concissão (muita coisa com pouco esforço) Haskell é eficiente no tratamento de dados complexos e na combinação de componentes Em contra-partida, Haskell não tem um altíssimo desempenho em termos de LP, pois prioriza o tempo do programador em relação ao da CPU!

9 Seminco – 2006 Blumenau - SC Objetivos do Projeto da Linguagem Haskell: Apropriada ao ensino de programação, pesquisas, e aplicações (reais) Descrição completa e aberta de sua sintaxe e semântica forma Código livre e multi-plataforma As idéias fundamentais do Haskell, deveria ser um consenso da comunidade Reduzir a diversividade do número de LP funcionais Escalabilidade

10 Seminco – 2006 Blumenau - SC Características: Legibilidade Rápido aprendizado: conceito elementar de funções (ensino médio) Análoga a ML, e outras LPs funcionais Motivar o estudo do Lambda Cálculo. Haskell é 100% Cálculo Lambda Módulos permitem um crescimento linear dos projetos com Haskell

11 Seminco – 2006 Blumenau - SC Um Exemplo: Teorema de Pitagoras: hipot :: Float -> Double hipot x y = sqrt (x*x + y*y) Main> hipot x y Casamento de padrões: x e y (Pattern matching)

12 Seminco – 2006 Blumenau - SC Interpretadores e Compiladores GHC nhc98 HBC / HBI Hugs

13 Seminco – 2006 Blumenau - SC O Interpretador Hugs Iniciando o hugs Haskell: > hugs __ __ __ __ ____ ___ _______________________________________________ || || || || || || ||__ Hugs 98: Based on the Haskell 98 standard ||___|| ||__|| ||__|| __|| Copyright (c) ||---|| ___|| World Wide Web: || || Report bugs to: || || Version: Nov 2003 _______________________________________________ Type :? for help Prelude> O prompt. O Hugs está pronto para uma entrada

14 Seminco – 2006 Blumenau - SC Definindo uma função quase igual Definindo novos operadores com nome construído por símbolos x ~== y = x-y < Definindo um novo operador ~== Os argumentos x e y O qual retorna True se a diferença entre x e y for menor do que

15 Seminco – 2006 Blumenau - SC Executando a função/operador: ``~==´´ Main> 3 ~== True Main> 3~==4 True OK Qual o erro? x ~== y = x-y <

16 Seminco – 2006 Blumenau - SC Consertando a definição Uma função auxiliar Main> abs 3 3 Main> abs (-3) 3 A função do valor absoluto x ~== y = abs (x-y) < Main> 3 ~== 4 False

17 Seminco – 2006 Blumenau - SC Premissa do código, e das funções a seguir: type Picture = [[Char]] -- [String] horse :: Picture horse = [" ##...", ".....##..#..", "...##.....#.", "..# #.", "..#...#...#.", "..#...###.#.", ".#....#..##.", "..#...#.....", "...#...#....", "....#..#....", ".....#.#....", "......##...."]

18 Seminco – 2006 Blumenau - SC Combinando Funções Uma função para colocar uma figura sobre : um_sobre_outro

19 Seminco – 2006 Blumenau - SC Mais código: um_sobre_outro :: Picture -> Picture -> Picture um_sobre_outro = (++) -- sem argumentos ou um_sobre_outro x = append x x Uma simples concatenação (duplica) da mesma lista....mesma figura... Uma após a outra.. append :: [a] -> [a] -> [a] append [ ] ys = ys append (x : xs) ys = x : append xs ys

20 Seminco – 2006 Blumenau - SC Executando.... Cavalos> imp_cavalo (um_sobre_outro horse) ## ##..#.....##.....#...# #...#...#...#...#...###.#..#....#..##...#...# #...# #..# #.# ## ## ##..#.....##.....#...# #...#...#...#...#...###.#..#....#..##...#...# #...# #..# #.# ## Cavalos>

21 Seminco – 2006 Blumenau - SC Executando.... Cavalos> imp_cavalo (append horse (vira_V horse)) ## ##..#.....##.....#...# #...#...#...#...#...###.#..#....#..##...#...# #...# #..# #.# ## ## #..##......#.....##....# #...#...#...#...#.###...#...##..#....#......#...#......#...# #..# #.# ## Cavalos>

22 Seminco – 2006 Blumenau - SC Aplicações Simpósio Brasileiro de LPs => compiladores Ensino: LPs, paradigmas de LPs, Estruturas de Dados, projeto de sistemas, prototipação, IA, Wiki-Haskell Suporte da BD Haskell.NET

23 Seminco – 2006 Blumenau - SC Um livro neste processo :: uma disciplina de graduação que foi construída Alguns artigos na área de educação Várias disciplinas envolvidas Uma motivação, um grupo, uma atmosfera, uma novidade, as descobertas, as desconfianças, Um resultado: Haskell

24 Seminco – 2006 Blumenau - SC Capítulos 1.Introdução 2.Matemática Funcional 3.Uma Visão Funcional da Indução 4.Tuplas 5.Listas 6.Tipos de Dados 7.Classes

25 Seminco – 2006 Blumenau - SC Capítulos 8.Lambda Cálculo 9.Generalização 10.Figuras Textos 11.Vetores 12.Árvores 13.Algoritmos de Ordenação 14.Elementos Não-Funcionais

26 Seminco – 2006 Blumenau - SC Capítulos 15.Entradas, Saídas e Seqüências de Ações 16.Problemas 17.Reflexões Finais A.Ambientes de Programação B.Funções Complementares

27 Seminco – 2006 Blumenau - SC Um estudante Uma editora: um projeto!

28 Seminco – 2006 Blumenau - SC Uma idealização efetivada

29 Seminco – 2006 Blumenau - SC Futuro A verticalização: aplicações e melhorias A comunidade se amplia

30 Seminco – 2006 Blumenau - SC Hudak, P. et al (2000) A Gentle Introduction to Haskell Version 98 Jones, S.P. et al (1999) The Haskell 98 Report Winstanley, Noel (1999) What the Hell are Monads? oDeHaskell Referências

31 Seminco – 2006 Blumenau - SC Muito Obrigado !


Carregar ppt "Seminco – 2006 Blumenau - SC A Linguagem Haskell Claudio Cesar de Sá Grupo de Computação Cognitiva Aplicada (COCA) Universidade do Estado de Santa Catarina."

Apresentações semelhantes


Anúncios Google