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

时间:2010-03-13 10:46:12

标签: ide forth

我想开始学习Forth(就像相关的Stack Overflow问题 Is it practical to learn and use Forth? )。我看到有many implementations。我想用

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

可以推荐哪些具体实施?

9 个答案:

答案 0 :(得分:13)

如上所述,

Win32Forth真是太棒了。它有一个很好的集成开发环境,是一个非常现代的实现,似乎与标准非常匹配,包括一些更实验但被广泛接受的功能。

我使用Gforth,但我也使用Vim来编辑源文件。 :)就其支持的功能而言,Gforth是好的和“经典的”。它为您提供了一个非常“老派”的Forth体验,而不会过于古怪。 (一些免费的Forth用他们的命令行做奇怪的事情 - 我使用Brodie的“Starting Forth”作为Forth解释器应该如何表现的模型。)

我看了SwiftForth,这是一个非常好的“高科技”Forth系统,远远超出了经典的Forths在语言功能方面提供的功能,并且真正将Forth引入现代编程世界。如果你想真正专业地做Forth程序,SwiftForth看起来它可以处理你想用它做的任何事情。

答案 1 :(得分:8)

前段时间我评估了4tHForth的实现。 我认为它符合所有 你的要求。例如,编译器只有61 KB。还有对浮点数的完全支持,如果你愿意,这很重要 尽量将其用于技术/科学目的。

4tH在大多数操作系统上运行,包括MS-DOS,MS-Windows(16位和32位),Linux,CoherentAIXSunOS,{{3 },BSD,Mac OS X,BOSBeOSRISC OS(Windows安装程序,1.5 MB,包括手册)。 Download(PDF,1.1 MB)。

有一个以Google群组Manual为中心的活跃社区。 例如,今天我收到两条消息。

请注意,在4tH中,您无法定义自己的定义单词(在编译时执行的单词)。这不是一个严重的问题 限制,除非您想要涵盖高级Forth功能。


为了帮助您入门(因为从手册或交互式编译中不是很清楚),在安装后将编译器4th.exe复制到空文件夹中,在此目录中创建两个文件{{1 }和HelloWorld.bat,并运行HelloWorld.bat:

HelloWorld.bat:

HelloWorld.4th

HelloWorld.4th:

    4th.exe cx HelloWorld.4th
    pause

答案 2 :(得分:2)

SwiftForth。它不是自觉小而紧凑;它恰好是。它易于使用(LOCATE WH EDIT,比通常的单词更好),附带两本书,并拥有超过十年的档案的优秀邮件列表。评估版本不允许您编译交钥匙应用程序或DLL;它仍然为学生提供了一个出色的控制台,并且可以通常的方式支持脚本。快速Windows示例:

: sleep-monitor ( -- )
  HWND_BROADCAST WM_SYSCOMMAND SC_MONITORPOWER 2 SendMessage drop ;


library dnsapi.dll
( ... DLL imports, constants ... )
variable results
: DnsQuery ( z -- res )
  DNS_TYPE_A 0 NULL results NULL DnsQuery_UTF8 ;

: resolves? ( z -- f )
  DnsQuery if false exit then
  results @ DnsRecordListFree true ;


\ an example use of the dialog compiler
\ this compiled DSL is an example of something that 4th
\ precludes with its "not ... serious limitation"
DIALOG (HELLO-ABOUT)
[MODELESS " About Hello" 10 10 120 70
   (FONT 8, MS Sans Serif) ]
\  [class           text                        id   x   y   sx xy ]

   [CTEXT           " HELLO"                    -1  10  10  100 10 ]
   [CTEXT           " (C) 1997 Forth, Inc."     -1  10  25  100 10 ]
   [CTEXT           " http://www.forth.com"     -1  10  35  100 10 ]
   [DEFPUSHBUTTON   " OK"                     IDOK  35  50   50 14 ]
END-DIALOG

答案 3 :(得分:2)

我意识到他们可能无法满足您的所有要求,但从学习的角度来看,以下类似Forth的语言也会让您感兴趣。

此外,我发现Re-Factor博客是对Factor的一个很好的介绍。

答案 4 :(得分:2)

如果您能找到FORTH Inc旧版的polyFORTH副本,以及可以运行它的旧版x86,这就是Leo Brodie最初的“Starting FORTH”中使用的语言。这是一个干净而且非常强大的FORTH。

答案 5 :(得分:1)

Win32Forth对我有用。

答案 6 :(得分:1)

下载适用于PC和Android的Gforth

修补它使用它作为计算器,解决简单的问题,斐波纳契,解决二次方a b c等。

答案 7 :(得分:1)

我建议使用ciforth,因为您是Windows用户,因此为Windows构建的版本称为wina: an MS-WIndows NAtive Forth

ciforth是一个用NASM汇编器编写的小型系统,并具有适用于多种系统的类似接口。它体积小巧,速度快,经典(ftw块),易于使用,因为它很老派,附带大量文档和一个单词列表,不像Gforth的单词列表那样令人难以理解(Lina的单词列表为here,我认为是wina多数相同)。

Gforth有很多膨胀的定义,例如,某些 Starting Forth 不能在其中使用。 ciforth唯一缺少的是浮点堆栈,但是Forth可以很好地处理定点(如果读 Starting Forth ,就会知道如何使用它)。

答案 8 :(得分:0)

durexForth是符合ANS的C64,非常小。