标签: forth

什么是原始的Forth运营商?

我对实现Forth系统感兴趣,因此我可以获得构建简单VM和运行时的一些经验.

当在Forth开始时,人们通常首先了解堆栈及其运算符(DROP,DUP,SWAP等),因此很自然地将它们视为原始运算符之一.但他们不是.它们中的每一个都可以分解为直接操作内存和堆栈指针的运算符.后来人们学习了存储(!)和获取(@),可以用来实现DUP,SWAP等等(哈!).

那么原始运营商是什么?哪些必须直接在运行时环境中实现,可以从中构建所有其他环境?我对高性能不感兴趣; 我想要一些我(和其他人)可以学习的东西.运营商优化可以在以后进行

(是的,我知道我可以从图灵机启动并从那里开始.这有点极端.)

编辑:我的目标是类似于引导操作系统或新编译器.我至少需要做什么才能实现,以便我可以用这些原始构建块构建系统的其余部分?我不会在裸硬件上实现它; 作为一项教育活动,我会编写自己的最小虚拟机.

interpreter operators forth vm-implementation

35
推荐指数
3
解决办法
9730
查看次数

非常简洁的Forth应用程序的例子?

这次演讲中,Chuck Moore(Forth的创始人)提出了一些非常大胆,全面的主张,例如:

  1. "我看到的每个我没有编码的应用程序的代码都是它需要的代码的十倍"
  2. "大约有一千条说明似乎对我做任何事都是对的"
  3. "如果您正在编写需要[局部变量]的代码,那么您正在编写非最佳代码.请勿使用局部变量."

我想弄清楚摩尔先生是否是一个绝对出色的天才或者b)一个疯子.但这是一个主观问题,我不是在寻找这个问题的答案.我正在寻找的是复杂的,现实世界的问题的例子,可以使用Forth在"1000指令或更少"中解决,以及演示如何执行此操作的源代码.一个例子只显示一个真实世界系统中的一个非平凡的部分,但是没有"玩具"代码样本可以在另一个高级语言的5或10行中复制.

如果您在Forth中编写了真实系统,只使用少量源代码,但不能自由地显示源代码(因为它是专有的),我仍然希望听到它.

forth

33
推荐指数
5
解决办法
7372
查看次数

Forth还在使用吗?如果是这样,怎么样和在哪里?

很久以前我记得我认为Forth编程语言非常酷.多年来我真的没有听说过任何关于它的事情.Forth还在使用吗?如果是这样,它用于什么类型的应用程序?

programming-languages forth

26
推荐指数
4
解决办法
1万
查看次数

哪个Forth开始移植?

我正在寻求开发一种新的Forth系统,旨在使游戏开发更容易在一个或几个复古的控制台平台上.我是第四个初学者,需要你帮助决定从哪个Forth代码库开始移植.

我基本上都在寻找特定Forths相互之间的优缺点.我已经阅读了JonesFORTH的来源,以及对它的赞美和批评,以及对ANS的讨论,不幸的是,我感到很困惑.据我所知,Forth社区似乎在标准遵守问题上相当粗暴地分裂,两个阵营都提出了非常好的论据,说明为什么标准既好又坏.然而,我似乎无法找到关于标准变化究竟是什么的良好实用建议,除了一般意义上它使事情变得比他们可能需要的更复杂和更臃肿.

我希望让程序员和业余爱好者更容易开发,因为他们在组装或C方面的发展前景吓坏了,所以我倾向于更简单的Forth,但我真的不太了解Forth还没有做出一个有教养的决定.

embedded language-design forth retro-computing

24
推荐指数
2
解决办法
2896
查看次数

我应该用什么实现Forth来学习Forth?

我想开始学习Forth(比如相关的Stack Overflow问题,学习和使用Forth是否实用?).我看到有很多实现.我想用一个

  • ANS 1994兼容版本(如果合理,但坚持标准可能会很好)
  • 小而紧凑的实现,我不想要一个完整的操作系统.
  • 视窗
  • 好用,我是Forth的新手;-)

可以推荐什么特定的实现?

ide forth

19
推荐指数
2
解决办法
9361
查看次数

18
推荐指数
4
解决办法
2429
查看次数

哪些编程语言拥有最容易实现的解释器?

我需要为编程语言实现一个解释器,作为我正在进行的项目的一部分.我不认为这个项目的细节太相关,除了它要求我从头开始实现一个解释器,我不能使用现有的编程语言(要求包括支持便携式分隔连续,并能够编写一个在Javascript和Java中解释它.

显然我宁愿避免发明一种全新的编程语言,所以我希望有一些非常简单的语言可以复制,或者至少从中汲取灵感.

我的第一个想法是Forth或一种基本的类似Lisp的语言,但是我更喜欢这种语言的语法更接近更流行的编程语言,如Java,Python或Ruby.特别是,这意味着支持中缀运算符(a + b),以及a = b变量赋值.

换句话说,我希望这种语言对于今天用PHP编程的人来说感觉相当熟悉,我不相信Forth或Lisp都符合这个标准.

任何人都可以为这种语言提供任何建议吗?

lisp programming-languages language-design forth

14
推荐指数
4
解决办法
1276
查看次数

逻辑和在第四?

我知道AND字定义了二进制and......但是什么定义了逻辑and

forth keyword logical-operators

13
推荐指数
1
解决办法
1156
查看次数

Forth中的内存管理

所以我只是在学习Forth,并且好奇是否有人可以帮助我理解内存管理通常如何工作.目前我只有(一些)使用C stack-vs-heap范例的经验.

根据我的理解,可以在Dictionary中或在堆上进行分配.字典是否比C中的堆栈更快/更喜欢?但与C不同,没有范围和自动堆栈回收,所以我想知道是否只使用字典来表示全局数据结构(如果有的话).

就堆而言,它是否与C非常相似?堆管理是标准(ANS)概念,还是实现定义的?

heap memory-management forth

13
推荐指数
2
解决办法
3580
查看次数

Common Lisp宏与Forth元编程能力的比较

每个Common Lisp程序员都知道宏是一个强大的工具.除了其他方面,已经使用Common Lisp宏在Lisp之上添加面向对象而不改变语言规范; read-macros是另一种具有思维弯曲功能的构造.

另一个允许元编程的程序是Forth.Forth采用"单词"和"生成单词"的方式略有不同.

我想知道,从涉及两种语言的人那里,如果普通的lisp宏和前面的结构在广度/功率方面具有可比性:你可以用前者做一些你不能用后者做的事吗?或相反亦然?

当然,我不是在谈论两种语言的图灵完整性:我在谈论元编程能力.C是Turing-complete,但只有傻瓜会说C宏与Common Lisp的功能相当.

lisp metaprogramming common-lisp forth gforth

13
推荐指数
2
解决办法
2028
查看次数