Révision | 6ececae340378a24047f349ae054f16e761bcd55 (tree) |
---|---|
l'heure | 2022-10-01 05:44:29 |
Auteur | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
AsIs
@@ -301,8 +301,6 @@ | ||
301 | 301 | Then, a *faster* conversation with a bit of noise is commonly preferred. |
302 | 302 | |
303 | 303 | |
304 | - | |
305 | - | |
306 | 304 | .. todo:: All below is draft and needs work!!!! |
307 | 305 | |
308 | 306 | Process calculus & more |
@@ -365,7 +363,7 @@ | ||
365 | 363 | processes -- and prove the are the same (or nor). And look for patterns that should not (never) happen; like deadlocks_ |
366 | 364 | and livelocks_. |
367 | 365 | |
368 | -I like this algebra aspect, as we can use inside some Castle-Tool. | |
366 | +I like this algebra aspect, as we can use inside some Castle-Tool to validate the design is sound. | |
369 | 367 | |
370 | 368 | Π-calculus |
371 | 369 | ~~~~~~~~~~ |
@@ -381,10 +379,36 @@ | ||
381 | 379 | no functions, not even an `if-statement` (all quite fundamental for a programming language). It is bases on **names**, |
382 | 380 | which mirrors both *variables* and *channels*. |
383 | 381 | |
384 | -Actor Models | |
385 | ------------- | |
382 | +The Actor Model | |
383 | +--------------- | |
386 | 384 | |
387 | -Calculus-vs-Actors_ | |
385 | +The Actor-Model_ is strictly speaking not a Process-Calculus_, but it has many similarities. A big dissimilarity is the | |
386 | +inspiration; where a Process-Calculus_ are based on mathematics, the Actor-Model_ is inspirited by physics. See | |
387 | +Calculus-vs-Actors_ for more on there (dis)similarities. | |
388 | +|BR| | |
389 | +The Actor-Model_ begun in 1973, matured in the 80’s, and become fashionable when “cloud computing” started. There are | |
390 | +many “bold-on” actor-packages for almost all populair languages. They focus mostly on *robust, scalable, distributed | |
391 | +applications*; less on the speed-up of a single programm. Still, the :ref:`”Many Core” concept<CC>` we use for CCastle | |
392 | +is closely related. | |
393 | + | |
394 | +Being inspired by physics, which is concurent by nature, the perception differs. An *actor* is local, “active”, and | |
395 | +independent. It can only act on message that it receives, sent new messages, and/or create new actors. It (typically) | |
396 | +has internal state, but that is completely internal (or *private*, as developers call it). | |
397 | +|BR| | |
398 | +There is no global state, no central synchronisation, no “shared memory”, no (overal) orchestration. Everything is | |
399 | +decentral. | |
400 | + | |
401 | +One can model many well-known software-systems as an Actor-Model_: like email, SOAP, and other web-services. But also | |
402 | +interrupt-handling can modeled with actors: An extern message triggers the “*interrupt-handler* actor” --async of the | |
403 | +main-code; another *actor*-- which has to sent data (aka a message) to the main actor. | |
404 | + | |
405 | +Another interesting dissimilarity is that the Actor-Model_, and the Actor-Model-Theory_, is also influent by | |
406 | +SW-Enginering and there languages. Which probably made is also convenient to design new programming-languages on this | |
407 | +theory. | |
408 | + | |
409 | + | |
410 | + | |
411 | +.. hint:: Unlike Process-Calculus_\es, there is only one Actor-Model_ | |
388 | 412 | |
389 | 413 | ---------- |
390 | 414 |
@@ -436,31 +460,33 @@ | ||
436 | 460 | Those ‘rules’ resembles the boolean algebra, that most developers know: `NOT(x OR y) == NOT(x) AND NOT(y)`. See |
437 | 461 | wikipedia for examples on ACP_. |
438 | 462 | |
463 | +.. _ACP: https://en.wikipedia.org/wiki/Algebra_of_communicating_processes | |
464 | +.. _Actor-Model-Theory: https://en.wikipedia.org/wiki/Actor_model_theory | |
465 | +.. _Actor-Model: https://en.wikipedia.org/wiki/Actor_model | |
466 | +.. _Broadcasting: https://en.wikipedia.org/wiki/Broadcasting_(networking) | |
467 | +.. _CCS: https://en.wikipedia.org/wiki/Calculus_of_communicating_systems | |
468 | +.. _CSP: https://en.wikipedia.org/wiki/Communicating_sequential_processes | |
469 | +.. _Calculus-vs-Actors: https://en.wikipedia.org/wiki/Actor_model_and_process_calculi | |
439 | 470 | .. _Concurrency: https://en.wikipedia.org/wiki/Concurrency_(computer_science) |
440 | -.. _parallelism: https://en.wikipedia.org/wiki/Parallel_computing | |
441 | -.. _pthreads: https://en.wikipedia.org/wiki/Pthreads | |
442 | -.. _Threads: https://en.wikipedia.org/wiki/Thread_(computing) | |
443 | -.. _Multi-Core: https://en.wikipedia.org/wiki/Multi-core_processor | |
444 | -.. _deadlocks: https://en.wikipedia.org/wiki/Deadlock | |
445 | -.. _livelocks: https://en.wikipedia.org/wiki/Deadlock#Livelock | |
446 | 471 | .. _Critical-Section: https://en.wikipedia.org/wiki/Critical_section |
447 | 472 | .. _Critical-Sections: Critical-Section_ |
473 | +.. _Distributed-Computing: https://en.wikipedia.org/wiki/Distributed_computing | |
474 | +.. _Events: https://en.wikipedia.org/wiki/Event_(computing) | |
475 | +.. _Futures: https://en.wikipedia.org/wiki/Futures_and_promises | |
476 | +.. _Go: https://en.wikipedia.org/wiki/Go_(programming_language) | |
477 | +.. _Message-Passing: https://en.wikipedia.org/wiki/Message_passing | |
478 | +.. _Multi-Core: https://en.wikipedia.org/wiki/Multi-core_processor | |
479 | +.. _Occam: https://en.wikipedia.org/wiki/Occam_(programming_language) | |
480 | +.. _Petri-Net: https://en.wikipedia.org/wiki/Petri_net | |
481 | +.. _Pi-Calculus: https://en.wikipedia.org/wiki/Π-calculus | |
482 | +.. _Process-Calculus: https://en.wikipedia.org/wiki/Process_calculus | |
483 | +.. _RPC: https://en.wikipedia.org/wiki/Remote_procedure_call | |
484 | +.. _Reliability: https://en.wikipedia.org/wiki/Reliability_(computer_networking) | |
448 | 485 | .. _Semaphores: https://en.wikipedia.org/wiki/Semaphore_(programming) |
449 | 486 | .. _Spinlocking: https://en.wikipedia.org/wiki/ |
450 | -.. _Distributed-Computing: https://en.wikipedia.org/wiki/Distributed_computing | |
451 | -.. _Message-Passing: https://en.wikipedia.org/wiki/Message_passing | |
452 | -.. _Events: https://en.wikipedia.org/wiki/Event_(computing) | |
453 | -.. _RPC: https://en.wikipedia.org/wiki/Remote_procedure_call | |
454 | -.. _Broadcasting: https://en.wikipedia.org/wiki/Broadcasting_(networking) | |
455 | -.. _Reliability: https://en.wikipedia.org/wiki/Reliability_(computer_networking) | |
456 | -.. _Process-Calculus: https://en.wikipedia.org/wiki/Process_calculus | |
457 | -.. _Futures: https://en.wikipedia.org/wiki/Futures_and_promises | |
458 | -.. _CSP: https://en.wikipedia.org/wiki/Communicating_sequential_processes | |
459 | -.. _Occam: https://en.wikipedia.org/wiki/Occam_(programming_language) | |
487 | +.. _Threads: https://en.wikipedia.org/wiki/Thread_(computing) | |
460 | 488 | .. _Transputer: https://en.wikipedia.org/wiki/Transputer |
461 | -.. _Go: https://en.wikipedia.org/wiki/Go_(programming_language) | |
462 | -.. _CCS: https://en.wikipedia.org/wiki/Calculus_of_communicating_systems | |
463 | -.. _ACP: https://en.wikipedia.org/wiki/Algebra_of_communicating_processes | |
464 | -.. _Petri-Net: https://en.wikipedia.org/wiki/Petri_net | |
465 | -.. _Calculus-vs-Actors: https://en.wikipedia.org/wiki/Actor_model_and_process_calculi | |
466 | -.. _Pi-Calculus: https://en.wikipedia.org/wiki/Π-calculus | |
489 | +.. _deadlocks: https://en.wikipedia.org/wiki/Deadlock | |
490 | +.. _livelocks: https://en.wikipedia.org/wiki/Deadlock#Livelock | |
491 | +.. _parallelism: https://en.wikipedia.org/wiki/Parallel_computing | |
492 | +.. _pthreads: https://en.wikipedia.org/wiki/Pthreads |
@@ -1,39 +0,0 @@ | ||
1 | -.. include:: /std/localtoc.irst | |
2 | - | |
3 | -.. _ActorAbstractions: | |
4 | - | |
5 | -========================= | |
6 | -Actor Abstractions (IDEA) | |
7 | -========================= | |
8 | - | |
9 | -.. post:: | |
10 | - :category: Castle DesignStudy | |
11 | - :tags: Castle, Concurrency, DRAFT | |
12 | - | |
13 | - The Actor-Model_ which is inspired by physics, unlike older models like the famous Petri-net_ that are mostly | |
14 | - mathematical. And has become popular for Distributed-Computing_, where each node/computing act as in independent, | |
15 | - active actor. | |
16 | - | |
17 | - As an abstraction, those active actors are similar to the :ref:`”Many Core” concept<CC>` we use for CCastle. Hence, we study this model a bit more | |
18 | - | |
19 | ----------------------- | |
20 | - | |
21 | -Actor-Model_ | |
22 | -Actor-Model-Theory_ | |
23 | - | |
24 | - | |
25 | - | |
26 | ----------- | |
27 | - | |
28 | -.. rubric:: Footnotes | |
29 | - | |
30 | -.. [#XXX] | |
31 | - YYY | |
32 | - | |
33 | -.. _Petri-Net: https://en.wikipedia.org/wiki/Petri_net | |
34 | -.. _Actor-Model: https://en.wikipedia.org/wiki/Actor_model | |
35 | -.. _Actor-Model-Theory: https://en.wikipedia.org/wiki/Actor_model_theory | |
36 | -.. _Distributed-Computing: https://en.wikipedia.org/wiki/Distributed_computing | |
37 | - | |
38 | -.. _Actor-Model: https://en.wikipedia.org/wiki/Actor_model | |
39 | -.. _Actor-Model-Theory: https://en.wikipedia.org/wiki/Actor_model_theory |
@@ -47,3 +47,9 @@ | ||
47 | 47 | **2017**). which has no theme and other support to make it more nice-looking. Therefore all those “lines” are comment |
48 | 48 | out (or rewritten) |
49 | 49 | |
50 | + | |
51 | +Needs (index) | |
52 | + | |
53 | +.. needtable:: | |
54 | + :style: table | |
55 | + :sort: title |