[LinuxFocus-icon]
<--  | 首页  | 站点地图  | 索引  | 搜索

新闻 | 过往期刊 | 链接 | 关于LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  Russian  Turkce  Polish  

[Photo of the Author]
by Guido Socher (homepage)

关于作者:

我的第一个 RPN 计算器是 HP15c,第一眼看上去,它就十分可爱。


目录:

 

Linux 下的 RPN 计算器

hp-calc and tux

摘要:

RPN 代表逆波兰式(Reverse Polish Notation)。逆波兰式最早于1920年由 Jan Lukasiewicz 发明,作为一种无需括号的数学表达式。首先需要用一点时间来学习一下 RPN,但之后你很快就会发现这是一种比通常的代数式更优越的表达方式。

_________________ _________________ _________________

 

简介

RPN 便携计算器因为 HP 计算器而变得热门起来。早在 1968 年,HP 就已在它的第一款计算器中使用这种输入法了。如果你在互联网上搜索的话,你可以找到很多这些 HP 计算器的爱好者俱乐部。在这篇文章的结尾处,我给出了很多关于这个主题的不错的链接。如今,这些 HP 计算器中的大部分型号都已经是收藏家的藏品了,售价远远高于原来的定价。

本文将给出一些 Linux 下可用的 RPN 计算器 (译注:原文 RPN desktop calculator,desktop 未翻译,如果读者有什么建议可以通知译者,谢谢。)。我们不仅介绍 HP 计算器的模拟器,也介绍其它的、和 HP 毫无瓜葛的 RPN 计算器。  

RPN 是什么? 为什么使用 RPN?

RPN 计算器使用一个堆栈,在这个堆栈的表层上对所有的数学运算进行立即计算。这个堆栈被用作是记录在以后的运算中要用到的中间结果的存储器。因此,使用 RPN 计算器,你不再需要任何的括号了。首先,输入数字,压入堆栈,然后就可以对这些数做你想做的操作了。比如说我们要计算:
(( 3 + 1 )^2 + 1) * 4 要计算这个,你应该这么做:
3 enter
1 +      (你会立刻看到这个操作的结果: 4)

x^2      (你会立刻看到这个操作的结果: 16)
1+       (你会立刻看到这个操作的结果: 17)
4*       (最终结果: 68)
可以看到,输入这个算式只需要9次击键,而且你能看到所有的中间结果。这其实基本上就是如果你不是用计算器,而是进行口算时,在头脑中演算的过程。换句话说,RPN 计算器更加“自然”。它和你的大脑的工作方式是相同的。

如果你把 RPN 计算和一个算术计算器相比较的话,输入相同的算式需要12次击键,而且你看不到中间结果。换句话说,RPN 计算器的优点在于:  

计算器

从几个简单的计算器开始吧,你可以在看着便文章的同时用你的浏览器试试这几个计算器,后面我还会介绍一些更强大的“机器”。
 

rpnjcalc

这个计算器使用了 Javascript。它是我的作品,可以运行在任何现代(!)浏览器上(不能在 opera 5/6, netscape 4, konquerer 中正常工作)。它和很多其它的 Javascript 计算器不同,你可以使用键盘来输入数字和基本的数学运算符。点击这里就可以体验一下 rpnjcalc 了。

名称:rpnjcalc
主页:http://main.linuxfocus.org/~guido/javascript/rpnjcalcallver.html
许可证:GPL

 

hp-35

这个计算器也用了 Javascript,但是它的重点在于模仿了一个真的(老的) HP-35 便携计算器。你可以通过这个链接在线试用它。
不过如果你真想用它的话,我还是建议你下载下面那个 zip 文件,因为这个计算器使用了很多 gif 图,如果你在本机安装它的话,会大幅提高响应速度。注意,这个计算器并没有提供真正的 HP35 的所有功能。比如,它只能用角度(0-360)进行三角计算。

名称:hp-35
主页:不详, 从 www.hpmuseum.org 得到。在这里下载:hp-35.zip
许可证:GPL

 

dc

这个计算器是标准的 Unix 命令。即使是在很老的 unix 系统中,你也可以找它的踪迹。它可以进行最基本的算术运算,但不能处理很大的数。启动计算器只要敲入 dc 就行了,然后输入一个以 k 结尾的数字(比如 6k 然后回车)。这设置了计算的精度,然后就可以进行四则运算了,并可以使用 p 来显示最外层的堆栈。输入 ctrl-d 就退出 dc 了。

名称:dc (desk calculator)
主页:Unix 系统的一部分,Linux 下 dc 的软件包叫做 bc。
许可证:通常和你的 Unix 系统一样。

 

vc.pl

这个计算器是用 Perl 写成的。这是一个非常有趣的实现,实际上它是一个向量计算器。但显然,你也可以把它用作普通的计算,一个数就是一个一维向量嘛。它集成了一个帮助系统(输入help命令就行了)。安装 vc.pl 非常简单,因为它只使用了标准的 perl 模块。

名称:vc (向量计算器,vector calculator)
主页:http://vc-calc.sourceforge.net/
许可证:GPL

 

x48

这个计算器是一个 HP-48 模拟器。也就是说,它可以运行真正 HP 的代码。这个计算器只实现了一个模拟器,你需要下载真正的 HP-48 ROM 代码。x48 是 GPL 的,但显然 ROM 代码是HP 版权所有的。不过 hp48 计算器已经很久不生产了,自从2000年开始,HP 允许下载 hp48 的 ROM 镜像了。注:在屏幕上有这样一个计算器真是不错,但它仍然不可以完全取代 HP-48,因为 x48 的键盘接口不是很好。因而,大部分时间你需要用鼠标在屏幕上点来点去,很影响速度。

