Disciplina: Conceitos de Linguagens de Programação

Pré-requisito: Estruturas de Dados,  Teoria da Computação

Carga horária: 60

Créditos: 4

Ementa: Caracterização das linguagens de programação de computadores e seus diferentes paradigmas de programação (lógico, procedimental, funcional, orientação a objetos, orientação a aspectos, etc.). Ambiente. Estudo dos conceitos básicos de cada paradigma. Modelos computacionais. Semântica. Outros paradigmas de programação.

Objetivos: Proporcionar ao aluno uma visão geral dos conceitos envolvidos no projeto e no uso dos diversos paradigmas de linguagens de programação.

Metodologia: aulas teóricas

Avaliação: provas teóricas e práticas. Trabalhos em grupo.

Conteúdo Programático:

  1. Características e objetivos das Linguagens de Programação. Abstração de Dados. Polimorfismo. Ambiente e escopo de variáveis.

  2. Tipos. Linguagens fortemente e fracamente tipadas. Linguagens não-tipadas. Inferência de tipos. Linguagens com tipo estático (Haskell) e dinâmico (Scheme).
  3. Semântica: conceitos das semânticas operacional, denotacional, axiomática, algébrica e de ações

  4. Linguagens Imperativas:

  5. Linguagens Lógicas:

  6. Linguagens Funcionais:

  7. Linguagens Orientadas a Objetos: tipos abstratos de dados, encapsulamento de dados e operações, herança e outros conceitos de orientação a objetos.

  8. Outros paradigmas: programação concorrente, modelo de dados relacional (SQL), Redes de Petri, orientação a aspectos, etc.

Bibliografia básica:

  1. Conceitos de Linguagens de Programação. R. W SEBESTA. Bookman, 2000.

  2.  Princípios de Linguagem de Programação. A. C. MELO e  F. S. C. SILVA.  Edgard Blücher LTDA, 2003.

  3. Programming Languages - Concepts and Constructs. Ravi Sethi. Addison-Wesley, 1996.

  4. Formal Syntax and Semantics of Programming Languages. Kenneth Slonneger and Barry L. Kurtz. Addison-Wesley, 1995.

  5. Introduction to Programming Languages. Anthony A. Aaby. http://cs.wwc.edu/~aabyan/PLBook/HTML/index.html