问题标签 [forth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
5466 浏览

memory-management - Forth 中的内存管理

所以我只是在学习 Forth 并且很好奇是否有人可以帮助我了解内存管理的一般工作原理。目前我只有(一些)C stack-vs-heap 范式的经验。

据我了解,可以在字典中或堆上进行分配。字典是否像 C 中的堆栈一样更快/更受欢迎?但与 C 不同的是,没有范围和自动堆栈回收,所以我想知道是否有人只将字典用于全局数据结构(如果有的话)。

就堆而言,它很像 C 吗?堆管理是标准 ( ANS ) 概念,还是实现定义的?

0 投票
3 回答
980 浏览

stack - 如何在 Forth(或 Factor)中编写应用程序?

我可能对探索像 Forth(或 Factor)这样的基于堆栈的语言感兴趣。我希望看到的是如何一步一步地从头开始构建应用程序。我发现的教程很简陋,并不能帮助我理解更大的图景。想一想在处理大量部件时如何管理堆栈是令人困惑的。

我一直认为(也许是错误的)学习语言的好方法是用它来编写Roguelike游戏。我很难弄清楚如何将一堆东西放在一起:迷宫、数十种生物、宝藏、角色统计数据等。

0 投票
1 回答
869 浏览

forth - 如何从 gforth 中的标准输入读取内容并将其存储在变量中?

阅读文档后,我尝试了以下代码:

我希望这会让我为 buff 的每个连续地址获得一个字符,但我在那里得到了这个奇怪的数字:

我在这里想念什么?

0 投票
1 回答
2847 浏览

history - 为什么 Forth 使用 IF 语句 THEN ... 而不是 ENDIF?

为什么 Forth 使用 IF 语句 THEN ... 而不是 ENDIF?

我正在实现一个(不符合标准的)Forth 编译器。基本上,对于 IF 语句,Forth 的语法对我来说似乎非常违反直觉。

为什么结尾语句是 a THEN?这让我的语言读起来非常奇怪。对于我的编译器,我正在考虑将其更改为ENDIF读起来更自然的东西。但是,首先使用反向 IF-THEN 语句的理由是什么?

0 投票
1 回答
811 浏览

memory-management - Forth 中 S" ..." 的寿命是多少?

我一直在尝试阅读此内容,但找不到任何提及。

根据标准,S"不能修改创建的字符串,从Gforth中的一个简单实验可以看出,字符串的空间不是来自字典或填充区域:

我可以期望该地址在多长时间内有效?

换句话说,如果我将这个地址(和计数)存储在一个变量中,我可以稍后在程序中引用它,还是需要将它移动到字典或堆中的单独位置?如果我不存储地址,我会泄漏内存吗?

0 投票
2 回答
298 浏览

forth - 如何在 Forth 中访问程序名称/argv[0]?

Gforth文档说通过调用来访问参数next-arg,但这省略了程序名称,它将以类似 C 的语言打印。

由于argv[0]似乎自动从 Forth 中的参数向量中删除,有没有我可以调用的特殊函数返回它?

0 投票
5 回答
8336 浏览

forth - 非常简洁的 Forth 应用程序示例?

本次演讲中,查克·摩尔(Forth 的创建者)提出了一些非常大胆、全面的主张,例如:

  1. “我见过的每个我没有编码的应用程序中的代码量是它需要的十倍”
  2. “大约一千条指令似乎对我来说是正确的,可以做任何事情”
  3. “如果你正在编写需要[局部变量]的代码,那么你就是在编写非最佳代码。不要使用局部变量。”

我试图弄清楚摩尔先生是 a) 绝对出色的天才还是 b) 疯子。但这是一个主观问题,我不是在这里寻找这个问题的答案。我正在寻找的是可以使用 Forth 在“1000 条或更少的指令”中解决的复杂现实问题的示例,以及演示如何执行此操作的源代码。仅显示一个真实世界系统的一个重要部分的示例会很好,但请不要使用可以在另一种高级语言的 5 或 10 行中复制的“玩具”代码示例。

如果您在 Forth 中编写了真实世界的系统,只使用了少量源代码,但不能随意显示源代码(因为它是专有的),我仍然想听听它。

0 投票
1 回答
384 浏览

primes - 在 Forth 中检查素数

如何在 Forth 中检查素数?

这是我现在使用的,但是随着数字的增加它会变慢:

0 投票
1 回答
1325 浏览

syntax-highlighting - Sublime Text 2 的 Forth 语法高亮显示?

我一直在环顾四周,但没有找到 Gforth 在Sublime Text中使用的语法定义。

有吗?我为TextPad找到了一个,但仅此而已(请参阅TextPad 语法定义)。是否可以将 TextPad 转换为与 Sublime Text 2 一起使用?

0 投票
1 回答
936 浏览

forth - 在 Gforth 中将整数值添加到浮点值

Gforth中,有没有办法将整数值添加到浮点值?

1 + 2.1什么?如果我这样做,1 2.1e f+我会得到一个错误,我猜是因为这些值不在同一个堆栈上。我知道我可以做到1.0e 2.1e f+,但这不是我想要弄清楚的。