Qual è il vantaggio di conoscere e comprendere la costruzione del compilatore?

9

Sono uno studente universitario nel mio terzo anno di laurea in Ingegneria del software. Da quest'anno, la mia università ha introdotto un nuovo corso chiamato "Compiler Constructions", che ti insegna le basi della teoria della costruzione di un compilatore.

Quale sarebbe il vero vantaggio del mondo per un ingegnere del software di conoscere la costruzione del compilatore?

    
posta Nipuna 26.01.2011 - 14:07
fonte

6 risposte

12

C'è un lato pratico nell'apprendimento della costruzione del compilatore. Ci sono state diverse occasioni in cui ho avuto bisogno di creare parser per implementare un linguaggio di comando specifico per app. Mi ha permesso di creare interfacce flessibili e programmabili per l'app.

Fornisce inoltre una maggiore comprensione del motivo per cui alcune lingue sono progettate come sono e perché nessuna lingua è perfetta.

È un corso difficile, uno dei più difficili nel curriculum. Ho fatto l'errore di prenderlo durante una sessione estiva; mai prendi un corso di compilatore in una sessione estiva, il tuo cervello esploderà.

    
risposta data 26.01.2011 - 15:55
fonte
20

Oh, è buono. Prendilo, non te ne pentirai.

Scopri la magia dei linguaggi di programmazione, le loro caratteristiche comparative, la trasformazione del codice di alto livello nella sua forma eseguibile. Comprenderete meglio molte caratteristiche linguistiche, avrete una visione più ampia di ciò che è possibile e di come sono fatte queste cose. Vedrai tutto con occhi diversi.

È saggio trascorrere del tempo all'università per apprendere le cose fondamentali di CS. Linguaggi di programmazione concreti, strumenti e librerie tutti vanno e vengono, ma la base rimane.

Inoltre, se sopravvivi al corso (a patto che sia serio) potresti congratularti con te stesso per avere il cervello giusto per la programmazione. Fai un progetto pratico fatto con questa teoria, menzionalo nel tuo curriculum e aumenterai molto l'interesse con i buoni datori di lavoro.

    
risposta data 26.01.2011 - 14:13
fonte
8

Sicuramente!

Potrebbe non essere un argomento che useresti quotidianamente come una classe di database, ad esempio, capire i compilatori ti darà una grande base.

Un esempio simile potrebbe essere una classe dei sistemi operativi. Potresti essere un programmatore e non pensare a come funziona un sistema operativo ogni giorno, ma avere il fondamento in esso ti aiuterà a lungo termine.

    
risposta data 26.01.2011 - 14:20
fonte
6

Sì! Il corso fornirà una comprensione molto più approfondita sull'analisi del linguaggio di programmazione, dei tipi di dati e delle funzioni e su come tradurlo in codice macchina per CPU specifiche: s.

Questo, di per sé, potrebbe non essere di molto pratico uso quotidiano, ma ti garantirà la certezza che sai davvero come funziona la roba . Questo è molto utile (parlando con esperienza qui) quando devi fare un'ottimizzazione a basso livello e trovare quei bug davvero sgradevoli, che hanno messo tutti a posto.

    
risposta data 26.01.2011 - 14:16
fonte
4

C'è un sacco di buzz su lingue specifiche del dominio oggi. E vale davvero la pena, il loro vero potenziale deve ancora essere esplorato . Quindi, le abilità di costruzione dei compilatori diventeranno non solo importanti ma essenziali in futuro. Trascorro circa il 60% dei miei tempi di sviluppo implementando i compilatori eDSL, anche se il problema attuale non è affatto correlato ai compilatori.

    
risposta data 26.01.2011 - 14:17
fonte
1

Vale la pena seguire un corso per capire come verranno costruiti gli strumenti che utilizzerai per l'intera carriera di programmazione (ad esempio compilatori, interpreti, parser) e quali sono i limiti.

Vale anche la pena farlo in un contesto accademico, in quanto espone i fondamentali interessanti e non le molte complessità del mondo reale, che è caotico e impantanato nel trattare con linguaggi e architetture legacy, cioè molta complessità. È anche più probabile che tu possa lavorare su tutti gli aspetti di un compilatore nella costruzione di un intero per un corso, piuttosto che lavorare su uno nell'industria.

    
risposta data 26.01.2011 - 19:46
fonte

Leggi altre domande sui tag