8位精灵

2020-05-31 18:16:57

8位灵性(8BS)是一种现代程序,它让人回想起应用程序提供健壮体验但可以放在一张软盘上的时代。相比之下,现代的应用程序比较臃肿,但也有一些应用程序符合8位时代的精神。

也就是说,现代的8BS应该提供最小的现代功能集:Unicode支持和Internet和/或WWW支持(在适当的情况下)看起来像是最小集。

我不想限制最终的二进制或链接库的大小,因为在这一点上没有必要将其限制为8位Era软盘大小。我认为现代系统相对“小”是可以接受的。此外,8BS是编程语言不可知的,VM绑定和直接硬件应用都是合理的选择。8BS可以说是一种精神状态。

目前,我对wrt8位Sprituals感兴趣的一种应用程序示例如下…。

在我指出几个符合8BS模式的现代程序的示例之前,我想花点时间谈谈几个有趣的示例。当然,默认情况下,8位时代的任何程序都符合约束环境程序的字面定义,但只有一小部分程序可以代表我在这篇文章中追求的程序类型。下面的计划都是有约束的--但它们从来没有约束过。

KAMAS是开创性的大纲软件,最初是为Kaypro II设计的(最终在其他系统上找到了出路),它提供了一个功能齐全的编辑器、BBS系统和内部编程语言解释器-所有这些都在191K的软盘上。

我在某种程度上是Kamas软件的粉丝,尽管我只能在DOSBox仿真器上运行截短为1的版本。即使没有Kaypro版本中的更多高级功能,适用于DOS的Kamas也是一个可靠的应用程序;然而,凭借这些高级功能,该程序是一个强大的数字工作区。

电动铅笔是第一个实现类似文字处理功能的程序,运行在MITS Altair上,内存为8K。

虽然肯定比不上后来的许多文字处理器,但电动铅笔为它的许多继任者设定了速度。事实上,许多逆向计算机学家认为Macintosh的Word 5.1现已不复存在,是文字处理的巅峰之作。

我从来没有足够幸运地使用Word 5.1,但作为一个8BS应该努力争取的应用程序示例,它看起来确实很有光彩。

Turbo Pascal最初是在8位CP/MOS上发布的,它包含一个IDE和编译器,可以在内存中运行程序或以惊人的速度编译它们-所有这些都是35美元。2个。

对于8位时代来说,Pascal是一种伟大的语言,并且易于快速编译,但Turbo Pascal软件因是Anders Hejlsberg编程能力的光辉典范而闻名。3个。

在展示了几个作为现代8BS的门柱的例子之后,我将提供几个现代程序的例子,这些程序达到了本文开头设定的目标。

像预聚类Redis这样的东西是一个不错的候选者。当然,这不是一个软盘大小的程序,但考虑到它占用的空间很小,它做了很多事情。虽然随着时间的推移,它的范围不断扩大,但最初的设想是一个运行良好、相当稳定、甚至易于理解的时髦的数据结构数据库。

Frink是一种不同于任何其他编程语言的编程语言。众所周知,它能够在整个计算过程中始终如一地处理和转换一组测量单位。对于任何已经创建了一个复杂的系统(甚至是一个简单的系统)并需要同时处理不同测量单位的人来说,Frink无缝处理的问题的复杂性是令人震惊的。

//Levenshtein距离是built-inprintln[editDistance[";kitten";,";坐在#34;]]//=>;3//将英尺换算为米38英尺->;米//=>;7239/625(正好是11.5824)

Frink需要JVM,这与您能得到的8BS相差最远。然而,撇开VM不谈,“Frink编程语言,包括它的所有参考数据、GUI和图形,可以提供不到500KB(Pack200压缩)。”4。

这是一款建造世界的/粗暴的/模拟的游戏,尽管它是文本图形,但它对细节的处理方式却令人着迷。这款游戏一直保持着严格的愿景,即由其设计师塔恩和扎克·亚当斯提供强模拟的游戏玩法。

我将提名的最后一个程序是主要的终端仿真器PuTTY。经过20多年的开发,PuTTY仍然是3MB的安装,并提供了一组有用的功能。当您需要PuTTY提供的功能时,您确实需要它立即正常运行。PuTTY年复一年地满足这一需求,一路坚如磐石。

在我结束之前,我应该指出硬件8BS的存在。我怀疑Pi、Arduino、ESP32等社区有大量可行的8位SPIRITUAL示例可供学习。我需要更多的探索,也许未来的帖子会更详细地解决这些问题-尽管下面的评论总是欢迎关于它们的指针和信息。

这就是我目前所有的东西。8位时代已经过去,不太可能再回到以用户为中心的通用应用程序领域。不过,八位制的精神,仍然是值得我们争取和歌颂的。问题当然是--我们应该这样做吗?

如果我能找到原始Kaypro II磁盘的可行副本,那么我会立即抓起一个尘土飞扬的旧系统来运行它。唉,事实证明,KAMAS软件比运行它的计算机更难找到。-↩。

当时的PASCAL可以在一次编译过程中进行扫描、解析、优化和代码生成。-↩