Compiladors Codi:  05.580    :  6
Consulta de les dades generals   Descripció   L'assignatura en el conjunt del pla d'estudis   Camps professionals en què es projecta   Coneixements previs   Informació prèvia a la matrícula   Objectius i competències   Continguts   Consulta dels recursos d'aprenentatge de la UOC per a l'assignatura   Informació addicional sobre els recursos d'aprenentatge i eines de suport   Informacions sobre l'avaluació a la UOC   Consulta del model d'avaluació  
Aquest és el pla docent de l'assignatura per al segon semestre del curs 2023-2024. Podeu consultar si l'assignatura s'ofereix aquest semestre a l'espai del campus Més UOC / La universitat / Plans d'estudis). Un cop comenci la docència, heu de consultar-lo a l'aula. El pla docent pot estar subjecte a canvis.

Els compiladors són eines indispensables per a qualsevol informàtic que s'encarreguen de traduir informació textual d'un format o llenguatge a un altre. Per exemple, actuen com a peces clau en el procés l'execució d'un programa: tradueixen el programa des del llenguatge d'alt nivell utilitzat pels humans fins a un llenguatge de baix nivell que es pot executar en un ordinador (com l'assemblador o el codi màquina).

Aquesta assignatura presenta l'estructura bàsica d'un compilador: els mòduls que el composen i com es comuniquen entre si. Ens centrarem en el cas dels llenguatges de programació de propòsit general i en el procés de generació d'un executable a partir d'un programa en alt nivell.

Concretament, es veurà com s'analitza un programa font per obtenir-ne les parts components i es detecten els possibles errors introduïts pel programador. S'introduirà també el concepte de intèrpret i la seva relació amb els compiladors. Després s'estudiarà com a partir de les dades obtingudes a la part d'anàlisi, es genera el codi objecte i és optimitzat per millorar-ne el rendiment. Tot això es posarà en pràctica mitjançant l'ús d'eines per a la construcció de compiladors.

Amunt

L'assignatura Compiladors es pot cursar com assignatura optativa o bé com a part de l'itinerari de Computació.

Dins d'aquest itinerari, aquesta assignatura permet aplicar els coneixements obtinguts a Autòmats i Gramàtiques a l'estudi dels llenguatges de programació. A més, junt amb Intel·ligència Artificial i Aprenentatge Computacional, l'assignatura proporciona les bases utilitzades en les tècniques de processament de llenguatge natural.

Amunt

A més de l'àrea de compiladors, totes les tècniques que s'estudien en aquesta assignatura es poden aplicar, en general, a qualsevol sistema de processament de llenguatges i de traducció. La construcció de compiladors i intèrprets també és rellevant en el intercanvi d'informació textual entre diferents sistemes software: construcció de llibreries d'importació/exportació, definició de llenguatges d'intercanvi de dades, etc.

Així doncs, aquesta assignatura ocupa una posició molt rellevant en les sortides professionals en àrees on la definició formal d'un llenguatge es fa necessària com ara la definició de llenguatges de programació, el processament de llenguatge natural o la traducció automàtica, entre d'altres.

Per últim, les competències adquirides en aquesta assignatura poden ser útils per a qualsevol desenvolupador, donat que permeten entendre millor els llenguatges de programació, el funcionament dels intèrprets i els compiladors i el procés d'execució d'un programa.

Amunt

L'assignatura pressuposa un bons coneixements de programació, específicament en llenguatge Java, pel que resulta molt recomanable haver cursat les assignatures de programació i d'estructures de dades corresponents amb anterioritat.

A més, pel bon seguiment de l'assignatura s'ha de partir d'uns coneixements bàsics en llenguatges, expressions regulars, autòmats finits i gramàtiques.

I, finalment, cal tenir coneixements bàsics sobre llenguatge assemblador i estructura de computadors.

Amunt

Abans de cursar aquesta assignatura és molt recomanable haver cursat prèviament les assignatures següents:

  • Disseny i Programació Orientada a Objectes
  • Autòmats i Gramàtiques
  • Estructura de Computadors

A més, encara que no és imprescindible és molt recomanable haver estudiat l'assignatura de Disseny d'estructures de dades.

Amunt

Les competències generals del Grau que es posen de manifest en aquesta assignatura són:

  • Capacitat per analitzar un problema en el nivell d'abstracció adequat a cada situació i aplicar les habilitats i coneixements adquirits per a resoldre'l.
  • Capacitat per dissenyar i construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració i reutilització.
  • Capacitat per aplicar les tècniques específiques de tractament, emmagatzemament i administració de dades.
  • Capacitat per proposar i avaluar diferents alternatives tecnològiques per resoldre un problema concret.

