职业建议:编程语言理论博士学位[关闭]


16

我对编程语言的理论非常感兴趣,并打算在该主题上申请博士学位,但我想对研究生教育后的职业有更多了解。除了当教授,我还能获得什么职业?


您所说的“编程语言理论”是什么意思?
柯克·布罗德赫斯特

4
计算机科学的一个分支,涉及编程语言及其各个功能的设计,实现,分析,表征和分类。
user16854 2011年

@Kirk:这是一个非常活跃的领域,拥有自己的会议和期刊(除了大会上的许多出版物)。PLDI是一个很好的例子。在PL,甚至还有CS学校的单独排名。
乌里(Uri)

Answers:


17

如果您是编程语言和自动机理论的专家,那么作为编译器开发人员或后端优化专家,您应该有足够的行业机会。

新型语言一直在涌现,现有语言正在得到改进或以新型平台为目标。例如,C ++正在迁移到C ++ 0x,硬件专家正在从Verilog迁移到SystemVerilog,而ARM越来越多地用于消费类设备中。所有这些都为编译器开发人员提供了很好的机会。

最后但并非最不重要的一点是,可以利用多核体系结构的编译器开发人员将在未来数年占据主导地位。

对于编译器作业,请参见此处


14

迈克尔·费瑟斯(Michael Feathers)曾经写道,他发现从事编程的大多数人都从科学家到工程师不等。

科学家从学习和理解中受益匪浅,而工程师则喜欢建造东西并观看它的运转。

在极端的工程师端,您会不断有人发布新代码或黑客程序,以使事情顺利进行。他们倾向于无视大局。另一方面,极端的科学家则变成了脑袋大笨拙的框架中的宇航员,而且终生都没有提供过一条工作代码。最好的程序员在中间。

我曾经以为自己是一名程序员,因为我喜欢阅读它,并花了数小时在上面。几份工作之后,我意识到我实际上在交付时遇到了问题,因为我一直在寻找更好的方法或做事的“正确方法”。事实证明,至少在“正常”开发人员工作中,我在科学家方面过于有效。

无论哪种方式,我都认为您天生就偏爱另一种(最近我一直在阅读很多有关性格类型的信息,尤其是Myers-Briggs Type Indicator,并且有一种直觉,认为这可能与S / N有关功能,对于那些对此感兴趣的人)。我试图强迫自己变得更实际,更像个“行者”,但我只是精疲力尽。

我对原始问题的观点是,如果您走博士学位之路,您可能更喜欢理论性的东西,而不是“构建实用性”的东西。没问题,但是我认为这样的职业选择通常会使您陷入科学/教育生涯。您不能指望能够从博士学位直接转为高薪顾问工作。您在“现实世界”中学习到的东西与从书本中学到的最佳实践相差很大。

当然,另一种选择是在攻读博士学位后开始自己的业务,并根据您在研究过程中发现的奇妙理论开发(或雇用某人来开发)应用程序。


6

我一直在考虑做博士学位已有两年了(目前正在攻读硕士学位论文),学术界和工业界的博士学位持有者告诉我的第一件事是:

不要因为金钱或职业前景而获得博士学位,只有在您真正享受自己的工作并且想花几年的时间来深入研究它的时候才能获得博士学位。

Fanantic23很好地涵盖了职业方面的知识,但博士学位的工作并不多,因此您需要确保在进入博士学位课程之前,除了金钱以外,还需要花时间在学习某些东西上。


2

如果您指望获得一份学术工作,或者如果您不介意浪费很多年只是为了像以前那样成为工程师,那就不要去读博士学位。

并不是为了劝阻您,而是让绝大多数拥有CS博士学位的人,尤其是像编程语言这样的话题的人,最终都不会成为教授。根本没有足够的研究工作去做。

工业界的研究工作比学术界的研究工作更不常见和可用,因为它们的报酬更高并且没有教学要求。

这样考虑:如果您查看每年发表的PL科学论文的数量,并假设每篇论文有一名博士生,那么并不是所有这些人都将成为教授。

我在CMU取得了软件工程博士学位,在PL中PL是最强的领域之一(我们是PL中排名前三的程序)。据我所知,在PL拥有博士学位的每个人中,只有两个人最终获得了学术职位。其他人都是软件工程师。我知道一个可以处理PL相关内容,但是其他人是通才。

