Berufsberatung: Promotion in Theorie der Programmiersprachen [abgeschlossen]


16

Ich interessiere mich sehr für die Theorien der Programmiersprachen und werde in diesem Thema promovieren, aber ich möchte mehr über die Karriere nach der Graduiertenausbildung erfahren. außer Professor zu sein, aber welchen Beruf kann ich auch ausüben?


Was meinen Sie mit 'Theorien der Programmiersprachen'?
Kirk Broadhurst

4
Ein Zweig der Informatik, der sich mit dem Entwurf, der Implementierung, der Analyse, der Charakterisierung und der Klassifizierung von Programmiersprachen und ihren individuellen Merkmalen befasst.
user16854

@Kirk: Es ist ein sehr aktives Feld mit eigenen Konferenzen und Journalen (zusätzlich zu vielen Veröffentlichungen auf allgemeinen Konferenzen). PLDI ist ein gutes Beispiel. Es gibt sogar separate Ranglisten für CS-Schulen in PL.
Uri

Antworten:


17

Wenn Sie ein Profi in Programmiersprachen und in der Automatentheorie sind, sollten Sie als Compilerentwickler oder Spezialist für Backend-Optimierung über genügend Branchenmöglichkeiten verfügen.

Ständig kommen neuere Sprachen hinzu, und bestehende Sprachen werden verbessert oder auf neuere Plattformen ausgerichtet. Zum Beispiel: C ++ wechselt zu C ++ 0x, Hardware-Leute wechseln von Verilog zu SystemVerilog und ARM wird zunehmend in Consumer-Geräten verwendet. All dies bietet gute Möglichkeiten für Compiler-Entwickler.

Last but not least würden Compiler-Entwickler, die Multi-Core-Architekturen nutzen können, für die kommenden Jahre die Hauptrolle spielen.

Für Compiler Jobs suchen hier .


14

Michael Feathers schrieb einmal, dass die meisten Programmierer von Wissenschaftlern bis zu Ingenieuren stammten.

Wissenschaftler haben Spaß am Lernen und Verstehen, während Ingenieure gerne Dinge bauen und beobachten, wie sie funktionieren.

Auf der extremen Ingenieurseite gibt es Leute, die ständig neuen Code oder Hacks ausspucken, um die Dinge zum Laufen zu bringen. Sie neigen dazu, das große Ganze zu ignorieren. Die extremen Wissenschaftler hingegen werden Architektenastronauten mit ihren Köpfen in den großen, wolkigen Gerüsten und haben ihr ganzes Leben lang nie eine funktionierende Codezeile geliefert. Die besten Programmierer sind irgendwo in der Mitte.

Früher dachte ich, ich sei ein Programmierer, da ich es liebte, darüber zu lesen, und verbrachte Stunden damit. Ein paar Jobs später stellte ich fest, dass ich tatsächlich ein Problem beim Liefern habe, da ich immer nach einem besseren Weg oder "dem richtigen Weg" suche, Dinge zu tun. Es stellte sich heraus, dass ich zu sehr auf der Seite der Wissenschaftler bin, um effektiv zu sein, zumindest in einem "normalen" Entwicklerjob.

In jedem Fall glaube ich, dass Sie mit einer Vorliebe für das eine oder andere geboren wurden (ich habe in letzter Zeit viel über Persönlichkeitstypen gelesen, insbesondere über den Myers-Briggs-Typ-Indikator , und habe die Vermutung, dass dies mit dem S / N zusammenhängt Funktion, für diejenigen von Ihnen, die daran interessiert sind). Ich habe versucht, mich dazu zu zwingen, praktischer und "Macher" zu sein, aber ich werde einfach ausgebrannt.

Mein Standpunkt in Bezug auf die ursprüngliche Frage ist, dass Sie, wenn Sie den Doktorandenweg beschreiten, wahrscheinlich eher dazu neigen, das theoretische Zeug zu mögen als das "praktische Zeug bauen". Daran ist nichts auszusetzen, aber ich denke, eine solche Berufswahl wird Sie oft in eine wissenschaftliche / pädagogische Karriere einschließen. Sie können nicht erwarten, direkt von einer Promotion zu einem hochbezahlten Beraterjob überzugehen. Die Dinge, die Sie in der "realen Welt" lernen, unterscheiden sich erheblich von den Best Practices, die Sie aus Büchern gelernt haben.

Eine Alternative besteht natürlich darin, nach der Promotion ein eigenes Unternehmen zu gründen und eine Anwendung auf der Grundlage der fantastischen Theorien zu entwickeln (oder jemanden einzustellen, der sie entwickelt), die Sie bei der Recherche entdeckt haben.


6

