Ich bin ein Student in meinem 3. Jahr eines Software Engineering Abschlusses. Ab diesem Jahr hat meine Universität einen neuen Kurs namens "Compiler Constructions" eingeführt, der Ihnen die Grundlagen der Theorie des Bauens eines Compilers vermittelt.
Was wäre der reale Vorteil für einen Software-Ingenieur, wenn er etwas über die Compiler-Konstruktion lernen würde?
Antworten:
Das Erlernen der Compilerkonstruktion hat eine praktische Seite. Es gab mehrere Fälle, in denen ich Parser erstellen musste, um eine app-spezifische Befehlssprache zu implementieren. Dadurch konnte ich flexible, skriptfähige Schnittstellen zur App erstellen.
Außerdem erhalten Sie einen besseren Einblick, warum einige Sprachen so gestaltet sind, wie sie sind, und warum keine Sprache perfekt ist.
Es ist ein harter Kurs, einer der härteren im Lehrplan. Ich habe den Fehler gemacht, es während einer Sommersitzung zu nehmen; Nehmen Sie niemals an einem Compilerkurs in einer Sommersitzung teil, Ihr Gehirn wird explodieren.
quelle
Oh, es ist gut. Nimm es, du wirst es nicht bereuen.
Sie erhalten Einblick in die Magie der Programmiersprachen, ihre vergleichenden Eigenschaften und die Umwandlung von Code auf hoher Ebene in seine ausführbare Form. Sie werden viele Sprachfunktionen besser verstehen und einen breiteren Überblick darüber haben, was möglich ist und wie diese Dinge getan werden. Sie werden alles nur mit anderen Augen sehen.
Es ist ratsam, Zeit an der Universität zu verbringen, um grundlegende Dinge über CS zu lernen. Konkrete Programmiersprachen, Tools und Bibliotheken kommen und gehen, aber die Grundlage bleibt.
Auch wenn Sie den Kurs überleben (vorausgesetzt, es wird ernst sein), können Sie sich selbst gratulieren, dass Sie die richtige Gehirnhälfte für die Programmierung haben. Wenn Sie ein praktisches Projekt mit dieser Theorie durchführen, erwähnen Sie es in Ihrem Lebenslauf, und Sie werden bei guten Arbeitgebern großes Interesse wecken.
quelle
Bestimmt!
Es ist möglicherweise kein Thema, das Sie täglich verwenden würden, wie beispielsweise eine Datenbankklasse. Wenn Sie Compiler verstehen, erhalten Sie eine hervorragende Grundlage.
Ein ähnliches Beispiel wäre eine Betriebssystemklasse. Sie sind vielleicht ein Programmierer und denken nicht darüber nach, wie ein Betriebssystem jeden Tag funktioniert, aber wenn Sie die Grundlagen dafür haben, wird dies Ihnen auf lange Sicht helfen.
quelle
Ja! Der Kurs vermittelt Ihnen ein viel tieferes Verständnis für das Parsen von Programmiersprachen, Datentypen und Funktionen und deren Übersetzung in Maschinencode für bestimmte CPUs.
Dies allein mag für den täglichen Gebrauch nicht sehr praktisch sein, gibt Ihnen jedoch das Vertrauen, dass Sie tatsächlich wissen, wie Dinge funktionieren . Dies ist sehr hilfreich (hier mit Erfahrung), wenn Sie eine Optimierung auf niedriger Ebene durchführen und diese wirklich bösen Fehler finden müssen, die alle anderen verblüfft haben.
quelle
Heutzutage wird viel über domänenspezifische Sprachen geredet. Und sie sind wirklich die ganze Begeisterung wert, ihr wahres Potenzial muss noch erforscht werden . Daher werden die Konstruktionsfähigkeiten von Compilern in Zukunft nicht nur wichtig, sondern auch unverzichtbar sein. Ich verbringe ungefähr 60% meiner Entwicklungszeit mit der Implementierung von eDSL-Compilern, auch wenn das aktuelle Problem überhaupt nicht direkt mit Compilern zusammenhängt.
quelle
Es lohnt sich, einen Kurs zu belegen, um zu verstehen, wie die Tools, die Sie während Ihrer gesamten Programmierkarriere verwenden werden (z. B. Compiler, Interpreter, Parser), aufgebaut sind und welche Einschränkungen bestehen.
Es lohnt sich auch, dies in einem akademischen Kontext zu tun, da dies die interessanten Grundlagen und nicht die vielen Komplexitäten der realen Welt aufdeckt, die im Umgang mit Legacy-Sprachen und -Architekturen, dh viel Komplexität, chaotisch und verstrickt ist. Es ist auch wahrscheinlicher, dass Sie an allen Aspekten eines Compilers arbeiten, wenn Sie einen ganzen für einen Kurs erstellen, als an einem in der Industrie.
quelle