Linguagens de Programação

Apresentação

Está é a página da disciplina Linguagens de Programação, do professor Fabio Mascarenhas, para o semestre de 2013.1. As aulas da disciplina são às segundas e quartas, das 10 às 12 horas.

O objetivo dessa disciplina é expor os alunos aos diferentes paradigmas de programação, mostrando a eles o que está “atrás da cortina” desses paradigmas. Os alunos aprenderão como a maneira de funcionamento das linguagens com as quais eles já estão familizarizados é apenas uma possibilidade em um grande espaço de linguagens possíveis. Para isso faremos tanto o estudo de “linguagens símbolo” dos diferentes paradigmas, quanto a construção e estudo de pequenos interpretadores para linguagens que são exemplos estilizados dos mesmos paradigmas.

Os alunos precisam ter uma boa desenvoltura com programação, em especial com estruturas de dados e funções recursivas. Não é necessário conhecimento da teoria de linguagens formais, ou de técnicas de compilação; o enfoque desse curso é o comportamento das linguagens e não análise sintática ou geração de código.

Ementa

Introdução à programação funcional pura; programação funcional com Scala: funções como valores, case classes, pattern matching; padrões de programação funcional: listas, mapas e folds; o interpretador de fun, uma mini-linguagem funcional; regras de escopo de seu efeito em funções de primeira classe; acrescentando tipos a fun; o familiar revisitado: microC, uma linguagem imperativa com ponteiros e funções de primeira ordem; lvalues vs. rvalues; programação OO destilada: a linguagem Smalltalk; classes e metaclasses; um interpretador para Smalltalk.

Avaliação

A avaliação será feita por provas e por pequenos trabalhos práticos. A nota das provas corresponderá a 60% da nota final (6 pontos) e a dos trabalhos a 40% (4 pontos). Serão três provas, uma na metade do período e as outras duas no final, e será feita uma média aritmética das duas maiores notas. Não haverá prova final ou segunda chamada. A média final é 5,0.

Datas das Provas

P1: 03/06/2013

P2: 05/08/2013

P3: 07/08/2013

As provas serão feitas ou na sala DLC ou na sala DCC, a depender da disponibilidade, no mesmo horário da aula.

Lista de Discussão

Temos um grupo no Facebook para perguntas e avisos sobre a matéria. Acessem aqui.

Livros

Uma boa referência para os assuntos das nossas primeiras aulas, sobre programação funcional, é o capítulo 1 do Structure of Interpretation of Computer Programs, de Abelson e Sussman. Algumas seções do resto do livro têm informações sobre outros assuntos que vamos ver durante o curso, que irei passando aqui à medida que forem sendo cobertos.

Não existe um livro texto único para essa disciplina. O que mais se aproxima disso é o Programming Languages: Application and Interpretation, de Shriram Krishnamurthi, por adotar a estratégia de explicar conceitos de linguagens de programação através do estudo de pequenos interpretadores. Outro livro que adota a mesma estratégia é o Essentials of Programming Languages, de Friedman e Wand.

Os livros acima usam Racket como linguagem de implementação dos seus interpretadores, enquanto vamos usar Scala, que tem uma sintaxe mais familiar para programadores C e Java. O curso de programação funcional com Scala do criador da linguagem, Martin Odersky, é um bom tutorial para o subconjunto de Scala que vamos usar.

Provavelmente o melhor livro para uma visão de alto nível dos conceitos de linguagens de programação é o Programming Language Pragmatics, de Michael Scott. É uma boa referência para resumos de vários temas que serão cobertos em sala.

Exercícios e Trabalhos

Provas

Notas de Aula

Slides

Logs do console

Projetos Eclipse

Instalando Scala

As instruções completas para instalação da distribuição de Scala estão em Typesafe Stack Download. A IDE Scala para Eclipse está aqui.

Se quiser um links diretso para Windows, baixe o instalador do sbt aqui, e a IDE Scala aqui.

Contato

Podem entrar em contato pelo meu email que responderei assim que possível. Também tenho um horário de atendimento de alunos na minha sala, segundas e quartas de 17 às 18 horas. A sala é a E-2013 do DCC.


Última Atualização: 2016-05-18 10:58