Emplois de compilateur - Quelle quantité d'éducation est nécessaire [fermé]

15

J'ai été motivé par la question de la construction du compilateur en tant que sujet et j'ai pensé que je poserais celle-ci.

J'ai entendu dire par quelques personnes qu'elles avaient une bonne "équipe de compilation" (ne me demandez pas où je l'ai entendue, je ne m'en souviens pas), ce qui m'a amené à me demander comment obtenir un emploi dans une telle équipe ?

Je sais qu'il y a des cours dans les programmes de premier cycle et autres, mais est-ce quelque chose qu'un diplôme d'études supérieures serait le minimum (comme une maîtrise au moins)?

Je commence ma maîtrise en informatique dans deux mois et l'école que je vais avoir deux classes de compilateur, cela suffirait-il pour obtenir un travail de développement de compilateur ou faudrait-il investir plus de temps?

Jetti
la source
2
La participation à un projet de compilateur open source (par exemple, llvm) serait un grand avantage.
SK-logic
Ditta @ SK-Logic J'écris actuellement un compilateur pour ma finale IB CS. Acquérir de l'expérience dans l'écriture de compilateurs est probablement le meilleur moyen ... comme pour tout.
1
Je voudrais souligner que l'un des plus grands noms des compilateurs et des runtimes n'a pas de diplôme. Anders Hejlsberg ... cerveau derrière Turbo Pascal, Delphi, C #, TypeScript
Matthew Whited

Réponses:

17

Eh bien, le développement d'un compilateur est ultra hardcore, ce qui signifie qu'il nécessite beaucoup de patience, de passion et de solides connaissances. Ne confondez pas patience, passion et connaissances solides avec n'importe quel type de diplôme. Nous avons vu plusieurs candidats titulaires d'une maîtrise qui ne pouvaient même pas reconnaître strlen()en quatre lignes de code C.

Assister définitivement à ces cours et acquérir des connaissances pratiques. Peut-être que vous n'aimerez même pas le développement du compilateur, mais l'expérience que vous acquérez vous aidera à obtenir un autre travail de développement très intéressant.

acéré
la source
Merci pour la réponse. Souhaitez-vous donner une chance à quelqu'un qui était autodidacte et n'avait pas de formation académique en CS?
Jetti
3
il suffit de vérifier le cours du MIT OCW
segfault
3
@Jetti: Je donnerais une chance à tous ceux qui ont apporté une contribution significative à un compilateur open-source au fil des ans, quels que soient leurs antécédents :)
Matthieu M.
@Jetti: Je le ferais certainement une fois qu'ils apporteront des preuves qu'ils ont de vraies connaissances. Par exemple, s'ils ont écrit des tests pour un compilateur optimisant le générateur de code, ils valent probablement plus qu'un diplômé universitaire moyen.
sharptooth
Cela devient encore plus intéressant lorsque le compilateur est écrit dans son propre langage.
ott--
5

La première étape est d'avoir une bonne formation en CS - potentiellement, mieux c'est, mais au moins d'avoir obtenu un baccalauréat spécialisé. Il y a en fait une justification à cela, en ce que les compilateurs (généralement, les traducteurs de langue) et les techniques associées (lexing, analyse) sont des bases bien étudiées de l'informatique.

Je crois qu'un développement substantiel de compilateurs industriels (y compris open source) atténuerait bien sûr le manque de diplômes universitaires - mais dépend en grande partie de la formation du candidat. Notez que le développement du compilateur couvrirait également les interprètes et les outils associés pour l'analyse.

Une compétence générale en génie logiciel est nécessaire. Une connaissance du domaine des applications nécessitant de bons compilateurs (par exemple, calcul scientifique, développement de jeux) ou une expérience de la programmation en langage assembleur au-delà d'un contexte général de programmation dans un langage de haut niveau est également un atout. Une connaissance de niveau expert du langage implémenté par le compilateur est également un plus.

Avertissement: je suis développeur de compilateur et j'ai participé à des entretiens avec des candidats.

grrussel
la source
5

De nos jours, des outils comme Flex , YACC et plusieurs outils similaires ont rendu la construction du compilateur beaucoup plus simple. Si vous voulez l'aborder comme un passe-temps car il vous fascine, alors ces outils vous aideront et vous pourrez construire un frontal de compilateur décent en un mois.

Dragon Book est l'un des livres préférés de tous les temps pour tous ceux qui veulent apprendre la construction du compilateur. Et au fur et à mesure que vous avancez, vous passez quelque temps à lire les codes du compilateur opensource .


la source
5

Si vous êtes sérieux au sujet d'une carrière dans les compilateurs, je crois que vous avez au moins besoin d'une éducation formelle en théorie du langage, en particulier la théorie des types, la sémantique formelle et la théorie de la calculabilité. Ces domaines seraient difficiles à apprendre en dehors d'un milieu universitaire. Pour la plupart, la construction du compilateur en soi est un sujet qu'un développeur intelligent peut apprendre par lui-même les bases. Cependant, si vous souhaitez travailler sur des compilateurs de pointe qui utilisent une analyse et une instrumentation sémantique étendues pour la sécurité et l'optimisation, vous auriez probablement besoin d'au moins une thèse de maîtrise dans ce domaine.

ThomasMcLeod
la source
1
Cela ressemble plus à un rôle de R&D qu'à un "rôle d'ingénierie produit". J'étais ingénieur produit sur armcc et LLVM (deux compilateurs C / C ++ de qualité production) et je n'ai jamais eu besoin de ces sujets, et je n'ai même pas vu de référence à eux pendant les 2 années que je travaillais dans ce domaine.
dune.rocks