SynapseGrid рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг

рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдСрдбрд┐рдпреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред рдСрдбрд┐рдпреЛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рд▓рдВрдмреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ (рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдмрджрд▓рддреА рдХреЗ 20-50 рдПрд▓реНрдЧреЛрд░рд┐рджрдо) рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рд╛ред рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЖ рдЧрдП, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред рдХреБрдЫ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдмрдлрд░рд┐рдВрдЧ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдСрдбрд┐рдпреЛ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ, рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдмрдврд╝рддреЗ рд╕реНрддрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реА рдЧрдИ рдереА, рдпрд╛рдиреА рдХреБрдЫ рд╕реНрддрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛, рдпрд╣ рдСрдбрд┐рдпреЛ рдирд╣реАрдВ рдерд╛ рдЬреЛ рдЪрд▓ рд░рд╣рд╛ рдерд╛, рдмрд▓реНрдХрд┐ рдЗрд╕ рдСрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реА рдЧрдИ рдереАред

рдкреВрд░реЗ рдЦреЗрдд рдХреЛ рдПрдХ рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб (рдЬреИрд╕реЗ рдмреАрдиреНрд╕) рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╕реНрд╡рддрдВрддреНрд░ рдмрд╣реБрдд рд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА, рд╣рдордиреЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдПрдХреАрдХрд░рдг рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рддрдп рдХрд┐рдпрд╛ред рдХрд╣реАрдВ рд╡реЗ рд▓рдВрдмреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрд╛рд░рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╣реАрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЙрд▓ рдЪреЗрди рдмрдирд╛рдИ, рдХрд╣реАрдВ - рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдореЙрдбрд▓ред рдЪреВрдВрдХрд┐ рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдлреА рдмрдбрд╝реА рдереА, рдЗрд╕рд▓рд┐рдП рдЕрдкрдШрдЯрди рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рдЬреНрдЮрд╛рдд рддрд░реАрдХреЗ рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдЬреБрдбрд╝реЗ рдереЗред рддрдм рд╣рдордиреЗ рд╕рдорд╛рдирддрд╛ рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдПред рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдЕрдм рд╣рдо рд╕рдВрдкрд░реНрдХ рдкреНрд░рдгрд╛рд▓реА рдпрд╛ рд╕рд┐рдиреИрдкреНрд╕рдЧреНрд░рд┐рдб рдХрд╣рддреЗ рд╣реИрдВ ред

рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛


рдЪреВрдВрдХрд┐ рд╣рдордиреЗ "рдмрдирд╛рдпрд╛ - рднреВрд▓" рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЧреВ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рд╡рд┐рдХрд╛рд╕ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдерд╛ред рдпрд╣реА рд╣реИ, рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдордирдорд╛рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдерд╛ред

рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ


рдЬрдм рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдХреА рдереА, рддреЛ рд╣рдо рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдП рдереЗ рдХрд┐ рдХрд┐рд╕реА рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЕрдиреБрдХрд░рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдордиреЗ рдЗрд╕реЗ AudioInputStream рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЖрд╕рд╛рдиреА рд╕реЗ рддрд╛рд▓реЗ рдХреЗ рд╕рд╛рде рдмрд╛рдЗрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдЧрд╛? рдпрджрд┐ рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдкрд╛рдЗрдк рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдирдП рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдмреЗрд╣рдж рдЕрдХреНрд╖рдо рдерд╛ред