Les competències específiques d'aquesta assignatura són:

  • Entendre el procés d'execució d'un programa escrit en un llenguatge d'alt nivell.
  • Conèixer la diferència entre compilador i intèrpret i saber escollir l'eina més apropiada a cada situació.
  • Conèixer les diferents fases d'un compilador (anàlisi lèxic, sintàctic i semàntic, generació de codi i optimització de codi) i com es relacionen.
  • Entendre el paper de la taula de símbols dins un compilador i saber-ne triar l'estructura més apropiada.
  • Conèixer quins són els tipus d'errors que es poden identificar en l'anàlisi d'un programa, com es detecten, com s'informa d'aquests errors i com un compilador se'n pot recuperar.
  • Ser capaç d'utilitzar eines de construcció d'analitzadors lèxics i sintàctics per a la construcció d'un compilador.

Amunt

L'assignatura s'estructura en sis mòduls:

Mòdul

Continguts

Descripció

1. Visió general

1. Llenguatges

2. Nocions bàsiques

3. Estructura d'un compilador

4. Construcció de compiladors

Es veurà una panoràmica de l'estructura general d'un compilador.

2. Anàlisi lèxica

1. Organització general

2. Construcció d'analitzadors lèxics

3. Especificació d'un analitzador lèxic

4. Tractament d'errors

5. El sistema d'entrada

6. Les taules de símbols

S'estudiarà la única part del compilador que interactua amb el fitxer font convertint els seus caràcters en una seqüència de símbols lèxics (tokens) i eliminant tot el que no és necessari pel seu anàlisi (comentaris, salts de línia, ...).

3. Anàlisi sintàctica

1. Nocions generals

2. Anàlisi sintàctica descendent

3. Anàlisi sintàctica ascendent

S'estudiarà la fase encarregada de verificar que els símbols lèxics del programa font arriben en l'ordre correcte i que es compleixen les especificacions de la gramàtica lliure de context que defineix el llenguatge font.

4. Anàlisi semàntica

1. Anàlisi semàntica

2. Generació de codi intermedi

S'estudiarà la verificació de la semàntica del programa font, la que és dependent del context, incorporant atributs i accions semàntiques a les produccions de la gramàtica.

5. Fases de síntesi

1. Generació de codi

2. Optimització de codi

S'estudiarà la generació de codi a partir del codi intermedi, així com tot allò a tenir en compte per tal de fer una traducció automàtica i la fase final d'optimització.

6. Llenguatges interpretats

1. Intèrprets

2. La màquina de pila abstracta

3. Construcció d'un intèrpret

Es presentarà un model concret d'arquitectura per a intèrprets basat en una memòria en forma de pila. S'estudiarà el procés de construcció d'un intèrpret basat en aquest model.

 

Amunt

Compiladors PDF

Amunt

Els mòduls didàctics constitueixen la part més important dels materials de l'assignatura. Els podeu descarregar en format PDF des de l'apartat Recursos de l'aula.

L'assignatura disposa d'un manual de referència per a les eines de construcció de compiladors utilitzades a l'assignatura, el Manual de JLex i CUP, que podeu trobar a l'aula virtual dins l'apartat de Recursos.

