Enginyeria en Informàtica (3371)
Processadors de Llenguatge II (12470)
Objectius
Un petit nombre de conceptes forma la base dels centenars de llenguatges de programació que han estat dissenyats i implementats. Aquest curs introdueix aquests conceptes base per als llenguatges de programació. L'objectiu és donar als estudiants una comprensió i apreciació bàsica dels paradigmes de programació, criteris d'avaluació així com tècniques d'implementació de llenguatges. El curs cobreix conceptes de programació imperativa, lògica funcional, orientada a objectes i concurrents. Aquests conceptes són il·lustrats per exemples en diferents llenguatges de programació com Pascal, C, Java, ML, Lisp, Prolog Perl, etc.
Mètode d'Avaluació
A través de les pràctiques i un examen. L'examen serà teòric. Les pràctiques consistiran en resoldre un nombre de problemes utilitzant els diferents paradigmes de programació presentats a classe.
Temari
Tema 1. Introducció
Paper dels llenguatges de programació
Implementació.
Qualitats en un llenguatge de programació.
Tema 2. Descripció sintàctica i semántica de llenguatges
Descripció de la sintaxi via gramàtiques lliures de context
Altres gramatiques (BNF, EBNF), parse trees, algoritmes de parsing,
Attribute grammars, semàntica denotacional, verificació de programes.
Tema 3. Programació imperativa
Representació de dades, control.
Tema 4. El paradigme lògic
Regles, queries, model d'execució, rastreig d'avaluació de queries.
Prolog, unificació, estructures de dades i tipus, closed world assumption,
negació, model d'execució, no-determinisme, back-tracking
Tema 5. El paradigma funcional
Escalars bàsics, tipus, tuplas, dades definides per l'usuari
Operaciones: expresions, patern matching.
Control: definicions de function, recursion, Lambda Abstractions, Higher-Order Functions
Tema 6. Paradigma orientat a objectes
Information Hiding, encapsulació, tipus de dades abstractes.
Tema 7. Paradigma concurrent
Bibliografia
Bibliografia
PRATT & ZELKOWITZ: Programming Languages Design and Implementation, 4th Edition,
Prentice Hall (2001).
R. W. SEBESTA, Concepts of Programming Languages, 5th Edition, Addison Wesley
Bibliografia Complementaria
A. TUCKER and R.NOONAN; Programming Languages Principles and Paradigms Mc Graw Hill