MAC0319 Programação Funcional Contemporânea
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: MAC0122 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]