计算器模拟器中的情怀——Free42简介

Posted jz3025

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算器模拟器中的情怀——Free42简介相关的知识,希望对你有一定的参考价值。

说到情怀,我首先想聊几句电子计算器的历史。电子计算器这种东西,在最近这几十年的人类发展中,曾经起到过相当重要的作用,尤其是在七十年代到九十年代初这个时期,大型的全功能电脑贵得要命,有钱有时也买不到,而集成电路的发展又让小型电子计算器的制造有了可能性,所以当时很多计算工作都交给这种体积适中而且功耗小的设备了,因为用这些设备工作起来比那种手摇式的计算装备要快得多。记得有个人说过,七十年代国防工作算弹道用算盘打得太慢,满足不了需要,于是山东某厂用晶体管做那种体积是台式机几倍的大计算器,过了几年有人从日本带回来巴掌大的卡西欧,于是巨无霸停产。后来随着电脑慢慢普及,真正计算密集的工作和编程较为复杂的工作都交给电脑来做了,所以电子计算器这种东西也被慢慢边缘化。

现在最常用到电子计算器的场合就是商店、银行等地方,这些地方用的计算器都是简单的“卖菜机”;然后还有一个场合就是学生的学具,这个是函数型科学计算器和图形计算器的地盘;当然还有不少计算量相对不大的科研或工作场合也是需要使用科学计算器的。而这些场合的性质也决定了今天卖得出去的计算器都是廉价且上手容易的,典型代表如卡西欧82、991还有全球漫天飞的仿制品。其实这些计算器虽然外观塑料感,购买容易,但是功能上是一点不差的,除非卡西欧等厂商为了甘当学具而为某些国家砍掉某些功能。而且得益于半导体技术的进步,普遍比老式计算器快很多,如果这些计算器拿到八十年代,或者更厉害一些的彩屏图形计算器拿过去,我相信使用者们也会接受。

但是计算器的黄金年代不像现在这样。比如1982年的HP-15C高级编程型科学计算器打的广告是“a Problem Solver”,附带两本厚书作为说明书,详细列举了很多科研场景和工作场景如何用计算器计算。那时候的计算器液晶屏用料节省,芯片速度慢,但是外壳什么的铝合金和高档塑料是家常便饭,而且通常高级些的计算器不配保护壳而配皮套。由于那个时代的计算器为工作设计而不为教学设计,所以上手会困难一些,但是用熟练之后效率比现在所谓的自然显示上下左右键按得飞起的学具要高不少,而且只要能实现的功能都会想尽办法实现,不会像学具那样砍功能。

说了好多,下面开始说下这篇文章我想介绍的东西:Free42模拟器和与之对应的HP-42s计算器。这个HP-42s是惠普纯RPN计算器的经典之作,推出于1988年,90年代停产,基本上它停产之后计算器就没落为学具了。它由官方给出的定位是笨重的几款计算器的代用品和HP-15C的继任者。由于这一版计算器基本是非图形纯RPN计算器中功能最完善合理的,所以在停产后在收藏者手中很火,现在基本上一台二手货价格500刀起。所以有爱好者编写了Free42这款模拟器,这是完全免费而且开源的软件,还能跨平台运行在电脑和手机上,在手机上时配合震动反馈,使用手感不输真机。它可以在如下网址找到下载和支持:

http://thomasokken.com/free42/

它是有一本操作手册的,地址是这个,不过是英文的:

http://thomasokken.com/free42/42s.pdf

操作手册三十多页,学习不算困难,不过为了让更多人了解一下这个模拟器,下面我还是写点中文简介。

计算器界面是这样的,无论手机或电脑都一样:

 技术分享图片

如果觉得它浪费屏幕的话,它可以脱掉真机皮肤:

 技术分享图片

现在它比瘟到死自带的计算器都小了,然而功能比它要强几百倍。

前面说了几次RPN,RPN就是这款模拟器最“情怀”的地方了。RPN简单地说就是先输入操作数,再输入运算符,运算在运算符输入之后自动进行,而且输入输出全都借助栈来完成。这种输入方式的好处是可以不用括号和等于号键就完成任何计算,并且计算顺序不会出错。因为这个原因,它熟悉起来是有一定的学习成本的,但是用熟练之后见到长长的式子或者需要输入的长长的程序,手指就能条件反射般地快速盲打输入,就像打算盘那样。你要是拿个今天的自然显示计算器试试,上下左右键都按到怀疑人生。而且数值不同的话,RPN计算器上除了输入数字不同之外别的按键顺序都完全相同,而带上下左右的计算器就不行,所以这种RPN计算器可以做按键式编程,就是只通过记录击键操作就能解决各种问题,而现在的图形计算器基本上都得像BASIC那样通过指令编程。这种按键式编程在当时被当作一种高效的程序语言,而且42s的这种“语言”还是图灵完备的,理论上是可以解决所有计算问题的,当然是理论上,复杂问题实现起来还是不如那个年代的Fortran等顺当,否则也是图灵完备的Brainf*ck岂不是更简洁:-)更多关于RPN的信息可以Google下。

