MAC0319  Programação Funcional Contemporânea

Por | Em

OBJETIVOS:  Estudar a programação funcional sob uma ótica atual, trabalhando com linguagens recentes e tendo em vista dois campos de aplicação que estão na ordem do dia: (1) a utilização efetiva de máquinas multicore por programas concorrentes, e (2) a criação de aplicações distribuídas voltadas para a Web ou para a Internet. O estudo da programação funcional contemporânea vem ganhando importância. Embora a programação funcional exista há mais de cinco décadas, até pouco tempo o uso desse paradigma de programação vinha se mantendo relativamente baixo e restrito a ambientes acadêmicos. Hoje, entretanto, o interesse por linguagens funcionais é crescente. Novas linguagens funcionais têm atingido níveis surpreendentes de difusão e de utilização fora da academia. O ressurgimento da programação funcional tem várias razões. Uma delas é a popularização das máquinas com múltiplos núcleos. Muitos pesquisadores acreditam que o paradigma funcional é o mais adequado para a criação de programas que façam melhor uso da capacidade de processamento de uma máquina com múltiplos núcleos. Outra razão é o contraste entre as construcões sucintas das linguagens funcionais e a verbosidade de linguagens como Java.

PROGRAMA:  A linguagem Erlang. Programação concorrente em Erlang. O modelo de atores. Programação distribuída em Erlang. A plataforma Erlang/OTP. Programação de máquinas multicore em Erlang. A linguagem Scala. Suporte ao paradigma funcional e à orientação a objetos em Scala. Inferência de tipos em Scala. Tópicos avançados de Scala.

RESPONSÁVEIS:  Francisco Reverbel

PRÉ-REQUISITO:  MAC0121 Princípios de Desenvolvimento de Algoritmos e MAC0242 Laboratório de Programação II.

CARGA HORÁRIA SEMANAL E NÚMERO DE CRÉDITOS:  4 horas, 4 créditos-aula.

CRITÉRIO DE AVALIAÇÃO DA APRENDIZAGEM:  Método: Aplicação de provas e/ou trabalhos.
Critério: Média ponderada de provas e/ou trabalhos.
Norma de recuperação: Aplicação de prova e/ou trabalho de recuperação.

BIBLIOGRAFIA BÁSICA: 

  • Joe Armstrong, Programming Erlang: Sofware for a Concurrent World, Pragmatic Bookshelf, 2007.
  • Martin Odersky, Lex Spoon e Bill Venners, Programming in Scala, Second Edition. Artima Press, 2010.

OBSERVAÇÃO:  Disciplina optativa eletiva no currículo do BCC.

 

[Veja dados da disciplina no JúpiterWeb]