Disposeu d'una aula de Laboratori de Java de Compiladors on rebreu més informació sobre el programari de l'assignatura (entorn JDK per a l'execució de programes Java, JLex i CUP).

Amunt

A la UOC, l'avaluació generalment és virtual. S'estructura entorn de l'avaluació contínua, que inclou diferents activitats o reptes; l'avaluació final, que es porta a terme mitjançant proves o exàmens, i el treball final de la titulació.

Les activitats o proves d'avaluació poden ser escrites i/o audiovisuals, amb preguntes aleatòries, proves orals síncrones o asíncrones, etc., d'acord amb el que decideixi cada equip docent. Els treballs finals representen el tancament d'un procés formatiu que implica la realització d'un treball original i tutoritzat que té com a objectiu demostrar l'adquisició competencial feta al llarg del programa.

Per verificar la identitat de l'estudiant i l'autoria de les proves d'avaluació, la UOC es reserva la potestat d'aplicar diferents sistemes de reconeixement de la identitat i de detecció del plagi. Amb aquest objectiu, la UOC pot dur a terme enregistrament audiovisual o fer servir mètodes o tècniques de supervisió durant l'execució de qualsevol activitat acadèmica.

Així mateix, la UOC pot exigir a l'estudiant l'ús de dispositius electrònics (micròfons, càmeres o altres eines) o programari específic durant l'avaluació. És responsabilitat de l'estudiant assegurar que aquests dispositius funcionen correctament.

El procés d'avaluació es fonamenta en el treball personal de l'estudiant i pressuposa l'autenticitat de l'autoria i l'originalitat de les activitats acadèmiques. Al web sobre integritat acadèmica i plagi de la UOC hi ha més informació respecte d'aquesta qüestió.

La manca d'autenticitat en l'autoria o d'originalitat de les proves d'avaluació; la còpia o el plagi; la suplantació d'identitat; l'acceptació o l'obtenció de qualsevol activitat acadèmica a canvi d'una contraprestació o no; la col·laboració, l'encobriment o l'afavoriment de la còpia, o l'ús de material, programari o dispositius no autoritzats en el pla docent o l'enunciat de l'activitat acadèmica, inclosa la intel·ligència artificial i la traducció automàtica, entre altres, són conductes irregulars en l'avaluació que poden tenir conseqüències acadèmiques i disciplinàries greus.

Aquestes conductes irregulars poden comportar el suspens (D/0) en les activitats avaluables que es defineixin en el pla docent -incloses les proves finals- o en la qualificació final de l'assignatura, sigui perquè s'han utilitzat materials, programari o dispositius no autoritzats durant les proves (com l'ús d'intel·ligència artificial no permesa, xarxes socials o cercadors d'informació a internet), perquè s'han copiat fragments de text d'una font externa (internet, apunts, llibres, articles, treballs o proves d'altres estudiants, etc.) sense la citació corresponent, per la compravenda d'activitats acadèmiques, o perquè s'ha dut a terme qualsevol altra conducta irregular.

Així mateix, i d'acord amb la normativa acadèmica, les conductes irregulars en l'avaluació també poden donar lloc a la incoació d'un procediment disciplinari i a l'aplicació, si escau, de la sanció que correspongui, de conformitat amb el que estableix la normativa de convivència de la UOC.

En el marc del procés d'avaluació, la UOC es reserva la potestat de:

  • Sol·licitar a l'estudiant que acrediti la seva identitat segons el que estableix la normativa acadèmica.
  • Sol·licitar a l'estudiant que acrediti l'autoria del seu treball al llarg de tot el procés d'avaluació, tant en l'avaluació contínua com en l'avaluació final, per mitjà d'una entrevista oral síncrona, que pot ser objecte d'enregistrament audiovisual, o pels mitjans que estableixi la Universitat. Aquests mitjans tenen l'objectiu de verificar els coneixements i les competències que garanteixin la identitat de l'estudiant. Si no és possible garantir que l'estudiant és l'autor de la prova, aquesta pot ser qualificada amb una D, en el cas de l'avaluació contínua, o amb un suspens, en el cas de l'avaluació final.

Intel·ligència artificial en el marc de l'avaluació

La UOC reconeix el valor i el potencial de la intel·ligència artificial (IA) en l'àmbit educatiu, alhora que posa de manifest els riscos que comporta si no s'utilitza de manera ètica, crítica i responsable. En aquest sentit, en cada activitat d'avaluació s'informarà l'estudiantat sobre les eines i els recursos d'IA que es poden utilitzar i en quines condicions. Per la seva banda, l'estudiantat es compromet a seguir les indicacions de la UOC a l'hora de dur a terme les activitats d'avaluació i de citar les eines utilitzades i, concretament, a identificar els textos o les imatges generats per sistemes d'IA, els quals no podrà presentar com si fossin propis.

Amb relació a fer servir o no la IA per resoldre una activitat, l'enunciat de les activitats d'avaluació indica les limitacions en l'ús d'aquestes eines. Cal tenir en compte que fer-les servir de manera inadequada, com ara en activitats en què no estan permeses o no citar-les en les activitats en què sí que ho estan, es pot considerar una conducta irregular en l'avaluació. En cas de dubte, es recomana que, abans de lliurar l'activitat, es faci arribar una consulta al professorat col·laborador de l'aula.

Amunt

Pots superar l'assignatura per mitjà de dues vies:

  1. Seguint l'avaluació contínua (AC). Pots superar l'assignatura directament aprovant l'AC. En aquest cas, la nota final de l'assignatura es correspondrà amb la nota final de l'avaluació contínua.
  2. Fent un examen. La nota final es calcularà d'acord amb el següent:
    • Si no t'has presentat a l'avaluació contínua, la nota final serà la qualificació numèrica obtinguda a l'examen.
    • Si has seguit l'avaluació contínua i tens una nota diferent d'un No presentat, la qualificació final serà el càlcul més favorable entre la nota numèrica de l'examen i la ponderació de la nota de l'avaluació contínua amb la nota de l'examen, segons el que estableixi el pla docent. Per aplicar aquest càlcul, a l'examen cal obtenir una nota mínima de 4 (si és inferior, la nota final de l'assignatura serà la qualificació de l'examen).
    • Si no et presentes a l'examen, la qualificació final serà un No presentat.

 

Amunt