Ich habe vor ein paar Jahren darüber nachgedacht, einen Doktortitel zu schreiben (derzeit arbeite ich an einem Master-Abschluss), und die Nummer eins, die mir von Doktoranden aus Wissenschaft und Industrie gesagt wurde, ist Folgendes:

Erhalten Sie einen Doktortitel nicht wegen des Geldes oder der Karriereaussichten, sondern nur, wenn Ihnen das, was Sie tun, wirklich Spaß macht und Sie sich jahrelang intensiv damit befassen möchten.

Fanantic23 deckte die Karriereseite der Dinge ziemlich gut ab, aber es gibt nicht so viele Jobs für einen Doktortitel. Sie müssen also sicherstellen, dass Sie die Zeit in das Erlernen aus anderen Gründen als dem Geld investieren möchten, bevor Sie in das Doktorandenprogramm eintreten .


2

Gehen Sie NICHT zu einer Promotion, wenn Sie einen akademischen Job anstreben oder wenn es Ihnen nichts ausmacht, viele Jahre zu verschwenden, nur um Ingenieur zu werden, so wie Sie es zuvor getan hätten.

Um Sie nicht zu entmutigen, aber die große Mehrheit der Promovierten in CS und speziell in Themen wie Programmiersprachen werden NICHT zu Professoren. Es gibt einfach nicht genug Forschungsjobs, um herumzukommen.

Forschungsjobs in der Industrie sind noch seltener und verfügbar als Forschungsjobs in der Wissenschaft, da sie besser bezahlt werden und keinen Lehrbedarf haben.

Stellen Sie sich das so vor: Wenn Sie sich die Anzahl der veröffentlichten wissenschaftlichen Artikel zu PL pro Jahr ansehen und einen Doktoranden pro Artikel annehmen, werden nicht alle dieser Personen Professoren sein.

Ich habe an der CMU in Software Engineering promoviert, wo PL einer der stärksten Bereiche ist (wir sind ein Top-3-Programm in PL). Nach meinem besten Wissen haben nur zwei von allen, die in PL promoviert haben, akademische Positionen inne. Alle anderen sind als Softwareingenieure beschäftigt. Ich kenne eine, die sich mit PL befasst, aber die anderen sind Generalisten.

Kontaktieren Sie mich privat, wenn ich Sie mit Leuten in Verbindung setzen soll, die PL-Recherchen durchgeführt haben und Ihnen mehr über die Erfahrung erzählen können.


1
Ich habe jahrelang in Physik promoviert und bin in einer Vielzahl von sehr interessanten Ingenieurberufen gelandet. Wahrscheinlich die gleiche Vielfalt an Ingenieurberufen, die ich sowieso bekommen hätte, aber das bedeutet nicht, dass es verschwendet wurde!
Martin Beckett

Wie kann ich mit Ihnen Kontakt aufnehmen?
tpA

1

Ich würde erwarten, dass Sie für eines der Forschungslabors arbeiten könnten, die sich mit Programmiersprachen befassen. Microsoft und IBM haben diese ebenso wie eine Reihe anderer Unternehmen. Ganz zu schweigen von einem Geschäft, das Sprachen entwickelt oder implementiert.


1

Sie sollten mit Ihren Alma-Mater-Professoren sprechen, bevor Sie mit der Promotion beginnen.

In der Regel arbeitet eine Promotion entweder in einem Forschungslabor oder wird Professor. Das Einkommen auf Lebenszeit liegt in der Regel erheblich unter einem MS-Abschluss.

Eine Theorie der Programmiersprache diss würde Sie wahrscheinlich in den Bereich des Schreibens von Compilern versetzen.

Auch diese Dinge sind nicht schwer durch Lesen herauszufinden - ich bezweifle, dass Sie für die Promotion bereit sind, wenn Sie diese Frage stellen.


Jemand mit einem CS-Doktortitel verdient normalerweise 10 bis 20.000 / Jahr mehr als jemand mit einem BS / MS. Bei Google, Microsoft, Adobe, Oracle usw. arbeiten viele Doktoranden als Softwareingenieure. Stellen Sie Ihre Fakten klar und verdienen Sie weniger.
Stackoverflowuser2010

@stackoverflowuser: Falsch . Das Einkommen auf Lebenszeit unterscheidet sich vom Jahresgehalt. Schlag es nach. Promotionen scheinen in der Regel in den Forschungslaborbereichen von Google, Microsoft et al.
Paul Nathan

