CSDN 編者按】PCalc 開發者 James Thomson 表示,只要還能編寫代碼,我就會一次又一次地重寫 PCalc。
原文鏈接:https://pcalc.com/mac/thirty.html
未經允許,禁止轉載!
現在,很多人都在各色設備上使用 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%20-%20Read%20Me%20First.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 上運行,而且兩者都有合適的用戶界面。
此外,鑒于 Dragthing 備受好評,我決定 PCalc 或許應該收取一點費用。過去七年中,我一直未更新 PCalc,原因之一就是因為初始版本完全是免費的,也許向用戶收取費用將成為我不斷更新 PCalc 的動力。
在 2001 年的 WWDC 上,我把名片塞到了一個新面孔 Phil Schiller 的手中,并向他介紹了 PCalc。之后,我記得他的助手給我發了一封電子郵件,索要PCalc 的序列號,我很高興地發給了她。后來,我了解到史蒂夫·喬布斯使用了 PCalc,并據稱并不是特別討厭它。Steve Wozniak 當年也買了很多份 PCalc。
直到 2002 一月,蘋果的 OS X 還是未能推出一款像樣的計算器(可能有人會說即便是現在也沒有),而新的 iMac G4s 即將面世,蘋果聯系到了我,并要我授權在美國發售的 iMac 上加入 PCalc。雖然我們達成協議每份 PCalc 只收取很小的一筆版權費,但哪怕是再小的數字乘以近百萬份也是非常可觀的!
遺憾的是,這種合作并沒有持續多久,Mac OS 10.2 就發布了,隨之而來的是一個蘋果新編寫的科學計算器。有傳言說,蘋果公司的某個高層得知他們向一位未曾蒙面的前蘋果員工支付了版權費。但是,我無法證實這一點。但不管怎樣, PCalc 沒有再被捆綁出售,這件事也就告一段落了。
重寫 PCalc
2005年,我再次重寫了 PCalc。這一次的目的是學習了新的 Carbon HIToolbox API,這是一種完全不同的編程方式,有點像 PowerPlant,只不過是蘋果出品的。
PCalc 3 擁有當時風靡一時的拉絲金屬外觀,深受大家喜愛。此外,還有一個全新的 Dashboard Widget,雖然核心代碼相同,但用戶界面是用 HTML 和 JavaScript 編寫的。Widget 在那個年代可是代表著未來。
不過,此次更新我并沒有收費,因為很久沒有發布新版本,我有點愧疚。
時值 2006 年,我想到 PCalc 3 的項目規模非常適合移植到英特爾機器上,而且我還可以順便學習如何移植。我拿到了一臺英特爾的 Mac 原型機,構建了一個英特爾和 PowerPC 通用的可執行文件,等準備在一月中旬推出。在隨后的幾年中,Mac 版推出了許多更新。
但隨著 2007 年 iPhone 誕生,以及 2008 年蘋果應用商店的推出,你猜猜看這個新平臺上推出的理想應用是哪款?
我在 PCalc Dashboard Widget 版代碼的基礎之上,花了一兩天的時間就在 iPhone 跑通了。以此為起點,我又使用 Cocoa 構建了一個全新的界面。PCalc 搖身變成了一款觸屏便攜式設備的完美應用,它從一款在屏幕上用鼠標點擊按鈕來操作的模擬計算器,變成了你手中的一臺近乎真實的計算器,感覺再也不像是假的了。
PCalc 在英特爾 Mac 發布后的第一天就入駐了蘋果商店,同一天大約有 400 多款應用同時推出,而它的表現非常優秀。最終,我們的大部分收入均來自 PCalc,而不是 DragThing,而且主要來自 iOS 而不是 Mac OS,所以我們后續的很多工作都優先 iOS 版本,然后再移植回 Mac。我甚至將 Mac 上的 DragThing 主題引擎移植到了 iPhone 版的 PCalc 上。將一個在 Mac Pro 上運行的繪圖引擎放入手掌大小的界面中,這在當時看來是一件不可思議的事情。
當然,5318008-gate(https://tla.systems/blog/2009/09/30/pcalc-prevents-iphone-profanity/)是一個小意外,大家見諒。
后來 iPad、視網膜顯示屏、更多 iPad、更高版本的 iPhone,以及其他眾多設備陸續推出,而我們的 PCalc 不僅在 Mac 應用商店中推出,而且還支持視網膜顯示屏,以及 iOS 版本的許多功能。
事實上,PCalc 4 在 2014 年在 Mac 應用商店中獨家推出。
在 Mac Catalyst 出現之前,這個新版本實際上是基于 iOS 源代碼的,這降低了開發難度,因為我不必反復編寫所有代碼。此外,我將核心代碼分解成了一個單獨的可移植塊,這樣就可以在其他地方使用了。
第一個使用這個新的計算引擎的是 iOS 和 macOS 通知中心的迷你計算器,你可以使用它進行快速計算。
這個小部件被蘋果推薦,而且沒有發生任何不愉快的事情。那段時間我的壓力很大,在宣傳的影響下,銷售額大增,所以我花大手筆買了一臺 Retina 5K iMac,并度過一個愉快的假期。
第二次使用是 2015 年歷史上最小的 PCalc。
蘋果手表版的 PCalc 是一次有趣的練習,嘗試如何在如此小的屏幕上嵌入完整的計算器界面。當然,80 年代我有一塊計算器手表,所以我就自己制作。
相比之下,同年我還推出了歷史上最大的 PCalc,這一次是在蘋果電視上。
雖然我不清楚是否有人要求在電視上安裝計算器,但當時我決定凡是蘋果允許的地方,我都將裝上 PCalc,只是出于固執。
2016 年,蘋果增加了一個功能,允許 iOS 應用提供替代圖標,于是我開啟了一個小項目來制作一些新圖標。那段時間里,我做了很多這樣的項目來讓自己保持理智,至少可以分散注意力。
到目前為止,我已經制作了 50 多個圖標,包括十幾個驕傲的旗幟。那一年,我了解了很多不同驕傲旗幟的起源!
升級為應用
與此同時,關于蘋果制造 AR/VR 耳機的謠言四起,我決心學習 3D 圖形學。大學時期,我曾修過一門課程,但在接下來的 22 年里,情況發生了一些變化。
不管怎樣,PCalc 的 About 頁面開始有點失控了。最初只是一個 3D 物理玩具,你可以向 PCalc 圖標扔香蕉,最終變成了一個小型駕駛游戲,榮登全球排行榜,甚至還有一個物理獎杯。
如今,這款游戲已變大變強,成為一個單獨的應用。
2017年,PCalc 獲得了一個吉祥物和一套 iMessage 貼紙——David Lanham 用 Pascal 繪制了一個可愛的熊貓。
有一段時間,我很喜歡 David 在 Facebook 發布的各種貼紙。不過他從來沒有畫過熊貓(除了上面的紅色熊貓),我覺得我可以花錢讓 David 為我制作一套貼紙,然后放入 PCalc。
你可能會注意到,About 頁面的屏幕截圖中有一些骰子。2019 年,我也在網上玩 D&D,我的好朋友 Jason Snell 建議我應該為 iPhone 做一個骰子應用。于是,PCalc 的第一個衍生產品誕生了!
Dice by PCalc 從動手到在應用商店發布,我花了兩周的時間,并借鑒了 PCalc 的 About 頁面上的大量代碼和概念。
雖說是只花了兩周的時間,但我并沒有就此止步。后來,整個項目不僅過度設計,而且大幅拖延。我設計了五十多套骰子,如今甚至有拍照模式。無需多說,如今 Mac、蘋果手表和蘋果電視上都有這款游戲。這也成為了我探索蘋果新技術(比如 Mac Catalyst 和 SwiftUI)的試驗臺,同時也讓我看到將來 PCalc 該如何發展。
我們說回 PCalc。2020 年,蘋果的 iOS 和 Mac 上推出了一種新型的小部件——非交互式小部件。這意味著我不能使用這種技術構建計算器了。難道是因為我的原因嗎?或許吧。如今, iOS 上仍然保留了舊的小部件,但 Mac 上已經完全消失了。所以我需要將整個小部件移到別處,并將所有代碼移植到菜單欄中。
以上就是迄今為止我們付出過的所有努力。2022 年 PCalc 內部進行了很多改動,添加了在多個窗口中支持多個計算器,該功能首先在 iPadOS 上推出,并有望很快登陸 Mac。但是許多核心的數學代碼仍然與我在 1992 年編寫的第一個版本非常相似。
我敢說,只要還能編寫代碼,我就會一次又一次地重寫 PCalc。我希望你也能像我一樣,在過去幾十年中一直很喜歡 PCalc!
起人類歷史上的偉大發明,可以說數不勝數,像蒸汽火車就曾是人類在19世紀的主要交通工具,那個時候蒸汽火車就代表著時髦和進步,蒸汽火車開到哪里,就相當于人類的工業文明走到哪里!不過蒸汽火車在20世紀逐步被內燃機車取代,而現在電力機車又取代了內燃機車!
今天本文要討論的這個發明,就和當年的蒸汽火車一樣,曾經是人類某個時期重要的發明,曾經得到廣泛的應用,但是現在已被更先進的產品取代了,它就是電子計算器的前身機械計算器!
眾所周知,人類歷史上第一臺電子計算機是美國于1946年制作成功,這臺電子計算機采用真空電子管,重達30噸,耗能巨大,并且因為工作時發熱嚴重的原因,需要經常停機休息!
像這樣的電子計算機,只有像美國這樣的土豪才用得起!實際上直到上世紀70年代,在集成電路出現之后,便攜式計算機才真正的在大眾中得到普及,那么問題來了,在這之前人們尤其是一些科研工程人員或者商業會計人員一般用什么來完成復雜的運算呢?
這時有些人會回答了:算盤啊!
的確,當時的中國其實主要確實是用算盤!
但當時的西方出現了,比中國的算盤好用的多的,持續了長達三個世紀的黑科技產品:
機械計算器!
上面兩張圖片都是二戰之后人們常用的機械計算器,也就是末代機械計算器,這種計算器比那種長方形的鐵飯盒大不了多少,已經可以說已經比較便于攜帶了!
但是人類發明的最早期的機械計算器與這種后期制品區別極大!
上圖就是人類歷史上第1臺真正意義上的機械計算器,全名為滾輪式加法器,也稱帕斯卡加法器!
這臺機器由1642年法國哲學家兼數學家布萊士.帕斯卡發明!
看到帕斯卡三個字,經過九年義務教育并且特別優秀的你,是不是感覺有點熟悉?
對了,這個帕斯卡就是我們在物理課上經常遇到的壓強單位:帕斯卡!
說起這個帕斯卡,真正算得上是一個少年天才!他1642年出生在法國一位數學家家庭,他三歲喪母,由擔任著稅務官父親拉扯長大成人,很小他就顯示出對科學研究的興趣!
少年帕斯卡對他的父親可以說是一往情深,他每天都看著年邁的父親費力的計算稅率稅款,很想幫助做點事,可又怕父親不放心,于是這個未來的大科學家想到了為父親制作一臺可以計算稅款的機器,于是19歲那年,他發明了人類有史以來第1臺機械計算機!
人類歷史上第1臺有劃時代意義的機械計算機,竟是一個大孝子獻給老父親的禮物!
帕斯卡的計算機是一種由一系列齒輪組成的裝置,外形像一個長方盒子!需要用像兒童玩具那樣,用鑰匙旋地發條后才能轉動,并且只能做加法和減法!
這是一種利用了齒輪嚙合原理制作的十進制加法器,當齒輪旋轉一周,10個齒中最長的齒會和更高位的齒輪嚙合實現進位,同樣的道理反過來旋轉,則是減法計算。
帕斯卡是真正的天才,他在很多領域都有所建樹,后人在介紹他時說他是數學家、物理學家、哲學家、流體動力學家和概率的創始人,凡是學過物理的人都知道一個關于液體壓強性質的“帕斯卡定律”,這個定律就是他的偉大發現并以他的名字命名的!
他甚至還是文學家,其文筆優美的散文在法國曾經極富盛名!可惜長期從事艱苦的研究損害了他的健康,1662年英年早逝,死時年僅39歲!
帕斯卡死后10年,一個人類科學史上比帕斯卡知名度還要高的牛人,德國人萊布尼茨,改進了帕斯卡的加法器,并最終成為了機械計算器的奠基人!
經過九年義務教育并且特別優秀的你,是不是看到萊布尼茨這個四個字是不是又是眼前一亮?
對了,這個萊布尼茨就是人類數學史上數得著的幾個大牛人之一,因為他和牛頓分別獨立發明了微積分!
不過這個萊布尼茨和牛頓有很大的區別,因為牛頓最善于“空想”,盡管這些空想十分的偉大和超前,但極少發明和制作實物!
但是這個萊布尼茨就非常善于發明和制作實體物件,像這個機械計算器就是他的發明之一!
萊布尼茨的改進,使機械計算器具備了乘法和除法功能,甚至能夠進行開方運算!
這種計算器是用手柄的轉動周數代表被乘的倍數,長軸不同位置對應齒數不同,可完成乘法的計算!
萊布尼茨對人類的另一個重大貢獻,就是于公元1700年從一位友人送給他的中國易圖(八卦)里受到啟發,悟出了二進制中的真諦!
雖然萊布尼茨的乘法器仍然采用十進制,但它率先為計算機的設計,系統提出了二進制的運算法則,為計算機的現代發展奠定了堅實的理論基礎!
萊布尼茲的機械計算器雖然好用,但是由于長軸太長不利于搬運,有些型號竟然重達幾十公斤,長度達到一米!后來經過了100多年,直到1874年,鮑德溫和奧德納在前人的基礎之上用了可變齒數的齒輪,長長的計算軸才被縮短!
但是這時的計算器還是比較麻煩,其結果需要人用手工拿筆記在紙上!
不到10年,另一個牛人美國發明家菲爾特出現了,他將計算器和當時已經出現的打字機結合,讓計算結果可以直接記錄到紙上!
后來又有人對菲爾特計算器進行了改進,加上電動馬達,結果出現了電動計算器,而以前的計算器稱之為手搖計算器!
再后來全鍵盤改為九鍵式!
上圖是全鍵盤,下圖是九鍵式!
機械計算器,終于完美了!
機械計算機在二戰期間的應用達到了頂峰,它們是構成轟炸機投彈瞄準器的基礎,此外雷達發現飛機后計算飛機速度,以及艦船作戰時隨時調整艦炮仰角,都需要用到機械計算機!
機械計算機在電子計算機出現之后還使用了一段時間,主要是因為那時的電子計算機過于昂貴和笨重!但是后來的電子計算機的主要元器件,迅速由真空電子管到晶體管,最后發展到集成電路!
到了1970年代,使用集成電路的手持式電子計算機推出,這種電子計算機,已經非常便宜和便于攜帶了,從此機械計算機逐漸消失,到1980年代徹底絕跡!
機械計算器,結構復雜,一旦出現故障,維修十分麻煩,需要專業維修人員將其全部拆散,更換零件,重新組裝,再對整臺計算器進行檢驗,確保正常運行,并且常常每隔幾周都會出現一兩次,這也是機械計算機被徹底取代的原因!
盡管有這么多的毛病,但是機械計算器有一個非常大的好處,就是特別耐用,如果保養得當,可以使用上百年!這是現代的電子計算機不可比擬的!
盡管機械計算器已經徹底退出了人類歷史的舞臺,但是因為其結構之精妙,運行之復雜,體現了純機械物理運動之美,成為當今工業品收藏界的絕對寵兒!甚至很多絕版進入了國家博物館,成為許多國家的國寶級文物!
個簡單且功能強大的計算器,包括標準型、科學型和程序員模式,以及一個單位轉換器。它是一款完美的工具,可用來合計帳單、轉換食譜或其他項目中的測量,或完成復雜的數學、代數或幾何學問題。計算器歷史記錄可方便地確認你是否已正確地輸入數字。Win10Mobile和Windows10PC版《計算器》迎來更新。
下面是更新內容:
? 嘗試使用新的程序員模式,其中包含新增的邏輯運算。
? 科學型模式也包含新功能。
? 現在可以在“暗”和“亮”主題之間進行切換。
? 與以前相比,它更加易于使用,并且速度更快。
計算器下載,點此鏈接或使用玩應用App(下載鏈接)掃描下列二維碼:
新鮮科技,深度好文,微信中搜索IT之家或掃描二維碼關注公眾號