Lavori del compilatore - Quanta istruzione è necessaria [chiusa]


15

Sono stato motivato dalla domanda del Compiler Construction As A Subject e ho pensato di fare questa domanda.

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 fa a trovare un lavoro in una squadra del genere ?

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

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


2
La partecipazione a un progetto di compilatore open source (ad esempio, llvm) sarebbe un grande vantaggio.
SK-logic,

Ditta @ SK-Logic Attualmente sto scrivendo un compilatore per la mia finale IB CS. Avere esperienza nella scrittura di compilatori è probabilmente il modo migliore ... come in ogni cosa.

1
Vorrei sottolineare che uno dei più grandi nomi di compilatori e runtime non ha una laurea. Anders Hejlsberg ... cervello dietro Turbo Pascal, Delfi, C #, TypeScript
Matthew Whited

Risposte:


17

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 master che non potevano nemmeno riconoscere strlen()in quattro righe di codice C.

Sicuramente frequentare quelle lezioni e acquisire conoscenze pratiche. Forse non ti piacerà nemmeno lo sviluppo del compilatore, ma l'esperienza acquisita ti aiuterà a ottenere qualche altro lavoro di sviluppo molto interessante.


Grazie per la risposta. Daresti la possibilità a qualcuno che è autodidatta e non ha un background accademico in CS?
Jetti,

3
basta controllare il corso del MIT OCW
segfault

3
@Jetti: darei la possibilità a chiunque abbia contribuito in modo significativo a un compilatore open source nel corso degli anni, qualunque sia il suo background :)
Matthieu M.

@Jetti: sicuramente porterebbero prove che hanno una vera conoscenza. Ad esempio, se hanno scritto test per un compilatore che ottimizza il generatore di codice, probabilmente valgono più di un laureato medio.
sharptooth,

Diventa ancora più interessante quando il compilatore è scritto nella sua lingua.
ott--

5

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

Credo che un sostanziale sviluppo di compilatori industriali (incluso l'open source) attenuerebbe ovviamente la mancanza di credenziali accademiche, ma dipende in gran parte dallo sfondo del candidato. Si noti che qui lo sviluppo del compilatore riguarderebbe anche interpreti e strumenti correlati per l'analisi.

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

Disclaimer: sono uno sviluppatore di compilatori e sono stato coinvolto in interviste a candidati.


5

Al giorno d'oggi, strumenti come Flex , YACC e diversi strumenti simili avevano reso la costruzione del compilatore molto più semplice. Se vuoi affrontarlo come un hobby poiché ti affascina, allora questi strumenti ti aiuteranno e sarai in grado di costruire un front-end di compilatore decente in un mese.

Dragon Book è uno dei libri preferiti di tutti i tempi per chiunque voglia autodidatta la costruzione del compilatore. E mentre vai avanti vai avanti a leggere i codici del compilatore opensource .


5

Se sei seriamente intenzionato a fare carriera nei compilatori, credo che tu abbia almeno bisogno di educazione formale alla teoria del linguaggio, in particolare alla teoria dei tipi, alla semantica formale e alla teoria della calcolabilità. Queste aree sarebbero difficili da imparare al di fuori di un ambiente accademico. Per lo più, la costruzione del compilatore di per sé è un argomento che uno sviluppatore intelligente può imparare da solo le basi. Tuttavia, se si desidera lavorare su compilatori all'avanguardia che utilizzano analisi semantiche estese e strumentazione per la sicurezza e l'ottimizzazione, probabilmente sarebbe necessaria almeno una tesi di master in questo settore.


1
Sembra più un ruolo di ricerca e sviluppo che un "ruolo di ingegneria di prodotto". Sono stato un ingegnere di prodotto su armcc e LLVM (due compilatori C / C ++ di qualità di produzione) e non ho mai avuto bisogno di nessuno di questi argomenti, né ho visto riferimenti ad essi nei 2 anni in cui ho lavorato in questo settore.
dune.rocks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.