Linguagens de Programação e Programação Funcional

Documentos relacionados
Linguagens de Programação

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Revisão: linguagens de programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Paradigmas de Linguagem de Programação. Aspectos Básicos

1 Introdução à Programação O que é? Para que serve?... 1

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Linguagens de Programação Funcional

Linguagens de Programação

Linguagens de Programação Princípios e Paradigmas

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Programação Funcional. Capítulo 2. OCaml. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.

Linguagens de Programação Programação Funcional (Haskell)

Linguagens de Programação Aula 3

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

ao paradigma imperativo

Programação de Computadores

Autômatos e Linguagens

Paradigmas de Linguagens

Linguagens de Programação

Paradigmas de Programação

Fundamentos de Programação 1

Programação Estruturada Aula - Introdução a Linguagem de Programação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Fundamentos de Lógica e Algoritmos. Aula 2.3 Introdução a Algoritmos. Prof. Dr. Bruno Moreno

Programação de Computadores

3. Linguagem de Programação C

Informática I. Aula 9. Aula 9-17/05/2006 1

Linguagem de Programação e Compiladores

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Introdução à Computação: Máquinas Multiníveis

Histórico de Linguagens de Programação

Python - Variáveis e expressões

Programação de Computadores:

Linguagens de Programação. Introdução. Carlos Bazilio

Laboratório de Programação 1 Algoritmos e a Lógica de Programação

Introdução à Computação

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

Algoritmos e Programação - Engenharia da Computação -

Introdução a Programação

Cálculo Lambda Sem Tipos

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Conceitos de Linguagens de Programação

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Principais paradigmas de programação. Programação imperativa Programação funcional Programação lógica Programação OO

Algoritmos Computacionais

ANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Capítulo 1. Aspectos Preliminares

Linguagem Funcional Haskell

Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2013.

Programação I Aula 2 Apresentação da linguagem Python

Programação I Apresentação

Métodos de implementação de linguagens. Kellen Pinagé

Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/01)

Fundamentos de Programação 1

Apresentação da Disciplina

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

O que é a Teoria em Ciência da Computação. Introdução à Ciência da Computação Mário S. Alvim

Introdução ao Python. Programa Computacional

Introdução a Programação

Transcrição:

Linguagens de Programação e Programação Funcional GSI004 Aula 01* Faculdade de Computação UFU *baseada nos slides do Professor Paulo Henrique Ribeiro Gabriel 30 de setembro de 2014 GSI004 Aula 01 30 de setembro de 2014 1 / 19

O que é uma linguagem de programação? Inicialmente, computadores eram programados utilizando sequências de números Chamávamos essas sequências de linguagem de máquina No entanto, sua leitura é complicada para seres humanos Além de facilitarem o surgimento de erros Por esse motivo, buscou-se linguagens de mais alto nível, que abstraíssem os computadores, tornando a programação mais simples GSI004 Aula 01 30 de setembro de 2014 2 / 19

O que é uma linguagem de programação? Linguagem de Programação Linguagem de Programação: sintaxe (gramática) e semântica (signicado) utilizadas para escrever (ou codicar) um programa. Uma linguagem de programação é também um código por meio do qual o ser humano se comunica com o computador, transmindo instruções que devem ser seguidas para a resolução de um problema. GSI004 Aula 01 30 de setembro de 2014 3 / 19

Paradigmas de Linguagens de Programação De um modo geral, podemos classicar as linguagens de programação em duas classes: 1 Linguagens imperativas 2 Linguagens declarativas GSI004 Aula 01 30 de setembro de 2014 4 / 19

Paradigmas de Linguagens de Programação Linguagens Imperativas Programas possuem um conjunto de variáveis (estado implícito) que é modicado por comandos da linguagem Tais linguagens têm, em geral, uma noção explícita de sequência de comandos que permite o controle dos estados Linguagens imperativas expressam como alguma coisa será computada Exemplos: Fortran, Pascal, Ada, C, C++, Java, C#, etc... GSI004 Aula 01 30 de setembro de 2014 5 / 19

Paradigmas de Linguagens de Programação Linguagens Declarativas Programas não possuem um estado implícito Programas são construídos por meio de expressões (ou termos) em vez de comandos Linguagens declarativas expressam o quê será computado São divididas em dois grupos: 1 Linguagens funcionais 2 Linguagens lógicas GSI004 Aula 01 30 de setembro de 2014 6 / 19

