如何向非程序员解释演员(Actors)?

9

嗯,标题已经很明确了:如果我让你向一个非技术人员/我的母亲/12岁的男孩/一只可卡犬解释演员,你会从哪里开始?我问这个问题是因为我的硕士项目在很大程度上涉及到它们,每隔一天就有人问我我在做什么。当我和课程中的其他人交谈时情况还不错——通常概念是陌生的但可以理解——但最近我的室友,一位化学家,要求我向她解释,说我很吃力是相当低调的。

我正在寻找一种传达思想而不是技术基础的解释。它可以是一个比喻,不必太精确——我只是想让他们理解我在做什么。有什么想法吗?


5
人们是否会投票将问题标记为“不是一个真正的问题”,只是因为他们无法立即想到答案? - Daniel Earwicker
1
为什么我感觉自己在做你的硕士项目? - Joe Koberg
4
嘿……我很确定你不是Joe。我的项目是编写一个框架,使用演员来创建可在客户端和服务器上运行的模块化过程,并编写一些测试用例。我很难用非技术术语解释技术问题,这就是我问这个问题的原因。 - Samir Talwar
这个问题似乎不适合讨论,因为它不符合帮助中心所描述的范围。 - user1228
5个回答

10
  • 可以有许多演员。所有演员都是“同时”行动的。并发性是此模型的关键部分。

  • 演员不能知道其他演员在想什么。移动信息的唯一方法是通过消息。(无共享状态)

  • 演员可以接收消息,并通过以下方式对其进行处理:

    • 使用其中的数据进行计算

    • 将消息发送给其他演员

    • 创建其他演员

    • 忽略/丢弃该消息

这基本上使演员就像......人类。人们不知道彼此在想什么,必须发送消息传达信息,他们可以选择忽略传入的消息、考虑它们或与其他人交流。对于人类来说,随机的坏事会发生。许多人同时做着各种事情。要处理更多负载,可以添加更多人。

关于您的硕士项目,我建议您了解Erlang Web框架。编程语言Erlang基于Actor模型,被广泛用于可扩展系统中,包括电话交换和Facebook消息系统


这正是我一直在寻找的。太棒了。关于Erlang:我做了一些研究,它看起来很不错。然而,我正在编写的框架旨在使Web上使用actors更容易,学习一门新语言对大多数人来说有点困难,因此我选择了Python,并构建了自己的类,其行为类似于actors。虽然我未来也想将其移植到Erlang上。 - Samir Talwar
这就像是说“我听说线程很棒...所以我们需要将线程移植到Web上!”...好吧,Web浏览器已经可以被视为一个参与者了...它发送消息,不与服务器共享状态,等待接收另一条消息,然后对其进行计算。 - Joe Koberg
Erlang将演员“一路走到底”,并支持节点上数百万个并发演员(称为进程),并在处理所有通信的同时透明地扩展到多个节点。当您真正尝试处理大型并发任务时,拥有这些“根源”是很好的。 - Joe Koberg
Web浏览器绝对具有与演员相似的特征。我的目标是创建一个环境,允许用户创建网站扩展,这些扩展可以轻松地与站点的其余部分进行交互,包括客户端和服务器。我想要许多小型进程来完成一件事情,并且希望用户能够随时开启或关闭它们。我不需要Erlang的容错性和可伸缩性 - 我需要在JavaScript上以及服务器上工作的演员。虽然我肯定需要阅读更多关于Erlang的内容 - 我认为通过尝试使用它,我可以学到很多东西。 - Samir Talwar

5
我尝试用一个简单的比喻来说明:
演员就像在自己的房子里工作的人。在每个房子前面都有一个邮箱。为了相互沟通并完成工作,演员之间发送消息。

这基本上就是 ToonTalk 用于并发的模型。除了你派遣一只“鸟”而不是发送一封信。 - Joe Koberg

1

我不确定这个例子是否恰当,但我会尝试:

让我们想象一个典型的中东市场。有买家(假设他们只是步行的游客)和卖家。买家在市场上漫步,而卖家大声喊出自己商品的名称:地毯!香料!马匹!糖果!珠宝!等等……一些买家对特定种类的商品不感兴趣,于是走到下一个商店,但有些买家则产生了兴趣,并问道:“多少钱?”,卖家回答:“50美元”,买家:“能给我打个折吗?”,等等……

这里的演员是买家和卖家。卖家发送带有其商品类型的消息。买家可以跳过消息,或者发送询价消息。


1

Actor - 我们也可以称之为主体。演员正在处理对象。 演员被称为演员,因为他是一个行动者。


0

我会说,“演员是一种简单的方式,告诉计算机同时做多件事情。他们与其他同时告诉计算机做多件事情的方式不同,因为相较于其他替代方案,它们需要更少的资源,并且对于程序员来说更容易正确使用。”


如果我的听众真的想知道演员是如何工作的,那么我会采用不同房屋中的人们只通过将信件放入邮箱来互相交流的例子,就像@Dario已经建议的那样。然而,大多数时候,我不认为我的妻子/母亲/邻居/任何人实际上需要那么多细节。;-) - Joe Carnahan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接