1
@oosterwal: Nicht ohne weiteres, nicht mit trivialen Suchen. Dies ist jedoch eines der Dinge, die in akademischen Kreisen häufig vorkommen. Um die Auswirkungen zu berechnen, müssen Sie im Wesentlichen den Zinseszinssatz aus unterschiedlichen Anfangszeiten und unterschiedlichen Anfangsgehältern berechnen. Das habe ich vor ungefähr 2 Jahren gemacht: Grundsätzlich schlägt die Mathematik vor, in 2 Jahren einen Master zu machen und in die Industrie zu gehen. Eine Verzögerung des Startdatums um 3-5 (PhD) Jahre wirkt sich negativ auf den Compoundierungseffekt aus. Natürlich berücksichtigt dies nicht die hochkarätigen Leute, aber wenn man annimmt, dass man durchschnittlich ist, ist es besser, nicht zu promovieren.
Paul Nathan

1
@oosterwal - Hängt von der Schule ab, aber meistens zahlt ein Doktorand keine Studiengebühren und erhält ein Stipendium von der Schule. Die meisten Berechnungen für die Lebenserwartung basieren auf der Tatsache, dass sie möglicherweise noch sechs bis acht Schuljahre haben, in denen ein Bacholors-Absolvent in diesem Zeitraum arbeiten und Geld verdienen würde.
rjzii

2
@ stackoverflowuser2010 Du hast deinen Standpunkt klargestellt. Vergiss es.
Adam Lear

1

Ich war daran interessiert, dieselbe Karriere / denselben Kurs zu studieren (meine Abschlussarbeit befasst sich mit Compiler-Design und ich unterrichte auch eine Klasse zum Thema "Vergleich von Programmiersprachen", beide Konzepte beziehen sich auf "Theorie der Programmiersprachen").

Aber es war mehr als ein Hobby, dass eine "Pay-the-Bills" -Karriere.

Es gibt auch das Problem, dass die Theorie der Programmiersprachen viel Mathematik anwendet, aber es ist schwierig, sie auf praktische Weise anzuwenden.

Wenn Sie diesen Kurs bereits haben, wie haben Sie sich beworben?

Erstellen Sie beispielsweise Ihren eigenen Java-Compiler, machen Sie ihn schneller als das Original, fügen Sie einige Dinge hinzu und verkaufen Sie ihn. Beispiel: "HotSpot"

Oder so etwas wie "Java / C # läuft in einem Toaster" -Compiler und verkaufe es ;-)

Lehren verwandter Konzeptklassen in einem Kolleg / einer Universität, wie z. B. Automaten, Compiler-Design, Vergleich von Programmiersprachen usw.

Sie können auch ein eigenes kleines Startup, eine Vollzeit- oder eine Freizeit- / Teilzeitstelle erstellen, während Sie einen Standard-Programmiererjob haben, der die Rechnungen bezahlt (ausprobiert und nicht bestanden). : -s

Es gibt mehrere Unternehmen, die möglicherweise Softwareprodukte herstellen, für die diese speziellen Fähigkeiten erforderlich sind.

(Meistens Entwerfen einer Programmiersprache und des passenden Compilers für eine bestimmte virtuelle / physische Maschine, einen eigenen XML-Parser usw.).

Aber es scheint, dass die meisten von ihnen es vorziehen, einen generischen billigen Entwickler einzustellen, als einen Entwickler mit einer gewissen Spezialisierung ...


1

Eine Promotion in CS mit dem Schwerpunkt Theorie der Programmiersprachen kann Ihnen einen Job außerhalb der akademischen Welt einbringen, aber höchstwahrscheinlich immer noch im Bereich der Forschung. Microsoft (entweder über MS Research oder Microsoft), Google, Amazon, Ericsson, HP, IBM Research, Oracle wären mögliche Arbeitgeber.

Wenn Sie Ihre beruflichen Möglichkeiten außerhalb Ihrer zukünftigen Dissertation erweitern, wird Ph.D. Einstellungsgruppen werden Sie auch für die Tiefe Ihres Studiums in Betracht ziehen.

Und das nur im gewerblichen Bereich. Wenn Sie sich das DoE und seine vielen Labors (Laurence Livermole, Sandia usw.) oder das DoD oder militärische Auftragnehmer wie Raytheon, General Dynamics (mein Arbeitgeber) oder Lockheed Martin ansehen, gibt es Stellen für Wissenschaftler und Forscher. Die NSA würde Sie auch einstellen wollen.

Nicht-akademische Möglichkeiten für Menschen mit einem naturwissenschaftlichen Doktortitel sind weniger (viel weniger) als diejenigen, die einen BS- oder MS-Abschluss benötigen, aber sie sind immer noch reichlich, anständig vergütet und lohnend.

Viel Glück.


-2

Viele Jobs verfügbar:

C # /. NET bei Microsoft
Java bei Oracle
Perl6 (wird wohl nicht viel kosten)
ActionScript bei Adobe

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.