Ich war von der Frage Compiler Construction As A Subject motiviert und dachte, ich würde diese Frage stellen.
Ich habe von einigen Leuten gehört, dass sie ein gutes "Compiler-Team" haben (frage nicht, wo ich es gehört habe, ich kann mich nicht erinnern), was mich zu der Frage veranlasste, wie man einen Job in einem solchen Team bekommt ?
Ich weiß, es gibt Kurse in den Undergrad-Programmen und so weiter, aber ist das etwas, dass ein Abschluss das Minimum wäre (wie zumindest ein Master)?
Ich beginne meinen Master in Informatik in zwei Monaten und die Schule, die ich besuche, hat zwei Compiler-Klassen. Würde das ausreichen, um einen Job für die Compiler-Entwicklung zu bekommen, oder müsste mehr Zeit in sie investiert werden?
Antworten:
Die Compiler-Entwicklung ist extrem hardcore, was bedeutet, dass viel Geduld, Leidenschaft und fundiertes Wissen erforderlich sind. Verwechseln Sie Geduld, Leidenschaft und fundiertes Wissen nicht mit einem Abschluss. Wir haben mehrere Bewerber mit Master-Abschluss gesehen, die nicht einmal
strlen()
vier Zeilen C-Code erkennen konnten.Nehmen Sie unbedingt an diesen Kursen teil und erwerben Sie praktisches Wissen. Vielleicht mögen Sie die Compiler-Entwicklung nicht einmal, aber die gesammelten Erfahrungen helfen Ihnen dabei, einen anderen sehr interessanten Entwicklungsjob zu bekommen.
quelle
Der erste Schritt besteht darin, einen guten CS-Hintergrund zu haben - möglicherweise, je mehr desto besser, aber zumindest einen BSc Honours-Abschluss. Es gibt tatsächlich eine Rechtfertigung dafür, dass Compiler (im Allgemeinen Sprachübersetzer) und die damit verbundenen Techniken (Lexing, Parsing) gut untersuchte Grundlagen der Informatik sind.
Ich glaube, dass eine erhebliche industrielle (einschließlich Open Source) Compiler-Entwicklung natürlich den Mangel an akademischen Qualifikationen mindern würde - hängt jedoch weitgehend vom Hintergrund des Kandidaten ab. Beachten Sie, dass die Compiler-Entwicklung hier auch Interpreter und verwandte Tools zum Parsen umfasst.
Eine allgemeine Kompetenz im Software Engineering ist erforderlich. Domänenkenntnisse in Anwendungen, die gute Compiler erfordern (z. B. wissenschaftliche Berechnungen, Spieleentwicklung) oder Erfahrung in der Assembler-Programmierung über einen allgemeinen Programmierhintergrund in einer höheren Programmiersprache hinaus, sind ebenfalls von Vorteil. Expertenwissen über die vom Compiler implementierte Sprache ist ebenfalls von Vorteil.
Haftungsausschluss: Ich bin ein Compiler-Entwickler und war an der Befragung von Kandidaten beteiligt.
quelle
Heutzutage hatten Tools wie Flex , YACC und einige ähnliche Tools die Compilerkonstruktion viel einfacher gemacht. Wenn Sie es wie ein Hobby angehen möchten, weil es Sie fasziniert, dann helfen Ihnen diese Tools und Sie können in einem Monat ein anständiges Compiler-Frontend erstellen.
Dragon Book ist eines der beliebtesten Bücher aller Zeiten für alle, die sich die Compilerkonstruktion selbst beibringen möchten. Und während Sie fortfahren, verbringen Sie einige Zeit damit, die OpenSource- Compiler- Codes zu lesen .
quelle
Wenn Sie es ernst meinen mit einer Karriere als Compiler, dann brauchen Sie meiner Meinung nach zumindest eine formale Ausbildung in Sprachtheorie, insbesondere in Typentheorie, formaler Semantik und Berechenbarkeitstheorie. Diese Bereiche sind außerhalb des akademischen Umfelds nur schwer zu erlernen. Zum größten Teil ist die Compilerkonstruktion per se ein Thema, mit dem ein intelligenter Entwickler die Grundlagen selbstständig erlernen kann. Wenn Sie jedoch an hochmodernen Compilern arbeiten möchten, die umfangreiche semantische Analysen und Instrumente für Sicherheit und Optimierung verwenden, benötigen Sie wahrscheinlich mindestens eine Masterarbeit in diesem Bereich.
quelle