从MUD到OOP的路径

最近,我一直在思考自己的出身,主要是因为尽管我有很多经验为今天的人做出了贡献,但我还是认为这是理所当然的。 因此,我们许多程序员具有令人难以置信的凉爽,多样化的背景和经验。

例如,我从小就由祖父母抚养长大。 他们为培养我而做得非常出色,并为我的高标准打下了基础。

我还没有真正涉及到的一个领域是,祖父在我的计算运动中发挥了重要作用。

当我刚上小学时,他为我配备了我的第一台Macintosh Performa(从他在Polaroid的办公室来的),并为我提供了稳定的教育软件。 Number Munchers帮助我学习素数和倍数。 KidPix提供了我梦dream以求的创意渠道。 我意识到回想起当时拥有一台个人计算机的真正荣幸。 我也很幸运,因为它使我进入了技术高速公路,而且我离开了。

地牢生活

随着年龄的增长,我开始涉足在线游戏的不同领域。 我在90年代中期的一天偶然发现了Zork I:大地下帝国,我的生活将永远改变。 随着时间的流逝,我开始涉足更多基于文本的角色扮演游戏(RPG)

AOL主持了Modus Operandi ,这是一款以加勒比海为主题的基于文本的在线角色扮演游戏,在关闭服务器之前,我会断断续续地玩10多年。 GemStone III (现在称为GemStone IV)实现了我什至不知道的中世纪幻想梦。

此外,在线游戏的快速交流风格教会了我年轻的年龄,以95%以上的准确性输入了近100 WPM。 如果您不迅速吐出来,没有您,角色扮演将会前进。

我对游戏的热情并没有被忽视。 在我玩过的几乎所有游戏中,工作人员都会注意到我的创造力和好奇心,尽管年龄严重不足,但我仍然能够确保一些工作人员的“建设者”职位(我想互联网是一个不同的地方)。 我在相对匿名的人物中发现了导师制,具有基于对象和基于类的“力量”。

使我与这些资源联系在一起的唯一一件事便是纯粹的好奇心, 而好奇心是一个很棒的程序员特质。 我非常想与游戏中的其他人互动,创造有趣的东西,并发挥创造力……所以我想出了如何做

大约一年后的1995年,我才10岁(!),我发现了多用户地下城(MUD)MOO(“ MUD,面向对象”)。

不……我不是在牛群的泥泞中rolling绕。 MUD或“多用户地牢”是一种基于文本的样式“游戏”,可通过发送到服务器的命令以及服务器的响应提供虚拟体验。

MUD的虚拟世界本身也提供了令人难以置信的创意许可。 而不是在图形用户界面(GUI)中单击“右”按钮,而是键入“ east ”或“ e ”。 服务器将根据您当前的位置将您路由到其他房间或区域。 没有图像,也没有声音。 吟游诗人“唱歌”他们的歌词,在角色扮演时对其他玩家的动作必须被“情绪化”,而您基本上必须具有非常活跃的想象力。 既是左右脑,这一切吸引了我。

什么是MOO ? 根据维基百科:

“ MOO的最大特色之一是它的用户可以在服务器内执行面向对象的编程,最终扩展和更改服务器对每个人的行为。此类更改的示例包括创作新的房间和对象,创建新的通用对象。供其他人使用,并更改MOO接口的操作方式。 用于扩展的 编程语言 MOO编程语言 ,并且许多MOO都具有方便的动词库,程序员可以在动词库中将其称为Utilities进行编码。 MOO编程语言是 特定领域的编程语言 。”

不久之后,我就完全迷上了创建虚拟的,基于文本的世界的想法。 一切皆有可能!

MOO:年轻程序员的游乐场

此时,我还是一名高中一年级学生,发现了《 LambdaMOO程序员指南》并将其全部打印出来。 它和我一起放在我的学校背包里,在午餐时间,乐队练习期间,完成测试后……在女孩的房间里,我读了它。 我下定决心要做一些很酷的事情,但没有任何阻碍。

完成作业后的第二天晚上,我登录了LambdaMOO,并根据所学知识创建了第一个对象。 使用原型和继承的初步概念化,然后我创建了一系列具有不同方法,状态和属性的对象:

按下按钮的帽子上面有一个按钮,可以从顶部释放五彩纸屑和一只跳舞的小熊。 在战斗状态下会与玩家对象的生命值互动的武器。 熟悉的动物会跟随您走动,执行动作并协助战斗。

《程序员指南》为我提供了构建所需的所有工具。 实际上,MOO核心编程语言充当了各种框架,使我能够使用表达性命令和伪编码在虚拟世界中构建对象。 它提供了一个类型强大的游乐场,几乎没有空间甚至没有空间对服务器本身造成任何不可逆转的损害。

可能性无穷无尽,只有我自己的创造力才能限制

图纸连接

谁会想到,这些编程概念会在这么小的年龄进入我的计算机屏幕?

MUD和MOO都利用了面向对象编程的原理。 但是,我不知道面向对象的程序设计在MUD世界之外是一种被广泛使用的概念。 直到我上大学探索计算机科学学位课程时,我才真正真正建立起这种联系。

使我与这些资源联系在一起的唯一一件事便是纯粹的好奇心,而好奇心是一个很棒的程序员特质。 我非常想与游戏中的其他人互动,创造有趣的东西,并发挥创造力……所以我想出了如何做

时至今日,我经常从底部到顶部进行编程,着重于最终结果,并向后努力以填补空白。 使用如此出色的抽象帮助我专注于输入和输出,并在事后关注细节。

MOO最吸引人的功能可能是您可以在FUN环境中使用面向对象编程的核心基础知识。 编程感觉不像编程。 您将学习在对象中实现逻辑,以使它们做一些很酷的事情。

那里也有许多儿童友好型MUD,您的训练中的程序员(生成人员)可以在这里首次体验面向对象编程。 如果您想在MUD或MOO环境中探索自己的创造力,那么Mud Connector是一个不错的起点。 借助排名系统和可搜索的功能,您可以找到诸如幻想,中世纪甚至是计算机朋克/未来派之类的流派。

我个人认为基于文本的游戏改变了我的生活。 它们在我以后的职业选择中也发挥了巨大作用,这超出了大多数以图形为动力的视频游戏所能声称的范围(除非有人继续成为视频游戏开发商)。

MUD和MOO编程资源

上面链接的《 LambdaMOO程序员指南》提供了对LambdaMOO编程的深入了解,但是还有许多其他类型的核心语言。 如果您有兴趣学习有关构建自己的MUD或MOO的更多信息,请阅读以下几本书,以帮助您:

Ron Penton的MUD游戏编程

使用Inform 7创建交互式小说,作者Aaron Reed

梅利莎·福特(Melissa Ford) 用麻线创作互动小说