gpt4 book ai didi

python - 如何设计和实现编程语言?

转载 作者:太空狗 更新时间:2023-10-29 17:37:08 26 4
gpt4 key购买 nike

<分区>

这个问题是关于

在过去的几年里,我一直在思考我喜欢和不喜欢我使用的语言的事情。我一直想写我自己的语言,但从未这样做过。

我还拥有乐高 RCX 和 NXT,但大多数时候我从未真正让我的机器人做任何事情,因为它们的可视化编程环境受限。

我想我会为 NXT 设计我的编程语言,因为已经有大量的通用语言,而且 NXT 给了我一组具体的问题和目标,并希望有一个很好的沙箱来玩。

现在呢?我从哪说起呢?我需要知道什么?

如果可能,我会用 Python 或 Clojure 编写编译器。有一个 SDK for the NXT , 还有一个 Assembly language .什么是最好/最简单的路线?

Lego NXT 有一个小屏幕,USB 和蓝牙,它有 4 个数字和模拟传感器端口,3 个输出端口和 2 个 ARM 处理器,一个主处理器和一个协处理器。 http://mindstormsnxt.blogspot.com/2006/08/whats-inside-nxt-brick.html

对 NXT 进行编程将涉及处理数据和事件,因此某种单一的数据流/响应式(Reactive)风格似乎是合适的。它还应该很好地处理并行任务,所以我认为是功能性的。我目前也在考虑基于堆栈。

在我的脑海中,我已经在尝试统一这些概念并想到示例代码。我正在考虑一棵树而不是堆栈,其中功能分支可以并行运行。一个例子:

# implicit main stack
5 5 +
# 10

# quoted branch or list
[1 -]
# 10 [1 -]

# eval list and recur until false
loop
# [9 8 7 6 5 4 3 2 1 0]

# define stack as a function
[1 = [1 8 motor] [1 0 motor] if] fn
# [9 8 7 6 5 4 3 2 1 0] <function>

# define function as a symbol
"handle-press" def
# [9 8 7 6 5 4 3 2 1 0]

# reactively loop over infinite lazy stack returned by sensor
# in a parallel branch
|4 sensor handle-press for|
# [9 8 7 6 5 4 3 2 1 0] [8 nil nil nil 8 ...]

这背后的推理显然仍然存在漏洞,但无论如何我都会发布这个粗略的草图以引发一些有用的答案和讨论。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com