如果您想让我与进行PL研究的人保持联系,他们可以为您提供更多体验,请与我私下联系。


1
我花了数年的时间获得物理学博士学位,最终从事了各种各样非常有趣的“工程师”工作。无论如何,我可能获得的工程工作可能都是相同的,但这并不意味着它就浪费了!
马丁·贝克特

我该如何联系您?
tpA

1

我希望您可以为使用编程语言的研究实验室之一工作,Microsoft和IBM与其他许多公司一样拥有它们。更不用说任何开发或实施语言的商店。


1

在开始攻读博士学位之前,您应该与母校教授交谈。

通常,博士学位要么在研究实验室工作,要么成为教授。终身收入通常大大低于MS学位。

编程语言Diss的理论可能会让您进入编写编译器的领域。

此外,通过阅读并不难发现这些问题-如果您提出这个问题,我表示怀疑您已准备好博士学位。


具有CS博士学位的人通常比拥有BS / MS的人年收入10K-20K。在Google,Microsoft,Adobe,Oracle等公司,有许多博士学位担任软件工程师。
stackoverflowuser2010

@stackoverflowuser:错误终身收入与年薪不同。查一下 博士似乎通常在Google,Microsoft等人的研究实验室领域工作。
保罗·内森

1
@oosterwal:不是随便的,不是琐碎的搜索。不过,这是学术界普遍抛出的事情之一。本质上,您要计算效果的方法是从不同的开始时间和不同的开始薪水来计算复合薪水“利息”。我大约在2年前就这样做了:基本上,数学表明要在2年内获得硕士学位,然后进入行业。将开始日期延迟3-5(PhD)年会削弱复合效果。当然,这并没有考虑到顶尖人才,但是如果人们假设一个人是中等水平的话,那么最好不要博士学位。
保罗·内森

1
@oosterwal-取决于学校,但是在大多数情况下,博士生不会支付学费,而是会从学校获得津贴。大部分终身收入的计算是基于这样的事实,即他们可能还有六到八年的学制,在那段时间内,作为Bacholors学位的持有者将在这里工作并赚钱。
rjzii

2
@ stackoverflowuser2010您已经指出了自己的意思。放手吧。
亚当李尔

1

我对同一职业/课程的研究很感兴趣(我的毕业论文与Compiler-Design有关,并且我还开设了一门关于“程序设计语言比较”的课程,这两个概念都与“程序设计语言理论”相关)。

但是,“付账单”职业更是一种业余爱好。

还有一个问题是,编程语言理论应用了大量数学,但是很难以实用的方式应用。

如果您已经学过这门课程,该如何申请?

例如,制作您自己的Java编译器,使其比原始Java编译器更快,添加一些东西,然后出售。示例:“ HotSpot”

或者,类似“在烤面包机中运行的Java / C#”编译器并出售它;-)

在大学/大学中教授相关的概念课程,例如自动机,编译器设计,编程语言比较等等。

您还可以创建自己的小型启动,全职或业余/兼职,同时拥有一名标准的程序员工作,以支付账单(尝试过并失败)。:-s

有几家公司可能会生产实际上需要特定技能的软件产品。

(通常,针对特定的虚拟/物理机器,自己的XML解析器等,设计编程语言和匹配的编译器)。

但是,似乎大多数人宁愿雇用通用廉价开发商,而不是具有某些专业知识的开发商。


1

专注于编程语言理论的CS博士学位可以为您带来学术界以外的工作,但很可能仍属于研究领域。微软(通过MS Research或Microsoft),谷歌,亚马逊,爱立信,惠普,IBM Research,甲骨文可能是雇主。

如果您在未来的论文之外扩展了工作机会,那么您将获得博士学位。招聘团队还将考虑您的学习深度。

那只是在商业领域。如果您查看DoE及其众多实验室(Laurence Livermole,Sandia等)或DoD或雷神公司,通用动力公司(我的雇主)或洛克希德·马丁公司等军事承包商,这里有适合科学家和研究人员的职位。NSA也想雇用您。

拥有理学博士学位的人的非学术机会比需要BS或MS学位的人少(少得多),但是他们仍然很多,获得丰厚的报酬和回报。

祝好运。


-2

可用的工作很多:


Oracle
Perl6的Microsoft Java的C#/。NET (我认为薪水不高)
Adobe的ActionScript

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.