创建新编程语言的真正好处是什么?你真的不太可能实际使用它.
简而言之,创建新语言的过程将如何使您成为更好的程序员?
您将了解语言设计背后的决策,并更好地全面了解可读性,性能和可靠性之间的妥协.
您对递归,闭包,垃圾收集,参考管理,打字,数据结构以及这些内容实际工作方式等概念的熟悉程度将会提高.大多数程序员将更好地利用资源和语言功能.
类似于我们在使用其他语言时学习编写解决方案的新方法的方式,当我们编写自己的语言时,我们会探索创建解决方案的新方法.请参阅元编程.与问题所暗示的相反,域特定语言在许多环境中使用.
如果您正在编写编译器,您将了解有关计算机如何工作的更多信息.(根据您的目标,可能比您打算学习的更多)
当我在学校编写自己的排序例程,甚至重新实现好的例程时,它确实驱动了一些算法的一些弱点.
简而言之,知道如何使用工具的程序员和知道如何制作工具的程序员之间存在一个数量级的差异.
我可以根据这里的经验说话......
有趣,领域特定的问题解决,在上下文中的复杂性
我喜欢创造新的语言以获得乐趣,并且能够解决特定领域的问题.一个非常简单的例子可能是维基百科标记或像Erlang这样专门处理并发处理的东西.
许多通用语言是相似的,因为它们是通用的.有时您需要更准确地抽象出您正在解决的问题的机制.另一个例子是M4宏语言.
请记住,语言不是魔术,它只是具有隐含语义的已定义语法结构的集合.SQL是一个很好的语言示例,其目的是在语法和语义中定义.
学习语言如何工作,什么使语言可解析,什么使语义合理,以及实现这一点,我认为可以使你成为一个更好的程序员.
编译器体现了许多支持计算机科学的理论:
翻译,抽象,解释,数据结构,状态....列表继续.学习这些东西会让你了解你的程序的含义以及幕后的内容.您当然可以独立学习,但编译器是学习复杂主题的理想环境,例如DFA/NDFA自动机,基于堆栈的解析器,抽象语法树....
编程器是美丽的机器我认为:)
多种原因:
吹牛的权利
经济激励
极度无聊
对数百种现有语言的不满
未经治疗的精神错乱
希望实现有助于新设计概念的语言(比如使设计模式更易于合并的语言)
也许是其他原因
我认为Jeff Attwood在这篇Coding Horror帖子中很好地回答了这个问题- 尽管他正在谈论一个更普遍的问题(为什么在同一个设计空间中存在其他工件时创建任何新的库,框架等),我怀疑它确切地说更广泛的观点给了他一个不同而有趣的视角.