рддрдм рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдпрджрд┐ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдлреНрд░реЗрдо (10-40 рдПрдордПрд╕ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рдЯреБрдХрдбрд╝реЗ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдСрдбрд┐рдпреЛ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрддрд╛рд░ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдСрдбрд┐рдпреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд▓рдЧрднрдЧ рд░реЗрдЦреАрдп рдирд┐рдХрд▓рд╛ред рдпрд╛рдиреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрд╛рдж рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдирдкреБрдЯ рд╕реЗ рдЬреБрдбрд╝рд╛ рдерд╛ред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ:

1. рдЦреАрдВрдЪ
def getData = process(previousModule.getData) 

2. рдзрдХреНрдХрд╛
  def pushData(d:data) { val res = process(d) nextModule.pushData(res) } 

3. рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдХрддреНрд░реАрдХрд░рдг
  def f(d:data) = { val r1 = module1.f(d) val r2 = module2.f(r1) r2 } 

рдЦреАрдВрдЪрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдкрд┐рдЫрд▓реЗ рдШрдЯрдХ рд╕реЗ "рдЦреАрдВрдЪрд╛" рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реЗ рдШрдЯрдХреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реИ рдФрд░ рдХреБрдЫ рдмрдлрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрд╡рд░реБрджреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИред рдЬрдм рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдврд╣ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкреБрд╢ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рдШрдЯрдХ рдореЗрдВ "рдкреБрд╢" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдЖрдЧреЗ рдХрд╛ рднрд╛рдЧреНрдп рдЕрдЬреНрдЮрд╛рдд рд░рд╣рддрд╛ рд╣реИред рдЬрдм рдмрдлрд░ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЪреЗрди рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рдлрд┐рд░ рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЕрдкрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдлрд┐рд░ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреБрд╢ рдореЛрдб рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ / рдЕрд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрдм рд╣рдордиреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреБрд▓ рдФрд░ рдкреБрд╢ рдкрд░ рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдШрдЯрдХреЛрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдЬрдм рдХрд┐рд╕реА рдШрдЯрдХ рдореЗрдВ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдкрдХрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ, рдФрд░, рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЕрдкрд╡рд╛рдж рдХреЗрд╡рд▓ рдПрдХ рдШрдЯрдХ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдиреНрдпреВрдирддрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рд╣рдордиреЗ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛ рдЬрд┐рд╕реЗ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╡реЗ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рддрддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рдереА, рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ 0..n рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рдереЗред рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ (рдЬреИрд╕реЗ map ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдереЗ, рд╡реЗ рдЕрдХреНрд╕рд░ рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЙрдирдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рд░рд▓ рдерд╛:

 trait MapModule[TIn, TOut] { def f(data:TIn):TOut } 


рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ ( flatMap ) рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдмрдлрд░рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдереА рдФрд░ рдЗрд╕рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдЧреНрд░рд╣ рдерд╛ рдЬрд┐рд╕рдореЗрдВ 0..n рддрддреНрд╡ рдереЗ:
 trait FlatMapModule[TIn, TOut] { def f(data:TIn):Collection[TOut] } 

рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ "рдкрдВрдк" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЧрд╣рд░рд╛рдИ рдкрд╣рд▓реЗ рдпрд╛ рдЪреМрдбрд╝рд╛рдИ рдкрд╣рд▓реЗред
 def widthFirst(d:Data) = { val r1:Collection[...] = module1.f(d) val r2 = for(d1 <- r1; d2 <- module2.f(d1)) yield d2 val r3 = for(d2 <- r2; d3 <- module3.f(d2)) yield d3 r3 } def depthFirst(d:Data) = { for(d1 <- module1.f(d); d2 <- module2.f(r1); d3 <- module3.f(d2) ) yield d3 } 

рдкрд╣рд▓реЗ рдЧрд╣рд░рд╛рдИ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрдд рддрдХ рдЯреНрд░реЗрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реЗ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд╣рд▓реЗ рдЪреМрдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде, рд╕рднреА рддрддреНрд╡реЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдлрд┐рд░ рд╕рднреА рдкреНрд░рд╛рдкреНрдд рддрддреНрд╡реЛрдВ рдиреЗ рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдЖрджрд┐ред

рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ 1 -> 0..n (рдлреНрд▓реИрдЯрдкрд╛рдЗрдк) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдореЙрдбреНрдпреВрд▓ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдпреЛрдЬрди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рд░реИрдЦрд┐рдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХреБрдЫ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕рджрд╕реНрдпрддрд╛ рдореЙрдбрд▓


рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдмрд╛рд╣рд░ рд╢рд╛рдЦрд╛ред рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдХреЛ рдХрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рд╕рд░реНрдХрд┐рдЯ, рдЬрд┐рд╕рдиреЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдиреЗ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреАрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рджреЛрдиреЛрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдереЗред рджреВрд╕рд░реЗ, рдЬрдм рджреЛ рдЫреЛрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЗрдирдкреБрдЯ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред

рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЖрдПред рдПрдХ рдИрд╡реЗрдВрдЯ [T] рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рддрд░рдл рдбреЗрдЯрд╛ рдбрд╛рд▓рдирд╛ рдФрд░ рджреВрд╕рд░реЗ рдкрд░ рдирдП рдбреЗрдЯрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдирд╛ рд╕рдВрднрд╡ рдерд╛ред рдЗрд╕рдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд┐рдХреЙрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рдШрдЯрдирд╛ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдзрд╛рдЧрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрдирд╛рдИ рдЧрдИ рдпреЛрдЬрдирд╛ RxJava рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдмрд╣реБрдд рдорд┐рд▓рддреА- рдЬреБрд▓рддреА рд╣реИ (рд╡рд╣рд╛рдВ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ [T] рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рд╕рджрд╕реНрдпрддрд╛ рдореЙрдбрд▓ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛ рдФрд░ рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдореЗрдВ рдСрдмреНрдЬрд░реНрд╡реЗрдмрд▓ рд╕реЗ рдПрдХ рдЕрдВрддрд░ рдпрд╣ рдерд╛ рдХрд┐ рдИрд╡реЗрдВрдЯ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░, рдбреЗрдЯрд╛ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЖ рд╕рдХрддрд╛ рд╣реИред


рдЕрдВрдЬреАрд░ред 1 рдХрдИ-рд╕реЗ-рдХрдИ, рд╕реАрдзреЗ


Fig.2 "рд╕реНрдЯрд╛рд░" рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдИ-рд╕реЗ-рдХрдИ


рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ, рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ рдФрд░ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреА рд╕реАрдорд╛рдПрдБ рд╕рд╛рдордиреЗ рдЖрдИрдВред

1. рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
2. рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИ рдпрд╛ рдирд╣реАрдВред
3. рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╡рд╛рд╣рд┐рдд рд╣реЛрддреА рд╣реИрдВ - рдПрдХ рдШрдЯрдирд╛, рдПрдХ рд╣реИрдВрдбрд▓рд░, рдХрд┐рд╕реА рдЕрдиреНрдп рдШрдЯрдирд╛ рдХреА рдЫрд┐рдкреА рд╣реБрдИ рдЖрдВрддрд░рд┐рдХ рдкреАрдврд╝реА (?), рджреВрд╕рд░реА рд╣реИрдВрдбрд▓рд░ рдЗрддреНрдпрд╛рджрд┐ред
4. рдпрджрд┐ рд╕рджрд╕реНрдпрддрд╛ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЪреВрдВрдХрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓рд┐рдВрдЧ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдпрджрд┐ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХрд╛ рдЕрднреА рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдИрд╡реЗрдВрдЯ-рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рд╕реНрдХреАрдо рднреА рдЦреАрдВрдЪреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ рдЬрдирд░реЗрдЯрд░-рдИрд╡реЗрдВрдЯ рд╕рдВрдмрдВрдз рдЕрдиреНрдп рд░реВрдк рд╕реЗ рдерд╛ рдФрд░ рдпрд╣ рд╕рдордЭрдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдИрд╡реЗрдВрдЯ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдХрд┐рди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рддред

рдЕрдХреНрдХрд╛


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЕрдХреНрдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реАрдореЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ , рдФрд░ рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдХрдо рд╕реЗ рдХрдо, рдПрдХ рдорд▓реНрдЯреАрдХрд╛рдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдХреНрдХрд╛ рдПрдХ рд╣рд▓реНрдХрд╛ рдЕрднрд┐рдиреЗрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдереНрд░реЗрдб рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдИрдХрдЯрд░ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИ, рддреЛ рд╕рдорд╛рди рдореЗрдХ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА рдПрдХ рдЕрд▓рдЧ рдИрдХреНрдЯрд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЗрдХреЛрд░реНрд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЦреБрд╢реА рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХреНрдЯреНрд░реИрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╕рдВрдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрдВрддрд░рд╛рддреНрдорд╛ рдХреА рдЖрд╡рд╛рдЬ рдкрд░ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЬреИрд╕реЗ рдЪрд╛рд╣реЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдИрдХрд░ рдХреЗ рдПрдХ рд▓рд┐рдВрдХ рдХреЗ рднрд╛рдЧреНрдп рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдХреНрдХрд╛ рдИрдХреНрдЯрд░ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдпреВрдЖрд░рдПрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреЛ рдЯреНрд░реИрдХ рдФрд░ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдорд╛рди рдИрдХреЙрд░реНрд╕ рдФрд░ рднрд╛рд░реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд┐рдирд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ, рд╕рдордп-рд╕рдордп рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЫреЛрдЯреА-рдЫреЛрдЯреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреАрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░: рд╡рд┐рдЪрд▓рди рдХрд░рдирд╛, рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рдиреАрд░рд╕, рдЬреЛ рдмрд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЬреАрд╡рди рдЬреАрддрд╛ рд╣реИ, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрджрд╛ рдХреА рдУрд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╕рдВрджреЗрд╢ рдХреА рд╕рдВрдЦреНрдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдореЙрдбрд▓ рдЪреЗрдХрд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдФрд░ рдЕрднреА рднреА рдкреВрд░реА рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдирд╣реАрдВ рдереА рдХрд┐ рдХреЛрдИ рднреА рд╕рдВрджреЗрд╢ рдХрд╣реАрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рдерд╛ред

рдХрд▓ рдХрд╛ рдирд╡рд╛рдм


рдЙрдмрдВрдЯреВ рдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдПрдХ рдЗрд╡реЗрдВрдЯ рдореЙрдбрд▓ ( рдЕрдкрд╕реНрдЯрд╛рд░реНрдЯ ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдмреВрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреЗрд╢ рдХрд┐рдпрд╛ рдерд╛ред рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдкреНрд░рдгрд╛рд▓реА рдмрд╣реБрдд рд╣реА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдИрд╡реЗрдВрдЯ рдХрд╛ рдПрдХ рдирд╛рдо рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣реИрдВрдбрд▓рд░ (рдХрд╛рд░реНрдп) рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ (рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдмреВрд▓рд┐рдпрди рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде) рдФрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдпрджрд┐ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рд╣реИрдВрдбрд▓рд░ рдШреЛрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рддрдерд╛рдХрдерд┐рдд "рдЬрд╛рд▓реА", рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧреНрд░рд╛рдл (рдбрд┐рдЧреНрд░рд╛рдл) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдЬрд╛рд▓реА рдХреЗ рдиреЛрдб рдИрд╡реЗрдВрдЯ рд╣реИрдВ, рдФрд░ рд╢рд╛рдЦрд╛рдПрдВ рд╣реИрдВрдбрд▓рд░ рд╣реИрдВред рдЧреНрд░рд╛рдл рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╕рдорд╛рдирддрд╛ рдХреЗ рдХрд╛рд░рдг, рдЕрдкрд╕реНрдЯрд╛рд░реНрдЯ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╡реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдкрд╣рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рддреЛрдВ (рд░рдирд▓реЗрд╡рд▓ 0..6) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВрдбрд▓рд░ рдЪреБрдкрдЪрд╛рдк рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдЕрдкрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдиреЗ рд╕рдВрдкрд░реНрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред

рд╕рдВрдкрд░реНрдХ рдкреНрд░рдгрд╛рд▓реА рд╕рдВрд╕реНрдХрд░рдг 1


рдЬрдм рддрдХ рд╣рдо рдПрдХ рдШрдЯрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯрд╛рд░ рдХреА рддрд╕реНрд╡реАрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдКрдкрд░ рдХреА рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╣рдо рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖ рдкрд╛рдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреАрдВрдЪреА рдЬрд╛ рд░рд╣реА рд╣реИрдВред


рдЕрдВрдЬреАрд░ред 3 рдШрдЯрдирд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░


рдпрд╣ рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рд╣рдж рддрдХ рд╕рдорд╛рди рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдШреЛрд╖рд┐рдд рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрдорд╛рдг рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд / рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреВрд░рд╛ рдЧреНрд░рд╛рдлрд╝ рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рд╣реИ рдФрд░ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреНрд░рд╛рдл рдХреЛ рджреЗрдЦрдХрд░, рдЖрдк рдЕрд╡рд╛рдВрдЫрд┐рдд рдЫреЛрд░реЛрдВ, рд▓рд╛рдкрддрд╛ рд▓рд┐рдВрдХ, рдлрд╛рдВрд╕реА рдХреА рдШрдЯрдирд╛рдУрдВ рдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЕрд▓рдЧ рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдордиреЗ рдмрд╕ рдЗрд╡реЗрдВрдЯ [T] рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╡рд┐рддрд░рд┐рдд ("рд╕реНрдореАрдпрд░") рд╕рдВрджреЗрд╢ рдкрд╛рд╕рд┐рдВрдЧ рддрдВрддреНрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрд╛ред рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧреНрд░рд╛рдл рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдлрд░рд┐рдВрдЧ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреНрд░реАрдо-рд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ "рд╕реНрдореАрдпрд░" рдореИрд╕реЗрдЬрд┐рдВрдЧ рддрдВрддреНрд░, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рдерд╛ред рдЗрд╕реЗ рдХреБрдЫ рд╕рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╣рд▓реНрдХреЗред

рдЕрдХреНрдХрд╛ рдореЗрдВ рд╣рд▓реНрдХреЗ рдбреЙрдХреНрдЯрд░реЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рддрдВрддреНрд░

рдпрд╣рд╛рдВ, рд╣рд▓реНрдХреЗ рдбреЙрдХреНрдЯрд░реЛрдВ рдХреЗ рддрдВрддреНрд░ рдкрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рдиреИрдкреНрд╕рдЧреНрд░рд┐рдб рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╛рдирддрд╛рдПрдВ рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
 val helloActorRef = actor(new Act { become { case "hello" тЗТ sender ! "hi" } }) helloActorRef ! "Hello" 


рдЬрдм рд╣рдо рдПрдХреНрдЯрд░ рдХреЛ "рд╣реИрд▓реЛ" рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  Message(helloActorRef, "Hello") 


рдФрд░ рдпрд╣ рд╕рдВрджреЗрд╢ рдкрдВрдХреНрддрд┐рдмрджреНрдз рд╣реИред рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╣реАрдВ 16 рдзрд╛рдЧреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдмрдбрд╝реА рдХрддрд╛рд░ рд╕реЗ рд╕рдВрджреЗрд╢ рдкрдврд╝рддреЗ рд╣реИрдВред рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░реЗрд╖рдгрдХрд░реНрддрд╛ рднреА рд╣реИ рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреЛ рдзрд╛рдЧреЗ рдПрдХ рд╣реА рдЯреНрд░реИрдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдереНрд░реЗрдб рд╕рдВрджреЗрд╢ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ, рдИрдХрд░ рдкрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ ("рд╣реЗрд▓реЛ") рдкрд░ рдЗрд╕ рдЗрдХреНрдЯрд░ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдпреЛрдЬрдирд╛ рд▓рд╛рдЦреЛрдВ рд▓рд╛рдЦреЛрдВ рдбреЙрдХреНрдЯрд░реЛрдВ рдХреЛ рдореМрдЬреВрдж рд╣реИ рдХрд┐ рд╡реЗ рд╕реЛрддреЗ рд╕рдордп рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рдереЛрдбрд╝реА рдпрд╛рджрджрд╛рд╢реНрдд рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХрд╛ рдЙрдкрднреЛрдЧ рди рдХрд░реЗрдВред рдФрд░ рд╕реАрдкреАрдпреВ рд╕рдордп рдХреЗрд╡рд▓ 16 рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдЦрдкрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдИрдХреНрдЯрд░ рдХреА рдЕрдкрдиреА рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рд╣реИ рдФрд░ рд╣рдо рдПрдХ рдЯреАрдо рд╣реИрдВ ! рдЗрд╕ рдХрддрд╛рд░ рдореЗрдВ рдЕрдкрдирд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВред рдпрд╛рдиреА рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓рд╛рдЦ рдХрддрд╛рд░реЗрдВ рд╣реИрдВред рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдкреНрд░рднрд╛рд╡реА рдкреНрд░рдгрд╛рд▓реА рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬреЗрд╢рди рд╣реИред

рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ, рдПрдХреНрдЯрд░ рд░реАрдл рд╣реИрдВрдбрд▓ рдпрд╛ рдЯреИрдЧ рдпрд╛ рд▓реЗрдмрд▓ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рд╣рдо рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдПрдХ рдРрд╕реЗ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдЗрдХреНрдЯрд░ рдХрддрд╛рд░реЛрдВ рдХреЗ рдЖрднрд╛рд╕реА рд╕реНрдерд╛рди рдореЗрдВ "рд╣реИрд▓реЛ" рд╕рдВрджреЗрд╢ рдХрд╛ рд╕реНрдерд╛рди рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд╡рд╕реНрддреБрддрдГ рдПрдХ рд▓рд╛рдЦ рдПрдХреНрдЯрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд▓рд╛рдЦ рдХрддрд╛рд░реЗрдВ рд╣реИрдВред рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП 1,000,000 рдХрддрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ? рдЗрд╕ рдЖрднрд╛рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдмрдбрд╝реА рдХрддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЯреИрдЧ рдЯреИрдЧ рдХреЗ рд╕рд╛рдеред рдФрд░ рдпрд╣ рд▓рд╛рдЗрди рдмрд╣реБрдд рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧреАред

рдПрдХ рдФрд░ рд╕рд╛рджреГрд╢реНрдп рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рд╡рд┐рд╢рд╛рд▓ рд╕реНрдкрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢рд╛рд▓ рд╡рд┐рд░рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдо рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХрдИ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдмрдЪрд╛рддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛ рдЖрдХрд╛рд░ 1000x1000x1000 рд╣реЛред рдпрджрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ 10e9 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рд▓реЗрдмрд▓ (x, y, z) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рдХрдо рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣рд╛рдБ HashMap[(x,y,z), data] рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг 2 рдпрд╛ SynapseGrid рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ


рдПрдХ рд╕реНрдореАрдпрд░ рд╕рдВрджреЗрд╢ рд╣рд╕реНрддрд╛рдВрддрд░рдг рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕реАрдзреЗ рдИрд╡реЗрдВрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЙрдХреНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЦ рдХрддрд╛рд░ рд╣реЛред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдХ рдПрдХрд▓ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдИрд╡реЗрдВрдЯ рдФрд░ рд╕рдВрдЪрд╛рд░ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗ, рддреЛ рдЖрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рднрд╛рд╡реА рдХреЗрдВрджреНрд░реАрдХреГрдд рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдЬрд┐рди рдШрдЯрдирд╛рдУрдВ рдХреА рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрдкрд░реНрдХ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ,
  val contact1 = Contact[T]("1") 

рдФрд░ рдЗрд╕ рд╕рдВрдкрд░реНрдХ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдХреЗрдд ред
  Signal[T](contact1, data:T) 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдкрд░реНрдХ ActorRef рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ рд╕рдВрдХреЗрдд рд╕рдВрджреЗрд╢ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдкрд░реНрдХ рдХреЗ рд╕рд╛рде рди рддреЛ рд░рд╛рдЬреНрдп рдФрд░ рди рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдПрдХ рдЖрднрд╛рд╕реА "рдХрддрд╛рд░" рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдкрд░реНрдХ рдЗрд╕ рдХрддрд╛рд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдХреЛрдИ рдбреЗрдЯрд╛ рдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдЕрдиреНрдп рд░рд┐рд╢реНрддреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╣реИрдВрдбрд▓рд░ / рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреЗ рд╣реИрдВред рд░рд┐рд╢реНрддреЗ рдХреЗрд╡рд▓ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ

рд╕рдВрдкрд░реНрдХреЛрдВ рдФрд░ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ, рдПрдХреНрдЯреЛрд░рдл рдФрд░ рд╕рдВрджреЗрд╢, рд╣рдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ, рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХрд╛рдлреА рдЖрдо рд╣реИред рдореИрдВ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЛ "рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд┐рдВрдЧ" рдХрд╣рддрд╛ рд╣реВрдВред рд╡рд┐рдЪрд╛рд░ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдкрддрд╛ (рд▓рд┐рдВрдХ, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛) рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдФрд░ рдорд╛рди рдХрд╣реАрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХрд╣реАрдВ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЛрдирдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдХреЗрдд рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдмрд╕ рдПрдХ HashMap рдпрд╛ рдЕрдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХреЗрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рдмрдЬрд╛рдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧреЗрдЧрд╛ред

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдбреЗрдЯрд╛ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рд╣реА рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ, рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░ рдХреЗ "рд░рд╛рдЬреНрдп" рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рдВрдкрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдХреЗрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдФрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рднреА "рд╕реНрдЯреЗрдЯреНрд╕" рдХреЗ рдЯрд╛рдЗрдо рд╕реНрдХреИрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдореЙрдбрд▓ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧреНрд░рд╛рдл рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рджреНрд╡рд┐рджрд▓реАрдп рдЧреНрд░рд╛рдл рд╣реИред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рд╛рдердорд┐рдХ рд╣реИрдВрдбрд▓рд░ рдирдХреНрд╢реЗ рдпрд╛ рдлреНрд▓реИрдЯрдкрд╛рдЗрдк рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, SynapseGrid рдХреЗ рджрд┐рд▓ рдореЗрдВ рд╣рдо рдПрдХ рд╕рд░рд▓ рдЧреНрд░рд╛рдл рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдиреЛрдбреНрд╕ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЖрд░реНрдХ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдЧреНрд░рд╛рдл рдЯреНрд░рд┐рдкрд▓реНрд╕ (contact1, contact2, рд╣реИрдВрдбрд▓рд░) рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  Link[TIn, TOut](from:Contact[TIn], to:Contact[TOut],function: TIn=>Collection[TOut]) 

(рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕ рддрдереНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдШрдЯрдХ рдлреНрд▓реИрдЯрдкрд╛рдЗрдк рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ)ред
SynapseGrid рдХрд╛ рд╡рд┐рд╡рд░рдг рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд░реВрдкрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ SynapseGrid рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдЬрдм рдбреЗрдЯрд╛ (рд╕рд┐рдЧреНрдирд▓) рдХрд┐рд╕реА рднреА рд╕рдВрдкрд░реНрдХ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрди рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рдЗрди рд╣реИрдВрдбрд▓рд░ рдХреА рдХреЙрд▓ рдХреЛ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдереНрд░реЗрдб рдореЗрдВ рдпреЛрдЬрдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдкрд░реНрдХреЛрдВ рдкрд░ рд╕рд┐рдЧреНрдирд▓ рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рд╣реИрдВрдбрд▓рд░ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХрддрд╛рд░ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред

рдмрд╛рдЗрдбрд░реНрд╕ рдФрд░ рдбреАрдПрд╕рдПрд▓

рдСрдкрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрд┐рдд рддрдВрддреНрд░ рддреНрд░рд┐рдХ рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЧреНрд░рд╛рдл рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдорд╛рдирддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЧреНрд░рд╛рдл рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рддреБрд░рдВрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд░реНрдХреНрд╕ рдЬреЛрдбрд╝рдХрд░, рдХрджрдо рд╕реЗ рдХрджрдо рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рдВрдкрд░реНрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ DSL SystemBuilder рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЪрд░рдг рджрд░ рдЪрд░рдг рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  val in = input[Int]("in") // input -    ,       val c = contact[Int]("c") (in -> c).map(_ * 2) //   Link   in  c.   map-,      2 val c2 = in.map(_ * 2) //       map.    

рдорд╛рдирдЪрд┐рддреНрд░, рдлреНрд▓реИрдЯрдкрд╛рдЗрдк, рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдорд╛рдирдХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕реНрдХрд╛рд▓рд╛-рдЪреАрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рдордЭ рдХреЗ рд▓рд┐рдП:
  val c2 = for(i <- in) yield i * 2 //    ,      in.map val c3 = for(i <- in; j <- 0 until i) yield j * 2 // /*    : val temp = in.flatMap(i => 0 until i) val c3 = cc.map(j => j * 2) */ 

DSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, SynapseGrid рджреЗрдЦреЗрдВ ред
рдкреНрд░рдгрд╛рд▓реА рдХрд╛рдпрд╛рдкрд▓рдЯ

SynapseGrid рдореЗрдВ, рджреЛ рдЪрд░рдгреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рд┐рд╕реНрдЯрдо рдбрд┐рдЬрд╝рд╛рдЗрди рдЪрд░рдг рдФрд░ рд░рдирдЯрд╛рдЗрдо рдЪрд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдорддреМрд░ рдкрд░ рдпреЗ рдЪрд░рдг рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреБрдЗрд╕реЗ рдореЗрдВ - рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдмрд┐рд▓реНрдбрд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╕рдВрдкрд░реНрдХреЛрдВ рдФрд░ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рдЯреНрд░реЗрд▓рд┐рд╕, рдЕрд╕рддрдд рд╕рдордп, рд╕рдордХрд╛рд▓рд┐рдХрддрд╛ рдФрд░ рдирд┐рдпрддрд╛рд╡рд╛рдж

рдПрдХреНрдХрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдФрд░ рдИрдХреЛрдЯреЛрд░реЛрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣ рддрдереНрдп рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореМрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд▓рд╛рдн рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рднреА рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЪреВрдБрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рддрддрд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рд┐рдЧреНрдирд▓ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдг рдХреА рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред (рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ, рд▓реЗрдХрд┐рди рдСрдкрд░реЗрд╢рди рдХреЗ рдХрдо рдирд┐рд░реНрдзрд╛рд░рдХ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рджреБрд░реНрд▓рдн рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред)

рд╕рднреА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрд╕рддрдд рд╕рдордп рдореЗрдВ рдбреБрдмреЛрдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдордп рд╕реНрд▓реЙрдЯ рдХреЗ рднреАрддрд░ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдордп рдореЗрдВ, рдЗрдирдкреБрдЯ рд╕рдВрдкрд░реНрдХ рдкрд░ рдПрдХ рд╕рдВрдХреЗрдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕рдордп рд╕реЗ рджреВрд╕рд░реЗ рдХреНрд╖рдг рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рд╕рднреА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрддреНрдкрдиреНрди рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ (рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рдпрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬрдмрд░рди рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдпрджрд┐ рдЖрдк рд╕рдордп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдг рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рддрд╕реНрд╡реАрд░ рдХреЛ рдЯреНрд░реЗрд▓рд┐рд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЯрд░реНрдмреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ ред

, .

, . , тАФ (┬л ┬╗).


pipeline . . , . -, , .

. , , :
  type Component = Signal => Collection[Signal] 

рдпрд╛рдиреА , in1, Signal in1. , out1 Signal(out1, data) .

. .


, Akka-.

90% . Akka , . SynapseGrid . , , . .
SynapseGrid

, SynapseGrid, , Akka . рдЕрд░реНрдерд╛рддреН:
1. - . ().
2. .
3. , .
4. , .

10% , . , , . .

, 16 ExecutorContext' SynapseGrid. synapse-grid-concurrent .

рдирд┐рд╖реНрдХрд░реНрд╖


SynapseGrid , (ASAP) . , . API Builder' . (immutable).

. SynapseGrid Akka , .

GitHub' (BSD-like).

SynapseGrid, .

Source: https://habr.com/ru/post/In204596/


All Articles