那么它有什么功能呢,首先是加减乘除指对函数三角函数等科学计算器都有的:

 技术分享图片

左边是算式,右边是计算器按法,初看反人类,熟练之后就飞快,无视括号什么的。

计算器支持复数数域的全部计算,比如虚数开方、欧拉公式啥的都可以算。

然后就是排列组合、统计、矩阵等功能,统统都有。不过在小屏幕上算矩阵真的很难受,而且想想上一代15C在十位数字显示屏上算矩阵就酸爽。不过大大的矩阵求逆之类还是比手算快很多的。这个计算器可以储存无限个变量,用STO键就可以,而卡西欧991之类只有可怜的9个。

 技术分享图片

这款计算器是菜单式的,上面展示的是排列组合的菜单。在那个年代这种点阵式显示屏是非常奢侈的,而计算器的大多数功能都被折叠进了菜单,在菜单展示时,计算器上方的一排键会暂时失去原始功能,而和菜单功能上下对应。

还有RPN计算器特有的XY互换、栈向下滚动、Last X寄存器等等,这些是飞速输入的必备品:

 技术分享图片

计算器的重点功能是程序编写:

 技术分享图片

计算器用了一种很奇妙的方式在这么小的小设备上实现了一种只记录击键就图灵完备的语言。这种语言编写的程序在当年拯救了太多重复计算量大的工作者。它写的程序是这个画风:

 技术分享图片

一眼瞅过去还以为是汇编,不过它比那个简单多了。凡是现有的按键,只要按一下就自动写一行。那种变量名还是需要手工输入的,计算器采用了一种很聪明的字母输入方法,在这么少的按键的情况下还能较快地输入字母,就是Shift + Enter后展示这个菜单:

 技术分享图片

字母被折叠起来了,通过两次按键就可以选择所需的字母,实测这个比那种字母满键盘的图形机并不慢,而且图形机记指令恶心死人,而这个指令不用记,按键就行。

这个语言在历史上被很多人充分开发过,比如八个皇后问题的代码是这个画风(部分代码):

 技术分享图片

然后这段代码会在小小的屏幕上画图:

 技术分享图片

技术分享图片

而且居然有人做出菜单来,像下面:

 技术分享图片

另外这个计算器是可以牛顿法解方程和计算数值积分的,输入方法非常奇葩,先定义一个变量,然后把这个变量像炒菜一样通过RPN的按键规则按成需要积分或求解的式子结果,然后把这个编成一段程序,然后求解,用这个方法代替公式编辑。在那个年代,这可能已经是低成本计算数值积分的最好的方法了,15C的说明书把它称为“苦力”。

就像这样“炒菜”:

 技术分享图片

更好玩的是,这个计算器当年真机是支持红外无线打印的,把数据可以印在热敏纸上,弥补屏幕分辨率的不足,当然打印机要从惠普公司另买。想想当年,热升华打印机都比点阵液晶屏便宜,而今天一片黑白液晶屏也就几毛钱。数据印出来是这样的:

 技术分享图片

当今的很多图形计算器估计要被这八十年代的货秒了,不过打印程序编起来也很复杂。这个模拟器也有打印功能,能把打印的东西印成图片保存,文字还可以印成文本文档。

更多的东西没啥时间说了,如果感兴趣的话可以阅读下上面的英文操作手册。这个计算器尤其适合放在手机上当情(zhuang)怀(bi)使用,当别人都盯着新式塑料科学计算器按上下左右按到头大时,在手机上点开这个模拟器,眼睛不看屏幕一套操作,手机嗡嗡嗡地震,放下手机就是正确答案,那效果~

以上是关于计算器模拟器中的情怀——Free42简介的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 686A Free Ice Cream (水题模拟)

使用无脂肪框架进行单元测试

Unknown failure: Error: java.lang.IllegalStateException: No storage with enough free space; res=-1

成果作物生长发育模拟图像识别技术及应用

iFogSim 简介和其组件

操作系统——动态分区分配方式模拟