我一直对编写和设计编程语言很感兴趣。当然,要找到一个雇主让你在工作中编写编程语言是非常困难的。所以我正在寻找“次优解”。
哪些编程领域能让我获得一些解决相关问题的经验?或者哪些雇主最可能将我所有微不足道的解释器视为相关经验?
我一直对编写和设计编程语言很感兴趣。当然,要找到一个雇主让你在工作中编写编程语言是非常困难的。所以我正在寻找“次优解”。
哪些编程领域能让我获得一些解决相关问题的经验?或者哪些雇主最可能将我所有微不足道的解释器视为相关经验?
没有。该领域的大多数专业人员并不是为生计而设计语言,而是将现有编译器重新定位到新目标(通常是嵌入式目标),或者在遗留代码的源代码转换系统上工作,在此过程中进行一些语言扩展。
你真的应该问问自己是否想要这个,因为除非你极其幸运,否则这就是你进入这个行业后的现实前景。
请记住,目前大型公共工具链行业的盈利能力并不高,经过30年的编程语言创建,可能有100种语言正在大规模地使用和持续维护。
我知道这很令人沮丧,但我希望它能让你放弃浪漫、业余爱好者的观点,并开始研究这个领域的真实情况。
此外,自己完成小型爱好项目并不是先决条件。你需要展示出你可以在团队中开展大型项目的能力,而不仅仅是你可以自己创建一个小型解释器。如果你真的想追求这个方向,我建议:
我认为最好的方法是攻读专门关注语言设计、编译器等方面的高级学位。否则,如果你直接走进一家私人公司开始编写新的语言特性,那么会非常困难。
你也可以更加努力地独立或与小团队合作,制作出比仅仅是一个简单的解释器更为实用的东西。向潜在雇主展示你有能力创造出有用的东西。
一个拥有丰富“领域”(即复杂行业)的雇主可以从“领域特定语言”中受益。
他们会意识到这一点吗?不太可能。他们很可能被困在他们深厚的领域(和根深蒂固的遗留系统)中,无法看到有针对性的语言可以帮助疏通障碍。
但是,如果你沉浸在一个复杂的行业中足够长时间以获取丰富的领域知识,那么你可能能够用自己的 skunkwork DSL 来转变他们。机会很小。
留在学术界吧。如果你想要开发一门新语言,那么你被付费的机会微乎其微。较新的语言往往是某个全新问题领域的表达方式,而你只有在(a)创新问题成为常态,以及(b)没有人为了生计而感到困扰的地方,才能真正遇到开发它们的机会。
请慢慢想清楚。作为一个职业开发者,我最不需要的就是再来一种该死的语言需要去学习 :-)
在静态分析中有很多要做的事情,而出现的问题与您感兴趣的相关。
大多数目前流行的编程语言都是出于真正的需求而诞生的。Python诞生的原因是一些非C程序员需要自定义其C程序和库的输入。Lua出现是为了在C程序中嵌入脚本语言。Erlang的创造是为了解决对99.9999999%的可用性、热代码加载和高度并发执行的需求。Perl是为了更轻松地编写解析文本文件的程序而产生的。
所以雇主们会问自己一个非常简单的问题,你也应该问自己:我能够提供哪些不存在的解决方案来满足需求?业余工作很少能显示出你正在提供解决方案,大多数时候只是为了重新发明轮子。