回答:
プログラミング言語とオートマトン理論のプロなら、コンパイラ開発者またはバックエンド最適化のスペシャリストとして十分な業界の機会が必要です。
新しい言語は常に登場しており、既存の言語は改善されているか、新しいプラットフォームをターゲットにしています。たとえば、C ++はC ++ 0xに移行しており、ハードウェア担当者はVerilogからSystemVerilogに移行しており、ARMはコンシューマデバイスでますます使用されています。これらはすべて、コンパイラ開発者にとって良い機会です。
最後になりましたが、マルチコアアーキテクチャを利用できるコンパイラ開発者は、今後何年もの間、支配権を握ります。
コンパイラジョブについては、こちらをご覧ください。
マイケルフェザーズはかつて、プログラミングに携わっているほとんどの人が科学者からエンジニアまでの規模に属していることを発見したと書いています。
科学者は学習と理解から力を得ますが、エンジニアは物を作り、それが動くのを見るのが好きです。
極端なエンジニアの側では、物事を進めるためだけに、人々は常に新しいコード、つまりハッキングを吐き出します。彼らは全体像を無視する傾向があります。一方、極端な科学者は、大きな雲の多いフレームワークに頭を抱えた建築家の宇宙飛行士になり、一生コードの実用的なラインを提供したことがありません。最高のプログラマーは中間のどこかにいます。
私はそれについて読むのが好きだったので、私はプログラマーだと思っていましたが、それに何時間も費やしていました。いくつかの仕事の後、私はいつもより良い方法、または物事を行うための「正しい方法」を探しているので、実際に配達に問題があることに気付きました。少なくとも「通常の」開発者の仕事では、私は科学者側ではあまり効果的ではないことがわかりました。
いずれにせよ、あなたはどちらか一方を好みながら生まれていると思います(最近パーソナリティのタイプ、特にMyers-Briggs Type Indicatorについて多くのことを読んでおり、これはS / Nに関連しているかもしれないと思います機能、それに興味のある人のために)。私は自分自身をより実用的で「実行者」にしようと試みましたが、ただ燃え尽きてしまいます。
元の質問に対する私のポイントは、博士課程の道を歩けば、おそらく「実用的なものを構築する」ものよりも理論的なものを好む傾向があるということです。それについて何も問題はありませんが、そのようなキャリアの選択は、多くの場合、科学的/教育的キャリアにあなたを閉じ込めることになると思います。あなたは博士号から高額のコンサルタントの仕事に直接行くことができると期待することはできません。「現実の世界」で解決することを学ぶことは、本から学ぶベストプラクティスとはかなり異なります。
もちろん、博士号取得後にビジネスを開始し、研究中に発見した素晴らしい理論に基づいてアプリケーションを開発(または開発者を雇う)することもできます。
私は数年前から博士号を取得することを考えていました(現在は修士論文の修士号を取得中)。学界および産業界の博士号保有者から言われた一番のことは次のとおりです。
お金やキャリアの見通しのために博士号を取得しないでください、あなたが本当にやっていることを本当に楽しんでいて、それを深く研究するのに何年も費やしたい場合にのみ取得してください。
Fanantic23は仕事のキャリア面をかなりよくカバーしていましたが、博士号を取得するための仕事はそれほど多くないため、博士号プログラムに参加する前にお金以外の理由で何かを学ぶために時間を費やすことを確認する必要があります。
学術的な仕事に就くことを期待している場合、またはちょうどそれ以前と同じようにエンジニアになるだけで何年も無駄にしたくない場合は、博士課程に行かないでください。
がっかりすることはありませんが、CS、特にプログラミング言語のようなトピックの博士号を持つ人々の大部分は、教授になることはありません。単に十分な研究の仕事がありません。
産業界の研究の仕事は、学費の研究の仕事よりも一般的でなく、利用可能です。
このように考えてみてください。毎年発行されるPL科学論文の数を見て、論文ごとに1人の博士課程の学生を想定すると、これらの人々のすべてが教授になるわけではありません。
PLは最強の分野の1つであるCMUでソフトウェアエンジニアリングの博士号を取得しました(私たちはPLのトップ3プログラムです)。私の知る限り、PLの博士号を取得した全員から、学位を得たのは2人だけでした。他のすべての人は、ソフトウェアエンジニアとして雇用されています。PL関連のもので動作するものを知っていますが、その他はジェネラリストです。
PLの研究を行った人々と連絡を取りたい場合は、個人的に私に連絡してください。
博士号取得に着手する前に、母校の教授に相談してください。
通常、博士号は研究室で働くか、教授になります。生涯所得は通常、MSの学位を大幅に下回っています。
プログラミング言語dissの理論は、おそらくコンパイラを書く分野にあなたを置くでしょう。
また、これらのことを読むことで見つけるのは難しいことではありません。この質問をしているのであれば、博士号を取得する準備ができていることを疑います。
私は同じキャリア/コースの研究に興味がありました(私の卒業論文はコンパイラ設計に関連し、「プログラミング言語の比較」についてのクラスも教えています。両方の概念は「プログラミング言語理論」に関連しています)。
しかし、それは「請求書を支払う」キャリアが趣味としてでした。
また、プログラミング言語理論では、多くの数学を適用するという問題もありますが、実際的な方法で適用するのは困難です。
すでにそのコースを受講している場合、どのように申請しますか?
たとえば、独自のJavaコンパイラを作成し、オリジナルよりも高速にして、いくつか追加して販売します。例:「HotSpot」
または、「トースターで実行されているJava / C#」コンパイラのようなものを販売します;-)
オートマトン、コンパイラ設計、プログラミング言語の比較などのような、大学/大学で関連する概念クラスを教える。
また、標準的なプログラマーの仕事をしながら、小規模なスタートアップ、フルタイム、またはフリー/パートタイムを自分で作成して、請求書を支払う(試して失敗する)こともできます。:-s
特定のスキルを実際に必要とするソフトウェア製品を製造する企業がいくつかあります。
(ほとんどの場合、特定の仮想/物理マシン、独自のXMLパーサーなどのために、プログラミング言語と一致するコンパイラを設計します)。
しかし、彼らのほとんどは、何らかの専門性を持つ開発者よりも、一般的な安価な開発者を雇うことを好むようです...
プログラミング言語の理論に焦点を当てたCSの博士号は、学問の枠を超えて仕事を見つけることができますが、それでもほとんどの場合、研究の領域内にいます。Microsoft(MS ResearchまたはMicrosoftを介して)、Google、Amazon、Ericsson、HP、IBM Research、Oracleが雇用主になる可能性があります。
将来の論文以外で仕事の機会を広げる場合、博士号 採用グループは、あなたの研究の深さについても考慮します。
そして、それは商業部門のみです。DoEとその多くのラボ(Laurence Livermole、Sandiaなど)、またはDoDまたはRaytheon、General Dynamics(私の雇用主)、Lockheed Martinなどの軍事請負業者を見ると、科学者や研究者が利用できるポジションがあります。NSAもあなたを雇いたいと思うでしょう。
理学博士号を取得した人の学業以外の機会は、理学士号または修士号を必要とする人よりも少ない(はるかに少ない)が、それでもまだ十分に報酬があり、やりがいがある。
幸運を。