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

现在最常用到电子计算器的场合就是商店、银行等地方,这些地方用的计算器都是简单的“卖菜机”;然后还有一个场合就是学生的学具,这个是函数型科学计算器和图形计算器的地盘;当然还有不少计算量相对不大的科研或工作场合也是需要使用科学计算器的。而这些场合的性质也决定了今天卖得出去的计算器都是廉价且上手容易的,典型代表如卡西欧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简介的更多相关文章

  1. xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误

    xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误 2013年10月28日 ⁄ 综合 ⁄ 共 233字 ⁄ 字号 小 中 大 ⁄ 评论关闭   在项目中用模拟器 ...

  2. monkey工具使用中遇到的问题之一:手机模拟器中的部分应用出现网络无法连接

    问题描述: 手机模拟器中的部分应用出现网络无法连接,但是比如:浏览器即可以正常访问网页 解决方法如下: 1.以管理员身份进入到cmd中,以WIN10为例 ,在电脑左下角点击鼠标右键就可以看到 注意: ...

  3. 向Android模拟器中批量导入通讯录联系人

    使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件 ...

  4. OSG中的示例程序简介

    OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...

  5. ThinkPHP中的三大自动简介

    ThinkPHP中的三大自动简介 文章TAG:thinkphp 自动简介 时间:2014-08-23来源:商业源码网 作者:源码库 文章热度: 186 ℃ 过期已备案域名,注册就能用!终身VIP会员, ...

  6. cocos2d-x 在xcode IOS模拟器中 开启IOS多点触控

    在初始化代码中,开启当前层接受触摸 this->setTouchEnabled(true); 在AppController.mm文件中,设置开启多点触控 在- (BOOL)application ...

  7. android编程常见问题-程序在模拟器中不显示

    新手编程常见问题: 问题表现:程序运行成功,但是在模拟器中不显示 解决办法:检查项目版本和模拟器版本是否匹配或兼容,如果不匹配,选择和模拟器版本一致 项目版本:右键-Properties-androi ...

  8. Android 模拟器中sdcard操作

    1.  在模拟器中创建sdcard目录,方法如下: 1. mksdcard命令 用cmd进入SDK的Tools目录,执行mksdcard命令.会出现如下帮助信息 我们可以看到sdcard image支 ...

  9. OSG中的示例程序简介(转)

    OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...

随机推荐

  1. linux下activemq安装与配置

    一.下载:apache-activemq-5.14.0-bin.tar.gz http://activemq.apache.org/activemq-5140-release.html   二.安装a ...

  2. linux内核中断之看门狗

    一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误:在Device Drivers /Watchdog ...

  3. 多个DbContext修改同一张表测试

    多个DbContext修改同一张表经测试是可行的. UserStore和DepartmentStore都可以向SysLog表写入数据 用多个线程同时通过UserStore和DepartmentStor ...

  4. Array.prototype.slice.call()方法详解

    在很多时候经常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面讲一下其原理: 1.基本讲解 1.在 ...

  5. Javascript高级程序设计复习——第五章引用类型 【原创】

    5.1  Object类型 1:创建Object实例的两种方式 ①new构造法 var obj1 = new Object(); 注意大写!不传递参数时可以省略圆括号 obj1.hehe = &quo ...

  6. Android 增强版百分比布局库 为了适配而扩展

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46767825: 本文出自:[张鸿洋的博客] 一 概述 上周一我们发布了Andr ...

  7. input 去掉点击后出现的边框

    添加属性 :focus{outline:none} 就可以去掉默认点击时,边框会出现的蓝色边框. :focus 选择器用于选取获得焦点的元素.提示:接收键盘事件或其他用户输入的元素都允许 :focus ...

  8. python实现简体中文和繁体相互转换

    1. opencc-python 如果目录上的链接被屏蔽了,请手动复制 https://pypi.python.org/pypi/opencc-python/ 首先介绍opencc的python实现库 ...

  9. 再谈DOMContentLoaded与渲染阻塞—分析html页面事件与资源加载

    浏览器的多线程中,有的线程负责加载资源,有的线程负责执行脚本,有的线程负责渲染界面,有的线程负责轮询.监听用户事件. 这些线程,根据浏览器自身特点以及web标准等等,有的会被浏览器特意的阻塞.两个很明 ...

  10. .net core使用App.Metrics+InfluxDB+Grafana进行APM监控

    一.InfluxDB 1.下载InfluxDB wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.2.x86_64.rpm 2 ...