Paradigmas de Linguagens de Programação Linguagens Funcionais O modelo de computação é o conceito matemático de função Ao computar uma função, aplica-se zero ou mais argumentos para computar um único resultado Linguagens puramente funcionais: FP, Haskell, Miranda Linguagens híbridas: Lisp, Scheme, Racket GSI004 Aula 01 30 de setembro de 2014 7 / 19

Paradigmas de Linguagens de Programação Linguagens Lógicas O modelo de computação é o conceito de lógica de predicados A computação é uma associação de um grupo de valores com backtracking para resolver valores adicionais Exemplos: Prolog, Parlog, KL1 GSI004 Aula 01 30 de setembro de 2014 8 / 19

Programação Funcional Este é um curso de programação funcional Programação: Ênfase em análise e solução de problemas Desenvolvimento de algoritmos e estruturas de dados que apoiem essa solução Como tais algoritmos e estruturas de dados devem ser processados pelo computador Foco no pensamento humano Funcional: Programas são construídos pela denição de funções matemáticas Programas funcionais consistem em expressões que utilizam essas denições Foco em técnicas de solução de problemas, algoritmos, estruturas de dados e notações apropriadas à abordagem funcional GSI004 Aula 01 30 de setembro de 2014 9 / 19

Programação Funcional Este não é um curso de linguagens funcionais Não aprenderemos a fundo uma linguagem funcional Embora precisamos de uma linguagem para nos auxiliar Precisamos aprender a usar uma linguagem de modo que nossos programas sejam ecientes GSI004 Aula 01 30 de setembro de 2014 10 / 19

Vantagens da Programação Funcional 1 Programas funcionais são mais fáceis de serem manipulados matematicamente que programas imperativos 2 Linguagens funcionais têm poderosos mecanismos de abstração 3 Programação funcional permite novas abordagens algorítmicas 4 Programação funcional permite novas abordagens para desenvolvimento de programas 5 Programas funcionais podem ser facilmente paralelizáveis 6 Programas funcionais são importantes em diversas áreas de pesquisa 7 Programação funcional tem relação direta com a Teoria da Computação 8 Programação funcional ajuda a abrir a cabeça de estudantes de computação GSI004 Aula 01 30 de setembro de 2014 11 / 19

Desvantagens da Programação Funcional 1 Programas funcionais costumam ser lentos 2 Linguagens funcionais puras têm pouco uso na indústria 3 Programação funcional parece pouco natural GSI004 Aula 01 30 de setembro de 2014 12 / 19

Um Pouco de História Década de 1930 Alonzo Church desenvolveu o cálculo-λ, uma simples e poderosa teoria sobre funções GSI004 Aula 01 30 de setembro de 2014 13 / 19

Um Pouco de História Década de 1950 John McCarthy desenvolveu a linguagem Lisp, a primeira linguagem funcional, com inuências do cálculo-λ, porém mantendo o conceito de atribuições de variáveis GSI004 Aula 01 30 de setembro de 2014 14 / 19

Um Pouco de História Década de 1960 Peter Landin a linguagem ISWIM, a primeira linguagem puramente funcional, totalmente baseada no cálculo-λ GSI004 Aula 01 30 de setembro de 2014 15 / 19

Um Pouco de História Década de 1970 John Backus desenvolveu a linguagem FP, com ênfase em funções de ordem superior GSI004 Aula 01 30 de setembro de 2014 16 / 19

Um Pouco de História Década de 1970 Robin Milner e seus colaboradores desenvolveram a linguagem ML, a primeira linguagem funcional moderna, que introduziu conceitos de inferência de tipo e tipos polimórcos GSI004 Aula 01 30 de setembro de 2014 17 / 19

Um Pouco de História Década de 1970-80 David Turner desenvolveu diversos estudos que culminaram na criação do sistema Miranda GSI004 Aula 01 30 de setembro de 2014 18 / 19

http://upload.wikimedia.org/wikipedia/commons/1/1c/haskell-logo.svg 4/22/14, 17:47 Page 1 of 1 Um Pouco de História 1985 Um comitê internacional de pesquisadores iniciou o desenvolvimento da linguagem Haskell, a qual seria um padrão entre as linguagens funcionais Em 2003 publicaram a primeira especicação da linguagem (Haskell 98), a qual foi modicada em 2009 para dar origem ao padrão atual (Haskell 2010) GSI004 Aula 01 30 de setembro de 2014 19 / 19