Els llenguatges de programació es poden estudiar des de tres perspectives diferents: com el programador, com el dissenyador i com a desenvolupador. En aquesta assignatura s'estudien des del punt de vista del desenvolupador del llenguatge. Implementar un llenguatge significa "escriure'n" un compilador o interpretador. En l'assignatura s'estudien les tècniques relacionades amb la compilació així com les característiques que conformen els diferents llenguatges de programació.
Professors Titulars
Professors Docents
Disseny i programació orientad a objectes.
Programació avançada i estructura de dades.
Sistemes digitals i microprocessadors.
Es coneixen els fonaments bàsics per a la definició forma de llenguatges de programació. Es coneixen les tècniques per a la implementació de llenguatges de programació.
- Mòdul: Llenguatges de programació
- Història. Estadístiques
- Classificació.
- Paradigmes. Essència. Exemples.
- Nivells. Definició. Exemples
- Compilats/Interpretats/Encambrats. Definició. Exemples
- Característiques/Atributs d'un bon llenguatge
- Components d'un LP Punts de vista/Rols.
- Programador, Dissenyador, Implementació
- Casos d'estudi
- Mòdul: Llenguatges formals
- Llenguatges. Gramàtiques. Màquines.
- Classificació de Chomsky. Llenguatges regulars, lliures de context, sensitius al context i sense restriccions.
- Gramàtiques. Derivació. Arbre sintàctic. Llenguatge generat
- Llenguatges regulars. Expressions regulars. Gramàtiques regulars
- Autòmats d'estats finits. Deterministes i no deterministes. Implementació. Aplicacions Llenguatges lliures de context.
- Gramàtiques lliures de context.
- Autòmats de pila. Deterministes i no deterministes. Implementació. Aplicacions Semàntica. Gramàtica d'atributs. Implementació. Aplicacions
- Mòdul: Compiladors i intèrprets
- Compiladors i intèrprets. Estructura d'un compilador. Estructura d'un intèrpret Un compilador en el procés de l'execució. Un intèrpret en el procés de l'execució
- Anàlisi lexicogràfica
- Anàlisi sintàctica
- Anàlisi semàntica.
- Traducció dirigida per sintaxi Generació de codi
Les classes de l'assignatura de llenguatges de programació volen mostrar els coneixements bàsics dels llenguatges de programació en la seva concepció i disseny. Igualment, des de l'assignatura es vol reforçar el pensament crític de l'alumne i serà introduït als àmbits de recerca en llenguatges de programació. És una assignatura en la que es combinen les classes magistrals i les discussions/debats a classe sobre els diferents temes proposats al temari, amb pràctiques grupals per assentar els coneixements adquirits a la teoria i tant l'autonomia com el treball en equip de l'alumne. El professor proposarà temes (o articles a llegir) per a que l' alumne els prepari i es puguin debatre a classe amb exposicions orals.
L’assignatura té la durada d’un semestre i consta de dues parts diferenciades: la part de coneixements i la pràctica de l’assignatura. L’avaluació dels coneixements i de la pràctica serà independent. Per tal d’aprovar l’assignatura caldrà aprovar independentment els coneixements i la pràctica.
Es valorarà:
- La correcta comprensió i aplicació dels conceptes teòrics funamentals estudiats a classe
- La capacidat d' analitzar i definir les característiques d'un llengguatge de programació
- Aprendre a dissenyar i implementar un compilador modern
- La capacitat de raonar decisions de disseny de software
- Crear documentació técnica de qualitat i consistent amb el projecte implementat.
Aho, Alfred. Compilers: Principles, Techniques, and Tools (2006)
Mozota, María Antonia. Teoria de la compilació: Anàlisi Lèxic i Sintàctic. Guia d’estudi. Creative Commons Licence Deed (2009)
Mozota, María Antonia. Teoria de la compilació: L’Anàlisi Semàntica i la Generació del codi. Guia d’estudi. Creative Commons Licence Deed (2009)
Larus, James R.. Assemblers, Linkers, and the SPIM Simulator. Appendix A
Pratt, Terrence W. and Zelkowitz, Marvin V. Programming Languages: Design and Implementation (Fourth edition). Prentice-Hall. 2001.
MacIntyre, Peter B. PHP: the good parts. O'Reilly (2010)
Flanagan, David and Matsumoto, Yukihiro. The ruby programming language. O'Reilly (2008)
Phoenix, Tom Schwartz, Randal L. and Foy, Brian D. Learning Perl. O'Reilly (2008)
Lutz, Mark. Learning Python. O'Reilly (2009)
Lutz, Mark. Programming Python. O'Reilly (2010)