计算器模拟器中的情怀——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简介的更多相关文章
- xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误
xCode5 在ios7模拟器中出现__cxa_throw _pthread_exit错误 2013年10月28日 ⁄ 综合 ⁄ 共 233字 ⁄ 字号 小 中 大 ⁄ 评论关闭 在项目中用模拟器 ...
- monkey工具使用中遇到的问题之一:手机模拟器中的部分应用出现网络无法连接
问题描述: 手机模拟器中的部分应用出现网络无法连接,但是比如:浏览器即可以正常访问网页 解决方法如下: 1.以管理员身份进入到cmd中,以WIN10为例 ,在电脑左下角点击鼠标右键就可以看到 注意: ...
- 向Android模拟器中批量导入通讯录联系人
使用adb命令向Android模拟器中批量导入通讯录联系人的方法: 使用adb提供的命令, 可以非常方便地从PC中将通讯录批量导入android模拟器中. 首先要先准备好固定格式的vcf文件, 该文件 ...
- OSG中的示例程序简介
OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...
- ThinkPHP中的三大自动简介
ThinkPHP中的三大自动简介 文章TAG:thinkphp 自动简介 时间:2014-08-23来源:商业源码网 作者:源码库 文章热度: 186 ℃ 过期已备案域名,注册就能用!终身VIP会员, ...
- cocos2d-x 在xcode IOS模拟器中 开启IOS多点触控
在初始化代码中,开启当前层接受触摸 this->setTouchEnabled(true); 在AppController.mm文件中,设置开启多点触控 在- (BOOL)application ...
- android编程常见问题-程序在模拟器中不显示
新手编程常见问题: 问题表现:程序运行成功,但是在模拟器中不显示 解决办法:检查项目版本和模拟器版本是否匹配或兼容,如果不匹配,选择和模拟器版本一致 项目版本:右键-Properties-androi ...
- Android 模拟器中sdcard操作
1. 在模拟器中创建sdcard目录,方法如下: 1. mksdcard命令 用cmd进入SDK的Tools目录,执行mksdcard命令.会出现如下帮助信息 我们可以看到sdcard image支 ...
- OSG中的示例程序简介(转)
OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...
随机推荐
- 自动化测试--protractor
前戏 面向模型编程: 测试驱动开发: 先保障交互逻辑,再调整细节.---by 雪狼. 为什么要自动化测试? 1,提高产出质量. 2,减少重构时的痛.反正我最近重构多了,痛苦经历多了. 3,便于新人接手 ...
- ORA-12737: Instant Client Light: unsupported server character set CHS16GBK
当使用Navicat Premiun 英文版连接oracl时可能会报ORA-12737: Instant Client Light: unsupported server character set ...
- [爬虫]BeautifulSoup4
1.Beautiful Soup的简介 Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函 ...
- Python中的r+和a+
问题描述 我打算更改文件user_list2中的内容, 本来的想法是加一个temp 文件. 先把user_list2的内容读取并修改后写入temp, 之后再写回来. 但是在读取内容并修改后写入temp ...
- python3:操作excel文件
前提:自动化接口测试中,可以将用例放在excel中管理.结合实际情况讲解如何操作excel文件 1.安装xlrd:pip install xlrd 2.导入模块:import xlrd 3.打开Exc ...
- vector作为函数返回类型
在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...
- CAD中用户选择实体
在CAD的很多操作中都会有需要用户选择实体的时候,这里将我最近项目中用到的方法分享一下,程序原意是希望用户选择一个单行文本或者多行文本,并返回所选文本的内容,直接上代码: CString CPaint ...
- [UOJ#207. 共价大爷游长沙]——LCT&随机化
题目大意: 传送门 给一颗动态树,给出一些路径并动态修改,每次询问一条边是否被所有路径覆盖. 题解: 先%一发myy. 开始感觉不是很可做的样子,发现子树信息无论维护什么都不太对…… 然后打开题目标签 ...
- Python3 ——斐波那契数列(经典)
刚刚学习了 斐波那契数列,整理一下思路,写个博文给未来的学弟学妹参考一下,希望能够帮助到他们 永远爱你们的 ----新宝宝 经历过简单的学习之后,写出一个比较简单的代码,斐波那契数列:具体程序如下: ...
- Python安装和配置
在我厂呆了快一年,终于等来了转岗机会,而且现在正在调动到新成立的AI战略部门,心里无比欣喜和激动.自己作为一个小白,终于有机会踏入AI领域,离自己的梦想更近了一步,个人感到无比的幸运,仿佛天生就有上天 ...