Monday

Costruzione del compilatore: tre corsi di esempio

Costruzione del compilatore: tre corsi di esempio
L'ampliamento dell'istruzione informatica ha messo in discussione i ruoli di molti corsi di base tradizionali. Il Curriculum 2001 di ACM definisce un corso chiamato `` Programming Language Translation '' (CS240s):

Introduce la teoria e la pratica della traduzione del linguaggio di programmazione. Gli argomenti includono progettazione del compilatore, analisi lessicale, analisi, tabelle dei simboli, dichiarazione e gestione dello storage, generazione del codice e tecniche di ottimizzazione.

Sfortunatamente, è impossibile coprire tutto questo materiale, in profondità, in un unico corso. Un compilatore completo, specialmente uno codificato a mano, è un ampio programma per studenti a livello universitario e di primo anno. Inoltre, quel programma ha tre compiti principali (analisi, trasformazione e allocazione delle risorse) con caratteristiche molto diverse. Il risultato è che ciò che gli studenti portano via con loro è il ricordo delle maratone di codifica a tarda notte e un miscuglio di tecniche per risolvere problemi molto specifici posti da un particolare linguaggio sorgente e una macchina bersaglio.

Se vogliamo continuare a offrire un corso in questo settore, abbiamo bisogno di una strategia praticabile che ci consenta di prendere decisioni coerenti su punto di vista, profondità di copertura e tattiche dettagliate che portino a una visione coerente dell'argomento. La progettazione del corso deve tenere conto degli obiettivi generali del curriculum e dei prerequisiti, fornendo i ponti necessari tra il vecchio e il nuovo materiale. Il corso di compilatore nel curriculum di oggi: tre strategie, presentato al SIGCSE06, descrive i seguenti approcci di successo:


  • Progetto software: Enfatizzare i modelli di progettazione, il lavoro di squadra e la metodologia di programmazione costruendo un compilatore per soddisfare le specifiche assegnate.
  • Applicazione della teoria: enfatizzare il ruolo della teoria per abilitare l'automazione dei compiti del compilatore e illustrare i limiti di tale teoria.
  • Supporto per comunicare con un computer: enfatizzare l'ampia applicabilità della tecnologia del compilatore per implementare le lingue per scopi speciali.

Ogni strategia fornisce al docente una motivazione per prendere decisioni sulla selezione del materiale da coprire, i compiti da dare e gli strumenti da usare. Ecco una sintesi delle possibili scelte discusse nel documento:

StrategiaProgettoTeoriaComunicazione
ObiettiviApplica il software
tecniche di ingegneria
Collegare la teoria alla praticaImpara a costruire
generatori specifici del dominio
MaterialeScomposizione del compilatore
Riutilizzo di soluzioni
Metodologia Agile
Applicazioni della lingua formale
Applicazioni grammaticali degli attributi
Applicazioni di automi dell'albero
Analisi del linguaggio
Rappresentazione astratta
Uso dello strumento
AssegnazioniProgetto del compilatoreStrumenti basati sulla teoriaGeneratori di applicazioni
UtensiliScanner / generatore di parser
Modelli di progettazione
Librerie di classi
Scanner / generatore di parserToolkit del compilatore

Va sottolineato che si tratta di esempi che sono stati trovati per funzionare nella pratica. Ogni link sulla barra di navigazione a sinistra porta al materiale di un corso insegnato presso l'Università del Colorado utilizzando la strategia indicata. La seguente meta-informazione è stata aggiunta alla home page per ciascuno di questi corsi:

  • Focus: qual è il punto di vista preso dal corso?
  • Risultati: quali competenze dovrebbero acquisire gli studenti dal corso?
  • Concetti: quali sono i principali punti da comunicare?
  • Compiti: cosa contribuirà a cementare i concetti per gli studenti?
  • Strumenti: quale infrastruttura di supporto viene utilizzata?

Il punto importante, tuttavia, è che il professore dovrebbe fare le scelte in base agli obiettivi di apprendimento ed essere in grado di spiegare agli studenti perché queste scelte sono state fatte. Senza una tale logica, gli studenti che credono di non scrivere mai un compilatore non hanno un quadro chiaro del perché dovrebbero studiare questo materiale.


No comments:

Post a Comment