Lavori del compilatore - Quanta istruzione è necessaria [chiusa]

14

Ero motivato dalla domanda Costruire come soggetto Vorrei chiedere questo.

Ho sentito da alcune persone che hanno un buon "team di compilatori" (non chiedere dove l'ho sentito, non ricordo), quindi questo mi ha portato a chiedermi come si ottiene un lavoro una squadra simile?

So che ci sono lezioni nei programmi Undergrad e simili, ma è qualcosa che una laurea sarebbe il minimo (ad esempio un Master almeno)?

Sto iniziando i miei Master in Informatica in due mesi e la scuola che sto per frequentare ha due classi di compilatori, sarebbe sufficiente per ottenere un lavoro nello sviluppo di compilatori o più tempo per investirli?

    
posta Jetti 26.01.2011 - 15:26
fonte

4 risposte

16

Bene, lo sviluppo del compilatore è ultra hardcore, il che significa che richiede molta pazienza, passione e solida conoscenza. Non confondere la pazienza, la passione e la solida conoscenza con qualsiasi tipo di laurea. Abbiamo visto diversi candidati con un diploma di laurea che non sono nemmeno in grado di riconoscere strlen() in quattro righe di codice C.

Partecipa sicuramente a quelle lezioni e acquisisci conoscenze pratiche. Forse non ti piacerà nemmeno lo sviluppo del compilatore, ma l'esperienza acquisita ti aiuterà ad ottenere un altro lavoro di sviluppo molto interessante.

    
risposta data 26.01.2011 - 16:07
fonte
5

Il primo passo è avere un buon background di CS - potenzialmente, più è e meglio, ma almeno aver completato un diploma di laurea con lode. In realtà c'è qualche giustificazione per questo, in quanto i compilatori (in genere, i traduttori di lingue) e le tecniche associate (lexing, analisi) sono ben studiati i fondamenti dell'informatica.

Credo che uno sviluppo industriale sostanziale (incluso l'open source) del compilatore ovvierebbe naturalmente alla mancanza di credenziali accademiche, ma dipende in gran parte dallo sfondo del candidato. Nota che lo sviluppo del compilatore qui riguarderà anche gli interpreti e gli strumenti correlati per l'analisi.

È necessaria una competenza generale nell'ingegneria del software. La conoscenza del dominio delle applicazioni che richiedono buoni compilatori (ad es. Calcolo scientifico, sviluppo del gioco) o esperienza di programmazione del linguaggio assembly al di sopra e al di là di un background generale di programmazione in un linguaggio di alto livello è anche un vantaggio. La conoscenza a livello di esperti della lingua implementata dal compilatore è anche un vantaggio.

Dichiarazione di non responsabilità: sono uno sviluppatore di compilatori e sono stato coinvolto nell'intervistare candidati.

    
risposta data 26.01.2011 - 19:36
fonte
5

Ora-a-giorni, strumenti come Flex , YACC e molti strumenti simili hanno reso la costruzione del compilatore molto più semplice. Se vuoi avvicinarti come un hobby visto che ti affascina, questi strumenti ti aiuteranno e saresti in grado di creare un frontend discreto in un mese.

Dragon Book è uno dei libri preferiti di tutti i tempi per chi vuole autodidatta la costruzione del compilatore . E mentre ti sposti vai avanti spendendo a volte leggere i codici del compilatore di opensource

.

    
risposta data 26.01.2011 - 19:57
fonte
4

Se sei seriamente interessato a una carriera nei compilatori, credo che tu abbia almeno bisogno di educazione formale nella teoria del linguaggio, in particolare teoria dei tipi, semantica formale e teoria della computabilità. Queste aree sarebbero difficili da imparare al di fuori di un contesto accademico. Per la maggior parte, la compilazione di compilatori di per sé è un argomento in cui uno sviluppatore intelligente può apprendere le nozioni di base da solo. Tuttavia, se vuoi lavorare su compilatori all'avanguardia che utilizzano un'analisi semantica estesa e una strumentazione per la sicurezza e l'ottimizzazione, probabilmente avrai bisogno di almeno una tesi di master in quest'area.

    
risposta data 26.01.2011 - 20:25
fonte

Leggi altre domande sui tag