一门基于stack的命令式语言

Forth

FORTH 语言由 Charles H.Moore 在 1970 年设计。 让我们来看一下这门语言的一些代码:

25 10 * 50 + CR .
300 ok

让我们用来模拟一下stack(栈)的状态:

[]
[25]
[10 25]
[* 10 25] -> [250]
[50 250]
[+ 50 250] -> [300]
[CR 300]
[]

可以发现只需要从左到右按顺序把指令压入栈就可以了。 CR 表示将栈顶的内容输出到新的一行, . 表示语句结束,返回 ok

再看一个复杂一点的例子:

: FLOOR5 ( n -- n' ) DUP 6 < IF DROP 5 ELSE 1 - THEN ;

这段代码定义了一个名为FLOOR5的函数, 不太确定( n -- n' )的意义,可能是表示输入n,输出n'. 函数的内容可以翻译成:

假设输入n=1

[1]
[DUP 1] -> [1 1]
[6 1 1]
[< 6 1 1] -> [true 1]                           # 注意栈里更深的数值放符号左边,所以是 `1 < 6`
[THEN - 1 ELSE 5 DROP IF true 1] -> [5 DROP 1] -> [5]   # 直接执行接下来的语句,忽略ELSE
[5]

假设输入n=8

[8]
[DUP 8] -> [8 8]
[6 8 8]
[< 6 8 8] -> [false 8]
[THEN - 1 ELSE 5 DROP IF false 8] -> [- 1 8] -> [7] # 直接执行ELSE里的语句
[7]

所以,FORTH 是一门非常简单的语言。那么,我们为什么要了解一门48年前的语言呢?因为时下最火热的比特币所使用的脚本就和FORTH非常类似。

Bitcoin Script

bitcoin最核心的一点:如何花掉属于你的钱。我们知道比特币是存储再某个特定的地址里的,那么当试图花掉地址里的钱时,就必须提供某种凭证,证明你对该地址的所有权。

简单地说就是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值