INTERPRETER是反模式吗?

Jon*_*ker 10 lisp design-patterns anti-patterns greenspunning interpreter-pattern

对我来说,翻译模式听起来非常像一个被称为格林普森第十条规则的反模式:

任何足够复杂的C或Fortran程序都包含一个特殊的,非正式指定的,错误缠身的,一半Common Lisp的缓慢实现.

也就是说,如果你需要使用Interpreter,你可能会创建一些缓慢,临时和指定不当的东西.正确的解决方案是从一开始就使用正确的语言.

或者,或者,在您的应用程序中嵌入一个众所周知且语言清晰的语言,例如Guile(GNU可嵌入方案).或者使用Haskell作为嵌入式域特定语言.

但我在实践中没有看到这一点 - 您在构建自己的嵌入式语言方面有哪些经验?这是个好主意吗?它比嵌入已有的语言更好吗?

(我不是特别喜欢lisp的粉丝.这很好,但是C和Haskell以及python和很多其他语言都是如此.)

Bil*_*ard 31

解释器模式中没有任何内容表明它必须是您正在解释的另一种编程语言的语法.如果你需要解析一个简单的数学表达式,那么解释就是这样.

知道何时使用模式是阻止它成为反模式的原因.


Ben*_*n S 14

如果误用,任何设计模式都是反模式.

解释器模式的良好用途:

  • 软件编译器
  • SQL评估引擎
  • 图形计算器输入解析器
  • XML解析器

这些都是解决语言评估问题的程序,无论语言是什么.


Rai*_*wig 8

请记住,'解释器模式'是OOP中的特定设计模式.

它与"口译员"或其一般用途无关.