计算机的元数据

2020-06-09 08:23:24

我经常使用遗留代码和重构的比喻,这非常有效,但或多或少是可以理解的,这与您对软件开发的理解程度成正比。事实证明,我认识的许多人对软件开发的了解足够好,可以从中受益,但绝不是全部。

我试图思考如何向其他人解释这一点,最终我得到了一种我认为是相当令人愉快的方式来解释计算机和软件一般是如何工作的。

所以,这里是我想用的比喻:把电脑想成一种档案馆,但是你不能进入档案馆,你只能通过前台的人来访问它。我们会叫他史蒂夫。

在幕后,档案馆有一群人在里面工作。当你要求史蒂夫做某事时,他不是自己做的,他只是把适当的命令传递给在那里工作的人,他们执行命令,把一些东西带回给他,然后他就把它交给你。史蒂夫不是执行你的命令的人,他只是执行命令的界面。

现在由于规定,档案馆的运行规则非常严格。每件事都有一个规则,每个请求都有一个协议。不管你怎么恳求,史蒂夫和里面的工人都不会违反规定。这比他们的工作价值还高,你不知道吗?

只要你坚持在场景中,规则就设计得很好。你给史蒂夫带来一份文件,让他把文件归档。他说当然可以,我会把它作为文件XYZ-1234&34;或其他身份证存档,然后把它交给办事员,他会适当地归档。当你想要回它的时候,你说史蒂夫,我能要文件XYZ-1234吗?&34;然后他把请求传递给相关的办事员,他们取来文件并把它还给你。系统工作正常。

假设有一天你进来的时候忘记了你想要的文档的ID。史蒂夫,能把我周三给你的文件给我吗?史蒂夫不能那样做。我在周三给您的文档不是系统有规则的请求,因此不允许他履行它。

最后,在查阅了规则手册关于允许您进行哪种类型的查询后,您要求Steve将您在2020-06-03提交的所有文件都给您。你在那一天(问题中的星期三)只提交了一份文件,所以史蒂夫在周三把文件交给了你。

与计算机互动是这样的:计算机是一个规则系统,它在那里做你认为有用的事情,但你想要用它做的任何事情都必须事先考虑和考虑。有时规则如此复杂,以至于看起来比那更复杂,但它们不是它们只是一个真正复杂的规则系统。有时规则包含更改规则的规则(这就是编程),但是您仍然被约束必须遵守这些规则。

当然,他们重新统治的事实并不意味着他们是完全可以预测的。你可以为这样的事情制定规则,比如给我一个随机的文件,涉及一个职员抽牌、掷骰子等。你也可以有这样的规则,比如派两个职员做A和B,然后给我任何结果,结果将取决于哪些员工执行了任务,他们是否过得很好等等。一般来说,这些规则可能会低估结果,但它们确实规定了必须如何获得结果。

有一天,你去找史蒂夫,你说史蒂夫,你能把这张便条附在QP-567文件上吗?像往常一样,史蒂夫派了一名办事员去取文件。当他完成给你贴纸条的程序时,他停顿了一下,惊恐的表情掠过他的脸,他哭了起来,没有附上纸条。

你问他哪里不对劲,但他不能告诉你:这是没有规则的。此外,史蒂夫现在不会回答您的任何其他问题,因为规则不允许他在完成您的请求之前继续。

最后,你很沮丧地去找负责管理档案规则的管理员Kim,让他们去查一查。经过一段时间的调查(他们有一系列特殊特权可以让他们询问Steve WTF正在进行),他们告诉你问题在于你要求的文档没有关联的日期或作者,作为他们程序的一部分,Steve在递给你文档时必须将这些记录下来作为请求日志的一部分。您尝试附加备注的文档来自于它们在记录条目时记录该信息之前的文档,而记录规则是在记录该信息之后进入的,因此不要考虑这种可能性。

Kim更新了规则,并告诉您他们已经解决了问题。你让史蒂夫再把纸条贴在QP-567上。他告诉你,你没有这样做的许可。

你对这个回答不以为然,问金这是怎么回事。他们告诉您,这似乎是合乎逻辑的解决办法:如果在文档中附加备注需要此信息,则不能允许您将备注附加到缺少此信息的文档。您耐心地解释说,这一切都很好,但是您需要将注释附加到文档中,而实际上并不关心他们的录制要求。为什么会有这样的规则呢?

Kim咨询了Janet,这是他们的档案界面,他们在那里记录关于您要管理的档案规则更改的信息,经过多次查询后得出以下结论:录制要求似乎不是出于任何特别好的原因而引入的,但现在各种其他规则和程序都依赖于它,所以它真的很难改变。

在反复讨论了一下,并讨论了无论如何都要能够向存档中的文档实际添加备注有多重要之后,您突然想到了一个解决方案:在将备注附加到这样的文档时,Steve会将其记录为在创建存档之日由";未知&34;编写的文档所写。在此之后,您会想到一个解决方案:将备注附加到这样的文档中时,Steve会将其记录为创建存档时由";UNKNOWN&34;编写。

你去找金,问那是怎么回事。天哪,我不知道,文件检索很复杂。

您对此表示了一定程度的惊讶。从您的角度来看,您只需将ID给Steve,他就会带着一份文档返回给您。还有什么比这更简单的呢?

首先你要明白,档案不是什么抽象的地方。这些文件你要交给史蒂夫吗?他们总得去别的地方。所有这些大房间里的文件都必须从字面上、实体上放进去。虽然那些房间很大,但是有很多文件,所以有时房间会满的,你必须建造其他的房间。

因此,当您查找文档时,首先必须有人在索引中的某个位置查找,以找出在哪个空间中查找它。直到几年前索引的大小对于存储它的空间来说变得太大之前,这还是相当简单的,所以现在索引被分到多个房间中。因此,他们首先有一个程序来确定要查看哪个索引。

由于ID系统在归档的整个生命周期中已多次更改,这一切都变得更加复杂,因此,根据项目进入归档时所在的文件室和使用的ID系统,您需要不同的查找方式(有些文件室按作者排序,有些按标题排序,有些按出版年份排序,这会影响您在那里查找文档的方式并将其考虑在ID中)。

为了说明他们的观点,Kim向您展示了查找文档的规则。它们跨越三本书。它们不是小书。

最终,在给自己制造了足够的麻烦之后,Kim承认,他们今天必须做的十几件事情中有一件是肯定的,很明显,您的文档是他们可以处理的最重要的事情,所以他们去找Steve,请他向他们介绍文档是如何检索的。

最后,经过深思熟虑后,他们确定问题在于使用了错误的ID系统进行查找。您看,他们决定使用哪个ID系统的方式是基于文档进入存档的日期。如果没有录入日期,他们会尝试所有可能录入的不同方法(在系统开始要求记录录入日期之前有三种方法),如果有多个文档,则要求请求文档的人解决歧义。

但是,上次有人给此文档附上便条时,Steve注意到它没有条目日期,因此,根据之前针对您的投诉实施的新规则,将其条目日期设置为存档的开头。因此,现在它使用的身份识别系统没有任何含糊之处,但不幸的是,它是一个比那个更新得多的文件,所以它明确地使用了错误的一个。