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

问题描述 投票:0回答:8

维基百科说:

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

例如,Tcl 允许您编写自己的控制结构。请参阅此处

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

language-agnostic extensible
8个回答
5
投票

LISP 家族中的语言(Common Lisp、Guile 等)具有“极大”的可扩展性——比我使用过的任何其他语言都更可扩展。可以将其视为类固醇的 C 宏系统。如果你足够无聊,你可以将 + 运算符重新定义为减法:现在这就是可扩展性! LISP 在很多地方已经过时了,但是

Guile

(Scheme 的一种方言)是 GNU 项目的官方扩展语言。


3
投票

无论如何,人们确实在使用 Ruby :-)


2
投票
Jeebox

是一种可扩展语言,可以描述任何东西,包括代码。 它纯粹用来描述事物,现在...

但是一种可扩展的编程语言,可以非常轻松地构建在 Jeebox 之上。

(我正在 Jeebox 上构建一种普通的、不可扩展的编程语言,仅仅是因为将可扩展性构建到编程语言中不仅仅是一种语言功能。它需要一种递归,您可以在其中编写可以创建更多代码的代码。正确地做到这一点需要比我更多的时间。但很高兴知道我正在使用的语言 Jeebox 可以支持这一点,一旦我有时间这样做。)


1
投票

val romanNumeral = Map( 1 -> "I", 2 -> "II", 3 -> "III" )

 -> 实际上是在对象 1 上调用的方法,但看起来像一个运算符。


1
投票
Jetbrains MPS(元编程系统)

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

mbeddr

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

Aynth

是一个使用 mbeddr 编写的简单单音合成器,用于演示组件和发送/接收接口。 无论如何,如果您使用它,您首先会注意到的是,在很多情况下投影编辑并不像文本编辑那么舒服。我们非常习惯基于文本的编辑。但可扩展语言有很多好处。


1
投票
可扩展编程

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

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

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


0
投票
TCL

语言是一种动态语言,几乎没有基本规则 Tcl 的精神是

“一切都是字符串”、“一切都是命令”

,甚至是控制流结构。 例如让我们用自定义循环替换 while 循环。

# rename original while to orig_while for future usage. rename while orig_while; #redefine while proc while {cond body} { # add customization code # calculate while call count. global while_call_count; incr while_call_count; # call original while in uper level stack uplevel orig_while $cond $body; # add customization code }

Tcl 具有 
C 语言接口

,可以非常轻松地将 Tcl 集成到现有程序中。 Tcl 在 EDA 工具 中使用非常广泛。 最后TCL如此强大,以至于无法定义

Tcl BNF

,这带来了很多头痛


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.