看到微博上推荐 forth 语言, 忍不住看了, 教程有一份:
http://galileo.phys.virginia.edu/classes/551.jvn.fall01/primer.htm
另外一份没看过: http://www.forth.com/starting-forth/index.html
看了遍, 独特, 但我不喜欢, 这里留下点记录以备可能的需要.
Ubuntu 源里边有能找到两个版本, 区别不详:
$ aptitude search forth
$ aptitude install gforth
$ gforth
启动的大概是解释器, 还不区分大小写. 输入 bye 或按 ctrl-c 退出.
forth 是基于栈的语言, 输入代码以后, 按下回车开始执行.
然后表达式是后置的, + - * / 这几个表达式有内置.
. 用来把栈顶元素移到屏幕显示. 回车可以在 . 之后按下:
1 . 1 ok
1 2 + . 3 ok
3 4 5 + * . 27 ok
用冒号和分号的组合来定义变量和操作, 然后回车执行,
注意 ." 这里是连在一起, 后边有空格, 然后内容到 " 再截止:
: hi ." string" ;
然后定义一个操作, 比如 *+ , 然后执行效果相当于替换了:
: *+ * + ;
3 4 5 *+ .
3 4 5 * + .
因为是栈, 就有了很多可以操作栈的内容的操作, 像 drop swap 各种,
比如我用 <cr> 表示回车, 打印出栈的内容比如:
1 2 3 4 swap . . . . <cr> 3 4 2 1 ok
1 2 3 dup . . . . <cr> 3 3 2 1 ok
1 2 3 drop . . . <cr> 2 1
1 2 3 4 1 pick . . . . . <cr> 3 4 3 2 1 ok
1 2 3 4 0 pick . . . . . <cr> 4 4 3 2 1 ok
1 2 3 4 1 pick . . . . . <cr> 3 4 3 2 1 ok
1 2 3 4 2 pick . . . . . <cr> 2 4 3 2 1 ok
然后用来写成函数, 比如下面计算平方和, swap 换了 0,1,2 的位置:
: sum-squares dup * swap dup * + ;
3 4 sum-squares .
很独特的语言, 不过中文文档少, 需要的话看上边两篇教程...