编写编程语言

时间:2011-07-18 16:02:52

标签: programming-languages

免责声明:是的,我知道至少需要3年时间。

我期待着编写一种新的解释性编程语言。我对动态性,语法,对象模型等方面的想法非常了解。

现在我有了这个主意,在开始之前我有几个问题:

  1. 我应该开始编写完整的规范然后实现,还是一直写它们?
  2. 我仍然怀疑C和C ++。 C ++可以实现更清晰的设计和更快的开发,而C(可能)可以确保更多平台(微处理器?)的可移植性。表现是必须的。
  3. 我应该在第一个工作原型之前尝试让人们对项目感兴趣,以便他们可以合作(无论如何最终产品将是一个自由的许可证),或者继续单独工作直到我有一些东西运行?
  4. 它应该是模块化的吗?我确信我不会立即开始使用字节码解释器,但是更容易实现但速度较慢的东西,所以模块化是必须的,以便能够稍后扩展,但我认为过度使用会妨碍性能和清晰度。

3 个答案:

答案 0 :(得分:1)

你的问题的答案在很大程度上取决于为什么你这样做 - 这是主要原因。您是在尝试创建下一个Ruby,还是这是一个学习练习?

  1. 规格:如果这是个人项目,这并不重要。由于“动态”开发,PHP得到了糟糕的说唱,但很多人每天都在使用它。如果/当您需要帮助时,更完整的规范可能有助于让人们参与。

  2. 如果您想要跨平台和性能,那么C就是您的选择。

  3. 如果您希望人们加入,请先证明一下。用你的语言和博客/谈论你的语言不同/特殊/更好的原因写一个杀手级的应用程序。

  4. 什么,语言本身或编译器的模块化?如果你想扩展语言,一个好的规范将有所帮助(参见#1。)编译器应该考虑到所有最佳实践,这应该有助于使它具有可扩展性。

  5. 我听说Dragon Book有助于学习开发编译器。

答案 1 :(得分:1)

  1. 除非您与实施一起编写,否则您的规范将被破坏。
  2. 如果您认为C ++会为您提供更清晰的设计和更快的开发,那么您应该使用它。
  3. 如果有任何东西可以运行并展示您的语言的独特之处,那么任何对项目感兴趣的人都会遇到困难。
  4. 如果您认为您的语言需要字节码解释器(并且您确实说“性能是必须的”),那么在最终确定语言设计之前,您应该研究现有字节码解释器的功能。

答案 2 :(得分:1)

我认为你已经为自己设定了太多目标。你说“表现是必须的”,但在评论回复中,你说你的目标是“学习很多关于语言设计的东西”,并且“你很可能”在一个真实的项目中使用它。创建新的编程语言来解决问题;更确切地说,它们的创建是为了帮助人们以更好的方式表达问题的解决方案。设计一种语言而不是认真地,强烈地,持续地使用它就像编写没有任何测试用例的软件一样:你很可能会遇到无法使用的东西。

如果您想尝试语言设计,那么找一个问题---您关心的问题---现有语言不会让您按照自己的方式解决问题。然后尽你所能来获得一个有效的实现,并开始使用它编写和运行程序。您不需要手工制作的JIT编译器,其运行时编写的是高度笨拙的汇编代码。如果您以JVM或.NET为目标,即使它干扰了您对______的强大想法,也可以获得非常高性能的GC,可扩展的线程系统,库以及许多其他免费的好东西。

另一方面,如果你只想让某些东西快速运行,不要试图同时设计一种语言。找到你喜欢的,了解实施策略,看看你能做得更好。