MATA56 - Paradigmas de linguagens de programação - 2020.1
Objetivo
Compreender e aplicar conceitos e paradigmas de linguagens de programação, de forma a facilitar o aprendizado de novas linguagens de programação e fornecer elementos para uma comparação crítica entre linguagens.
Informações básicas
- Professor: Rodrigo Rocha rodrigorgs@ufba.br
- Entre no Google Classroom e inscreva-se nesta turma clicando no botão
+
e digitando o código7aaxcjx
.
Avaliações
- Prova prática de Prolog [peso: 3, individual]
- Caracterização de uma linguagem de programação [peso: 3, em grupo de até 5 pessoas]
- Prova prática de programação funcional e concorrente com JavaScript [peso: 4, individual]
Ferramentas
- SWISH: interpretador de Prolog online
- BiwaScheme: interpretador de Scheme online
- repl.it: interpretador online de várias linguagens
Conteúdo
(Atenção: o material pode ser atualizado ao longo do semestre)
Introdução
Paradigma baseado em lógica
- Prolog: introdução
- Prolog: recursão - kahoot
- Prolog: unificação e busca
- Prolog: aritmética - kahoot
- Prolog: listas - kahoot
Paradigma funcional (introdução com Scheme)
- Scheme: introdução
- Scheme: exercícios
- Scheme: funções de alta ordem
- Scheme: recursão profunda (extra)
Conceitos
Paradigma funcional (tópicos avançados com JavaScript)
- JS: introdução (slides)
- JS: introdução e funções de alta ordem
- JS: closures
- JS: currying, aplicação parcial, composição de funções
Programação assíncrona
- JS: concorrência
- JS: padrões de concorrência
- JS: promises
- JS: async/await
- JS: iterators e generators
Principais referências
- Prolog: Introdução à Programação Prolog, Palazzo. (pdf)
- Conceitos: Programming Language Pragmatics (site), Michael L. Scott, 3ª edição.
- Scheme: BiwaScheme reference
- JavaScript: You Don’t Know JS Yet
- Outras referências