Compiler-Jobs - wie viel Bildung benötigt wird [geschlossen]

15

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?

Jetti
quelle
2
Die Teilnahme an einem Open Source Compiler-Projekt (zB llvm) wäre von großem Vorteil.
SK-logic
Ditta @ SK-Logic Ich schreibe gerade einen Compiler für mein IB CS-Finale. Erfahrung mit dem Schreiben von Compilern zu sammeln, ist wahrscheinlich der beste Weg.
1
Ich möchte darauf hinweisen, dass einer der größten Namen in Compilern und Runtimes keinen Abschluss hat. Anders Hejlsberg ... Gehirn hinter Turbo Pascal, Delphi, C #, TypeScript
Matthew Whited

Antworten:

17

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.

scharfer Zahn
quelle
Danke für die Antwort. Würden Sie jemandem eine Chance geben, der Autodidakt war und keinen akademischen CS-Hintergrund hatte?
Jetti
3
Schauen Sie sich
3
@Jetti: Ich würde jedem eine Chance geben, der im Laufe der Jahre bedeutende Beiträge für einen Open Source-Compiler geleistet hat, unabhängig von seinem Hintergrund :)
Matthieu M.
@ Jetti: Ich würde auf jeden Fall, wenn sie Beweise bringen, dass sie echtes Wissen haben. Wenn sie beispielsweise Tests für einen Codegenerator schreiben, der den Compiler optimiert, sind sie wahrscheinlich mehr wert als ein durchschnittlicher Universitätsabsolvent.
Scharfzahn
Noch interessanter wird es, wenn der Compiler in seiner eigenen Sprache geschrieben ist.
ott--
5

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.

grrussel
quelle
5

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
5

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.

ThomasMcLeod
quelle
1
Das klingt eher nach einer Rolle in Forschung und Entwicklung als nach einer Rolle in der Produktentwicklung. Ich war Produktingenieur für armcc und LLVM (zwei C / C ++ - Compiler in Produktionsqualität) und habe in den zwei Jahren, in denen ich in diesem Bereich tätig war, keines dieser Themen benötigt und auch keinen Hinweis darauf gefunden.
dune.rocks