2010-02-25 29 views
9

好吧,標題的相當多:如果我在你面前坐着一個非技術人員/我的媽媽/十二歲的男孩/可卡犬,並要求你向他們解釋actors,你會從哪裏開始?我問,因爲我的master's project涉及到他們相當大的程度,每隔一天有人要求我告訴他們我在做什麼。當我在課程中與其他人交談時,情況並不是那麼糟糕 - 通常這個概念是外國的,但是可以理解的 - 但是最近我的室友,一位化學家讓我向她解釋,並且說我掙扎的人會是一個非常愚蠢的人輕描淡寫。你會如何向非程序員解釋演員?

我正在尋找某種解釋來傳達想法,而不是技術基礎。它可以是一個隱喻,它不一定是確切的 - 我只是想讓他們明白我在與他們做什麼。有任何想法嗎?

+5

難道人們只是因爲不能馬上想到答案而投票結束爲「不是真正的問題」? – 2010-02-25 15:55:21

+1

爲什麼我覺得我在做你的主人的項目? – 2010-02-25 18:40:40

+4

呃......我相當肯定你不是,喬。我的項目是編寫一個框架,該框架使用參與者創建在客戶端和服務器上運行的模塊化進程以及大量測試用例。我很難用非技術的方式解釋技術問題 - 這就是爲什麼我問這個問題的原因。 – 2010-02-25 20:26:43

回答

10
  • 可以有很多演員。所有演員都「同時」行事。併發性是此模型的關鍵部分。

  • 演員無法知道其他演員在想什麼。移動信息的唯一方法是發送消息。 (無共享狀態)

  • 實施者可以接收消息,並且通過作用在它們:

    • 做計算與在其中的數據

    • 將消息發送到其它參與者

    • 創造其他演員。

    • 忽略/丟棄該消息。

這基本上可以使演員就像...人們。人們不知道對方在想什麼,他們必須發送消息來傳達信息,他們可以選擇忽略傳入的消息,考慮他們,或與他人交流。隨機的壞事可能發生在人身上。許多人都在同一時間做事。爲了處理更多的負載,添加更多的人。

關於您的主人項目,我建議您瞭解Erlang Web框架。編程語言Erlang基於Actor模型,用於包括電話交換機在內的可擴展系統......以及Facebook messaging system

+0

這幾乎是我正在尋找的東西。輝煌。關於Erlang:我做了一些研究,看起來很棒。然而,我正在編寫的框架旨在讓網絡上的角色更容易使用,並且學習新語言對大多數人來說都有點意義,所以我使用Python並創建了自己的類,其行爲與演員類似。儘管如此,我很想在未來移植它。 – 2010-02-25 20:38:13

+0

這就像是說:「我聽說線程很棒......所以我們需要將線程移植到網絡上......」以及Web瀏覽器可以被認爲是一個演員......它發送一條消息,不會共享與服務器的狀態,等待另一個消息的等待接收,並對其進行計算。 – 2010-02-25 20:56:58

+0

Erlang將演員「一路下來」......並支持節點上的數百萬併發actor(稱爲進程),並透明地擴展到多個節點,同時自動處理所有通信。當你真的想要承擔一項大型併發任務時,擁有這些「根」是很好的。 – 2010-02-25 21:00:12

5

我會嘗試一個簡單的比喻:

演員都是人做自己的房子裏面的一些工作。每個房子前面都有一個郵箱。 爲了彼此溝通並完成工作,消息在演員之間發送。

+0

這基本上就是ToonTalk用於併發的模型。除了你派遣一隻「鳥」而不是寫一封信。 http://www.toontalk.com/English/concur.htm – 2010-02-25 18:39:12

1

我不知道,這將是很好的,但我會嘗試:

讓我們想象一下一個典型的中東市場。有買家(假設他們只是散步遊客)和賣家。買家在市場上漫步,賣家喊出他們的商品名稱:地毯!種類!!!馬匹!!! Сandies!寶石!等等......一些買家對特定種類的商品不感興趣並且去下一個商店,但是一些買家變得有興趣並且詢問:「它多少錢」,賣方:「50美元」,買方:「你可以給我一個折扣嗎?「,等等......

參與者在這裏是買家和賣家。賣家正在用他們的商品類型發送消息。買方可以跳過一條消息,或者可以發送消息詢問價格。

1

演員 - 我們也可以叫主題。行動者正在用物體做某事。 演員是電話,因爲這是一個人的行爲。

0

我會說:「參與者是告訴計算機同時做多個事情的一種簡單方法,它們不同於告訴計算機同時做多個事情的其他方式,因爲他們只需要更少的事情資源,而不是其他一些替代品,因爲它們比其他替代品更容易讓程序員正確使用。「

+0

如果我的觀衆真的想知道*演員的工作方式,那麼我會以不同的房子裏的人爲例,他們只通過在郵箱中輸入字母來相互交談,就像@Dario已經提出的那樣。但是,大多數時候,我不認爲我的妻子/母親/鄰居/誰真的想要那麼多的細節。 ;-) – 2010-02-25 20:00:00