裸机覆盆子PI Smalltalk-80

2020-07-10 15:43:35

位于加利福尼亚州帕洛阿尔托的施乐帕洛阿尔托研究中心正在庆祝它的50岁生日-祝贺你!帕洛阿尔托研究中心的研究人员发明了大量技术,在我们这个始终连接在一起、以计算机为中心的世界里,我们现在认为这些技术是理所当然的。20世纪70年代的一些例子有图形用户界面、个人计算、以太网、激光打印机和面向对象编程方法。虽然你们中可能只有几个人使用过帕洛阿尔托研究所开发的设备,但这些发明中的许多都是你们日常使用的技术的灵感来源-比如在Macintosh和Windows用户界面上,或者在Next和Apple的Objective C中受到Smalltalk启发的方法,这一点仍然在当前的SWIFT编程语言中显示出来。

最初的Smalltalk系统在专门的硬件上运行字节码VM(从传奇的施乐Alto开始),并接管了整个系统。与许多基于Lisp的系统一样,Smalltalk基于持久化映像,持久化映像保持系统的当前状态,并且不区分程序数据(对象)和代码-事实上,Smalltalk中的类本身就是对象。整个系统状态将被保留(如果您小心,并且您的映像保存代码没有错误.)。跨重新启动,因此在启动后不需要重新启动程序或打开文档。

Smalltalk系统的突出特点之一是它的可发现性。所有的源代码通常都是可用的,但是如果没有,也可以从字节码反编译。整个系统,包括编译器和GUI,是用大约40k行Smalltalk代码实现的,所以一个人就能弄清楚系统是如何工作的。Smalltalk的另一个不同寻常的特性是能够在运行时修改系统。一个著名的轶事是,Steve Jobs在1979年访问帕洛阿尔托研究所时,看到了Dan Ingalls的演示,他演示了如何对基本系统行为进行实时代码更改。

虽然现在当然可以在普通操作系统中将Smalltalk-80作为一个进程来运行(还有更新的Smalltalk派生系统,如Squeak),但是您现在可以在Raspberry PI上以裸机模式运行Smalltalk-80。即使是最小的PI版本(GB5 Raspberry PI Zero)也有足够的内存,而且速度也足够快;Smalltalk VM只需要几兆字节的内存就足够了。

我的裸机Raspberry Pi Smalltalk-80版本-串音-是基于Dan Banay的C++重新实现的原始Smalltalk-80 VM(源自著名的蓝皮书中的描述),Rene Stange的圆形Raspberry Pi裸机C++库,以及Mario Wolczko提供的Smalltalk-80 VM映像-以及一些胶水代码和一些真正由您编写的技巧。感谢你们所有人的出色工作!

GitHub上提供的第一个版本正在进行中,但我认为看到有40年历史的软件在现代系统上运行是一件很棒的事情。如果你有多余的覆盆子PI在角落里沾上灰尘,请随意试一试……。乍一看,该系统感觉与您可能已经习惯的基于桌面的GUI有很大不同--但是第一次使用Smalltalk会让您大开眼界。

虽然这个Smalltalk版本是在我的老朋友Michael Haupt(感谢所有伟大的讨论和阿尔法测试,Michael!)的启发下,在一个下雨天的周末开始的一个小黑客项目,但它也将是我在NTNU这里的学生项目的一个很好的基础。我希望他们有兴趣探索VM及其在资源受限的嵌入式和物联网应用程序中的非功能属性的使用,并可能给他们(和我!)。为今后的研究提供一些启示。