Apresentação da Disciplina e Plano de Ensino — História
Apresentação da Disciplina
Nesta primeira aula, abordaremos:
- a estrutura geral da disciplina
- o plano de ensino
- um breve histórico das linguagens de programação
Compreender a evolução histórica das linguagens ajuda a entender por que as linguagens modernas possuem determinadas características de design.
Evolução e Popularidade das Linguagens
As linguagens de programação não são estáticas; elas nascem, evoluem e muitas vezes são substituídas por novas abordagens que resolvem problemas contemporâneos de forma mais eficiente.
O vídeo abaixo ilustra a mudança na popularidade das linguagens ao longo das últimas décadas.
Genealogia e Contexto Histórico
Para compreender os paradigmas de programação, estudamos as árvores genealógicas das linguagens.
Linguagens de Programação
Genealogia O’Reilly
Mapa detalhado da evolução histórica das linguagens.Diagrama de Linhas
Representação temporal das conexões entre linguagens.Árvore Geral
Visão consolidada da evolução das linguagens.
Sistemas Operacionais
Estrutura de Avaliação e Atividades
A disciplina combina fundamentação teórica e prática intensiva de programação.
Serão realizadas duas provas teóricas ao longo do semestre.
Elas avaliam a compreensão dos conceitos fundamentais de projeto de linguagens, incluindo:
- amarração (binding)
- escopo e regras de visibilidade
- sistemas de tipos (tipagem forte vs fraca)
- estruturas de controle
- passagem de parâmetros
- concorrência
O componente prático central da disciplina será a implementação de um Sistema de Recomendação de Filmes.
O objetivo é implementar a mesma especificação utilizando três paradigmas diferentes:
- Orientado a Objetos — Java
- Lógico — Prolog
- Funcional — Lisp
Essa abordagem permite observar como diferentes paradigmas modelam o mesmo problema.
O módulo em Java será avaliado automaticamente pelo Wokodex, um sistema de juiz online semelhante ao:
O sistema executará testes com cargas progressivas de dados
(de aproximadamente 5 até 140.000 avaliações de filmes).
O objetivo não é apenas verificar se o código funciona, mas também se a estrutura de dados escolhida possui a complexidade correta, frequentemente exigindo operações \(\mathcal{O}(1)\).
Importante:
Realize o cadastro na plataforma nas primeiras semanas do semestre.
Para consolidar os conceitos teóricos, teremos listas curtas de exercícios ou questionários semanais.
Essas atividades serão disponibilizadas pelo SIGAA ou Moodle e servem como preparação para as provas teóricas.