因为 x48 是一个模拟器,所以它实际上可以做任何 HP-48 可以做的事情。我能找到的最新的 x48 版本是 0.4,已经很多年了。不过它工作得非常好,没有任何问题。版本 0.4 需要一个小 patch 才可以在现代的 Linux 上编译通过。你可以在下面的 "x48 详细网页" 上面,你可以找到原版手册、一些 ROM 镜像,补丁和一些进阶指导。

名称:x48
主页:ftp://www.sunsite.unc.edu/pub/linux/system/emulators/
Details about the x48: "x48 详细网页", 软件、文档和ROM 镜像 (文章末尾的链接中可以找到更多 ROM 镜像)
许可证:GPL, 但你需要 HP 的 ROM 镜像

 

hp67

hp67 拥有真正的 hp67 计算器的全部功能,但它是完全重写的版本,与 hp67 的代码独立。它不是一个模拟器。它的界面有点原始(ncurses),但功能非常不错。而且它还有 man page 格式的完善的文档(看下面的链接)。你甚至可以像用 hp67 一样对它进行编程。要开始编程,输入 "prog",然后开始编程,以一个标号开头,并用 "immed" 命令退出编程模式。运行程序只要输入 "run labelname" 就可以了。这有一个例子。这个例子没有什么用,就是计算一下平方,不过它告诉了你如何用 hp67 编程:
prog (enter programming mode)

label myprg
ENTER
*
rtn
immed (end of programming mode)
现在可以用 "run myprg" 计算 x^2.

名称:hp67
手册:The hp67 man-page in html format
主页:http://www.ibiblio.org/pub/Linux/apps/math/calc/
许可证:GPL

 

kalc

kalc 也从命令行运行。它使用了 readline 库,有一些命令行补全功能。它可以进行实数和复数以及无限大整数和任意精度实数的运算。它的文档同样很不错(参见下面的 pdf 文件)。

名称:kalc
手册:kalc.pdf 230K
主页:http://sourceforge.net/projects/kalc/
许可证:GPL

 

dcalc

dcalc 也是一个基于 ncurses 的终端窗口中运行的计算器。它没有提供 hp67 那样的可编程性,但进行十六进制、二进制和十进制的转换相当不错。

名称:dcalc
主页:http://www.ibiblio.org/pub/Linux/apps/math/calc/
许可证:GPL

 

rpncalc

rpncalc 也是一个终端窗口中运行的 RPN 计算器,但它不是基于 ncurses 的。所以 rpncalc 看起来和 dc 命令非常相似。它实现了 HP28 的功能。因而,rpncalc 比 dc 强很多。它可以处理复数、向量和矩阵。rpncalc 是 Debian 发行版的一部分。
名称:rpncalc
主页:http://www.gnu.org/directory/science/math/rpncalc.html
许可证:GPL

 

gdcalc

gdcalc 是一个使用 gtk 库的漂亮的图形界面计算器。你可以把它设置成 RPN 输入方式和普通的代数输入方式。它提供了 4 种模式:科学计算、经济计算、统计和一种称为编程模式的数制转换模式。不过这种模式不提供任何对计算器编程的功能(类似 x48 和 hp67 的编程功能)。它可以满足你对一个桌面的计算器的任何需求。

要使用单位换算功能,你需要安装 unit(1) 命令(来自 ftp://ftp.gnu.org/gnu/units/, 已经被大部分 Linux 发行版集成于其中了)。
名称:gdcalc
主页:http://bhepple.freeshell.org/dcalc/unix/
许可证:GPL

 

grpn

这是一个也使用 gtk 库的 RPN 计算器。它提供了基本的代数和三角函数。
名称:grpn
主页:http://lashwhip.com/grpn.html
许可证:GPL

 

galculator

这个计算器的功能和 gdcalc 非常相似。你可以使用 RPN 或代数输入法。它支持二进制、十六进制和十进制的数制转换功能,并有全部基本科学函数。
不过它使用了非常新的 gtk 库 (gtk 2.2)。这样如果你在较老的 Linux 系统里安装它就会遇到一些麻烦。但它确实设计得很不错,界面非常友好。
名称:galculator
主页:http://galculator.sourceforge.net/
许可证:GPL

 

calcoo

calcoo 是一款非常老的计算器。你可以把它设置为 RPN 或代数模式。它适合进行基本的代数和三角计算。
名称:calcoo
主页:http://calcoo.sourceforge.net
许可证:GPL

 

Kalk

Kalc 是一个简单的(但是 free)Palm 掌上电脑用的 RPN 计算器。它不运行在 Linux 下,不过因为它是 GPL 的(对 palm 软件来说非常罕见),我就把它列在这里了。
名称:kalk
主页:http://www.klawitter.de/palm/kalk.html
许可证:GPL

 

GCalc

GCalc 不是一个 RPN 计算器,不过它非常非常有用。它是一个基于 Java 的在线的图形化计算器。要使用它,你需要 mozilla 或 netscape 的 java 插件和 blackdown.org 的部分 jre 包。你可以用 GCalc 直接在一个支持 java 的浏览器里画图。
名称:GCalc
主页:http://humblestar.net/GCalc/
许可证:GPL
 

结论

你在这里能看到各种各样的 RPN 计算器。可能还有更多的,不过上面列出的全都是在 GPL 下发布的。  

参考资料

 

对这篇文章发表评论

每篇文章都有各自的反馈页面。在这个页面里,您可以提交评论,也可以查看其他读者的评论:
 反馈页面 

<--, back to the index of this issue

主页由LinuxFocus编辑组维护
© Guido Socher, FDL
LinuxFocus.org
翻译信息:
en --> -- : Guido Socher (homepage)
en --> cn: 王旭 <wangxu(at)linuxfocus.org>

2004-05-18, generated by lfparser version 2.46