【CSDN 编者按】PCalc 开发者
James Thomson 表示,只要还能编写代码,我就会一次又一次地重写 PCalc。
原文链接:https://pcalc.com/mac/thirty.html
未经允许,禁止转载!
作者 | James Thomson 译者 | 弯月
责编 | 王子彧
出品 | CSDN(ID:CSDNnews)
PCalc 二十周年之际,我曾写过一篇文章(https://pcalc.com/mac/twenty.html),一眨眼又过去了十年,如今 PCalc 已经三十周岁了!
现在,很多人都在各色设备上使用 PCalc,却没有意识到这款苹果应用的年龄远比他们想象中长得多。对于有些人来说,这款应用甚至比自己还要年长。
截止到 2022 年 12 月 23 日,PCalc 就 30 岁了,所以我想借此机会回顾一下过去三十年中这款应用的发展历程。
起源
PCalc 诞生于 1992 年,但实际上最初它是为中央供暖控制面板设计的。
当时我是英国格拉斯哥大学的一名学生,就读于计算机科学专业。我选了一门人机交互课程,学习如何构建良好的用户界面。这门课程的一个项目是为中央供暖系统设计一个模拟控制面板,可用于控制温度、单独开关暖气和热水等等。我们需要使用 HyperCard(为苹果 Mac 和 Apple IIGS 电脑开发的应用程序和编程工具)技术来实现这个应用。可悲的是,如今该技术已经销声匿迹了,但我的设计几近无可挑剔。
我认为,用户界面看上去必须真实,所以我手工制作了一套 1 位的黑白界面来模拟 LCD 数字和一些可以按下去的小按钮。可见仿制品从很早以前就有了。
大概在同一时期,我们开始使用 THINK Pascal 编程,我也开始利用业余时间探索 Macintosh 编程 API。最终,我发现自己并不会成为下一个 Jean-Michel Jarre(法国著名电子音乐艺术家,电子音乐先锋),但与旧款的 Atari 的相比,我更喜欢Mac的用户界面。所以,我卖掉了所有的合成器(比如 Roland Juno-106)和 Atari ST,然后买了一台最新的 Mac 经典款——4 兆内存、40 兆硬盘和 512x342 分辨率的 1-bit 显示器。
于是,我开始寻找一个小项目来学习如何在这台新的 Mac 机器上编程。后来,我想起了以前为控制面板设计的图形界面,我认为我也可以设计一款相同的计算器。
当时,Mac OS 内置的计算器非常简陋,所以我决定编写一款能够执行二进制和十六进制运算的计算器,用以辅助我编程。而这正是 PCalc 诞生的契机。我买了《Inside Macintosh》这本书的 1~3 册,然后坐下来认真研读。那时,我们还没有互联网,所以这几本书就是我所有的资料。最终,我编写好了内部逻辑,并围绕着这段逻辑构建了一个用户界面。由于当时 System 7 还很新,所以我又买了厚厚的第六册,想看看系统究竟又哪些变化。我觉得我不需要中间的 4~5 册。
接下来,我需要给这款应用程序起个名字,最后我选用了 PCalc,即 Programmers’ Calculator 的缩写。事实上,这确实是一款面向程序员的计算器。而那个程序员就是我。我根据自己的需求编写了这款应用程序。后来,我将这款应用程序分享给了课上的几个朋友,并在接下来的六个月里慢慢改进它,直到它变得越来越实用,而不仅仅是辅助编程。另外,我还添加了一个彩色界面,尽管我的 Mac 机器还无法显示颜色。
有关原始版本的更多屏幕截图,请参见此处(https://pcalc.com/mac/screens.html)。原版的《Read Me》在这里(https://s3.amazonaws.com/tlasystems/PCalc - Read Me First.pdf)。
1992 年 12 月 23 日,我决定将它作为礼物,免费发布给全世界。
当时是 1992 年,FTP 站点非常热门。我们班发现了一款名叫 Fetch 的应用程序——当时这款应用程序的传播速度非常快,我们都利用它来下载其他应用程序。很快,我发现有一个名叫 Info-Mac Archive 的全球镜像站点,我可以将自己的应用发送到这个网站,然后就能自动传播到全世界,供所有人下载。于是,我仔细阅读了传送指南,并打包上传了 PCalc。
下面是我打包上传 PCalc 后收到的电子邮件:
Date: Wed, 23 Dec 92 17:41:10 GMT
From: thomsonj <thomsonj@dcs.gla.ac.uk>
Subject: [*] PCalc 1.0 Submission
Enclosed is a binhex file containing a submission for your archives.
PCalc is a neat simulation of a programmable scientific calculator.
Please note that it *requires* System 7.x.x.
If you use System 6.0.x or earlier, here is what you are missing:
Programmable functions via a simple mini language.
System 7.x.x savvy:
Can be controlled & programmed via Apple Events.
Balloon Help for every button, menu & dialog item.
Resolves Aliases.
32-bit clean.
MultiFinder aware.
Large 16 3 digit display.
Hierarchical menu of user functions.
Includes many functions for converting between different weights and measures.
Quick, one click, conversion between decimal, hexadecimal and binary numbers.
AND, OR, NOT, XOR, ROL, ROR and other extra functions in hex and binary mode.
30 named user constants, 10 for each mode.
'Undo' of any action.
Enhanced graphics when viewed on a 256 colour or 16 gray (or better) screen.
Colour graphics and help screens are stored in separate plug-in extensions.
Runs on any Mac with System 7.x.x or greater, with or without Color Quickdraw.
And of course it's freeware. If you only download one calculator this year, give this a try...
[Archived as /info-mac/app/pcalc-10.hqx; 122K]
后来,我收到了很多非常不错的反馈,在之后的一年里我不断优化 PCalc。1993 年版本 1.0.2 发布,公告如下:
Version 1.0.2 fixes some bugs that caused problems on colour macs, notably
those with 16 and 24-bit displays. Vast speed increases too on some 8-bit
screens. Shouldn't turn bright orange at inconvenient moments either. Some
other silent bug-fixes and support for the ',' key as a decimal separator.
(More importantly, there are a ton of new easter eggs ;-)
的确,我真的应该将《Inside Mac》的 4~5 册买下来,学习如何处理颜色。
至于公告中提到的彩蛋(easter eggs),其中之一是如果你将 42 放入三个特定的内存寄存器,然后点击屏幕,就会播放 Douglas Adams(英国广播剧作家和音乐家,尤以《银河系漫游指南》系列作品出名)的一段录音:“Don't Panic!”(不要惊慌!),同时屏幕上还会显示我最喜欢的《银河系漫游指南》中的 一句台词:
顺便说一句,不久之后,Douglas 成为了我的另一个应用程序 DragThing 的 Beta 测试员。不过,我从来没有问过他如何看待我在 PCalc 发布公告中引用他的台词。PCalc 的图标中总是有一个 42,每次截屏时,我都会在屏幕上显示一个 42,因为 42 是《银河系漫游指南》中的“终极答案”。我曾有幸在 WWDC 上与 Douglas 握过手,他也认出了我并示以微笑。我本来计划在下一次的 WWDC 中再次与他见面,但他却在这之前便匆匆离世了,就在几周前,我们还互发过邮件,这件事对我的打击很大。这就是 PCalc 的图标中总是有一个 42 的原因——为的是向他致敬。我不太了解他,但他总是对我的工作充满热情,这对于他的一个忠实粉丝来说,可谓意义非凡。
不管怎么说,在我攻读学位期间,PCalc 已经走向了全世界。在那之后,我一直忙于其他事情,首先是编写 DragThing,后来又在苹果找了一份工作,负责 OS X 的 Finder 和 Dock 的开发,当然那又是另一个故事了。
2000年,我回到了格拉斯哥,又开始寻找另一个小项目来学习新的Metrowerks CodeWarrior 开发环境以及 PowerPlant 应用框架。尽管 PCalc 已经七年未曾更新,但我仍然会收到 PCalc 的反馈邮件,而且这个项目的大小非常适合快速构建实用的东西。于是,PCalc 2 诞生了。我将核心的 Pascal 运算代码转换成了 C,并用 C 编写了一个新的用户界面。PCalc 2 仍然可以在老式的 68K 机器上运行,而且不仅能在 PowerPC 机器上运行,还可以在经典款的 Mac OS 和新的 OS X 上运行,而且两者都有合适的用户界面。