我期待着编写一种新的解释性编程语言。我对动态性,语法,对象模型等方面的想法非常了解。
现在我有了这个主意,在开始之前我有几个问题:
答案 0 :(得分:1)
你的问题的答案在很大程度上取决于为什么你这样做 - 这是主要原因。您是在尝试创建下一个Ruby,还是这是一个学习练习?
规格:如果这是个人项目,这并不重要。由于“动态”开发,PHP得到了糟糕的说唱,但很多人每天都在使用它。如果/当您需要帮助时,更完整的规范可能有助于让人们参与。
如果您想要跨平台和性能,那么C就是您的选择。
如果您希望人们加入,请先证明一下。用你的语言和博客/谈论你的语言不同/特殊/更好的原因写一个杀手级的应用程序。
什么,语言本身或编译器的模块化?如果你想扩展语言,一个好的规范将有所帮助(参见#1。)编译器应该考虑到所有最佳实践,这应该有助于使它具有可扩展性。
我听说Dragon Book有助于学习开发编译器。
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为你已经为自己设定了太多目标。你说“表现是必须的”,但在评论回复中,你说你的目标是“学习很多关于语言设计的东西”,并且“你很可能”在一个真实的项目中使用它。创建新的编程语言来解决问题;更确切地说,它们的创建是为了帮助人们以更好的方式表达问题的解决方案。设计一种语言而不是认真地,强烈地,持续地使用它就像编写没有任何测试用例的软件一样:你很可能会遇到无法使用的东西。
如果您想尝试语言设计,那么找一个问题---您关心的问题---现有语言不会让您按照自己的方式解决问题。然后尽你所能来获得一个有效的实现,并开始使用它编写和运行程序。您不需要手工制作的JIT编译器,其运行时编写的是高度笨拙的汇编代码。如果您以JVM或.NET为目标,即使它干扰了您对______
的强大想法,也可以获得非常高性能的GC,可扩展的线程系统,库以及许多其他免费的好东西。
另一方面,如果你只想让某些东西快速运行,不要试图同时设计一种语言。找到你喜欢的,了解实施策略,看看你能做得更好。