Language agnostic 人们现在使用的可扩展语言是什么?

Language agnostic 人们现在使用的可扩展语言是什么?,language-agnostic,extensible,Language Agnostic,Extensible,维基百科说: 可扩展编程是计算机科学中使用的一个术语,用来描述一种计算机编程风格,它侧重于扩展编程语言、编译器和运行时环境的机制 例如,Tcl允许您编写自己的控制结构。看 我感兴趣的是编译一个在真实代码中使用的可扩展编程语言列表。如果您也能为您的语言提供一个示例,那就太好了。Ruby并不是一种严格意义上的可扩展语言,但是它的语法非常灵活和强大,如果您眯着眼睛看,它看起来就像是。。。从很多方面来说,这已经足够好了 无论如何,人们实际上使用的是Ruby:-)LISP家族中的语言(Common LIS

维基百科说:

可扩展编程是计算机科学中使用的一个术语,用来描述一种计算机编程风格,它侧重于扩展编程语言、编译器和运行时环境的机制

例如,Tcl允许您编写自己的控制结构。看


我感兴趣的是编译一个在真实代码中使用的可扩展编程语言列表。如果您也能为您的语言提供一个示例,那就太好了。

Ruby并不是一种严格意义上的可扩展语言,但是它的语法非常灵活和强大,如果您眯着眼睛看,它看起来就像是。。。从很多方面来说,这已经足够好了


无论如何,人们实际上使用的是Ruby:-)

LISP家族中的语言(Common LISP、Guile等),它们的可扩展性非常强,比我使用过的任何其他语言都强。把它想象成类固醇上的C宏系统。如果您觉得很无聊,可以将+操作符重新定义为减法:这就是可扩展性


LISP在许多地方已经过时,但(Scheme的方言)是的官方扩展语言。

Scala也不是严格可扩展的,但您可以定义类似于运算符的内容。例如,定义地图时,可以使用:

val romanNumeral = Map(
    1 -> "I", 2 -> "II", 3 -> "III"
)
->实际上是在对象1上调用的方法,但看起来像一个运算符。

是一种可扩展语言,可以描述任何内容,包括代码

它只是用来描述事物,现在

但一种可扩展的编程语言,可以很容易地构建在Jeebox上

(我正在Jeebox的桌面上构建一种普通的、不可扩展的编程语言,原因很简单,因为将可扩展性构建到编程语言中不仅仅是一种语言功能。它需要一种递归,在这种递归中,您可以编写可以创建更多代码的代码。正确地完成这项工作需要比我现有的更多的时间。但是,知道这一点很好我现在使用的语言Jeebox一旦有时间就可以支持这一点。)

提供了一个基于投影编辑器的可扩展语言工作台。它帮助您为语言扩展创建编辑器、类型系统、约束、重构和代码生成器。它附带一些Java语言实现和扩展

是一个利用这种技术的C实现。它有组件系统、发送/接收+客户端/服务器接口、依赖项注入、状态机、测试和PLE扩展。它还包含一个可扩展的调试系统,因此您可以将扩展映射到gdb并提供舒适的调试体验。几乎所有的C语言功能res被映射,因此代码生成主要可以通过简化为C结构而不是愚蠢的M2T转换来处理

是一个简单的单声道合成器,使用mbeddr编写,用于演示组件和发送/接收接口


无论如何,如果你使用它,你会注意到的第一件事是,在许多情况下,投影编辑不如文本编辑舒适。我们非常习惯于基于文本的编辑。但是可扩展语言有很多好处。

维基百科的文章提到了这种语言。Seed7的维基百科文章将其描述为:

除了许多其他功能外,它还提供了一种扩展机制。Seed7支持在语言中引入新语法及其语义,并允许使用Seed7语言本身定义新的语言结构。例如:程序员可以引入新语句的语法和语义以及用户定义的运算符sym波士

Seed7从一开始就被设计为可扩展语言。整个语言不是在编译器中硬编码的。相反,Seed7是在库中定义的,这些库在程序编译时加载。IMHO Seed7是唯一一种可扩展性是基本特性的语言,其他一切都基于它。其他方法使用常规语言编译器使用硬编码语法和语义分析,并在其上附加一些扩展机制。

是一种动态语言,很少有:

Tcl的精神是,甚至控制流程结构

例如,让我们用自定义循环替换while循环

#将原始while重命名为原始while,以备将来使用。
重命名while orig_while;
#重新定义while
proc while{cond body}{
#添加自定义代码
#计算通话次数。
全局while_call_count;
增加通话次数;
#在上层堆栈中调用original
uplevel orig_而$cond$body;
#添加自定义代码
}
Tcl拥有一个可以很容易地将Tcl集成到现有程序中的功能。 Tcl应用非常广泛


最后,TCL功能强大,无法定义,这带来了许多具有可扩展语法的编程语言。

。但你无法扩展LISP的语法。最后,它归结为括号和原子。我听过一些方言,比如允许你扩展语法,但你最终必须用LI编写自己的解析器SP S-Expressions。每段LISP代码看起来都很相似,这可能是一个有趣的特性,但也会损害可读性(考虑到某些构造可能更易于使用其他格式读取和维护)。