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?
Réponses:
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.
la source
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.
la source
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
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.
la source