DIFFERENT TASKS NON DETERMINISTIC, FAULT TOLERANCE (LET IT CRASH) PARALLELISM (SOLUTION DOMAIN) MULTIPLE SIMULTANEOUS EXECUTION OF THE SAME TASK DETERMINISTIC, PERFORMANCE
NO CONSTRAINTS DATA RACE (TWO OR MORE WRITERS TO SHARED DATA) LOCK OR MUTUAL EXCLUSION (SEQUENTIAL ACCESS TO SHARED DATA) DEADLOCK (TWO OR MORE LOCKS IN THE SAME THREAD) LIVELOCK (DEADLOCK WITH TIMEOUTS, NO PROGRESS IS MADE)
EFFECTS) IMMUTABLE PERSISTENT DATA STRUCTURES (STRUCTURE SHARING, VERSIONING) FUNCTION COMPOSITION OVER STATE MUTATING INSTRUCTIONS RECURSION WITH TCO OVER STATE MUTATING ITERATIONS (STATE PASSING VIA ARGUMENTS) DATA-ORIENTED PROGRAMMING (SEPARATE DATA AND FUNCTIONS) ABSTRACTION-ORIENTED PROGRAMMING (PROGRAM TO WELL KNOWN DATA ABSTRACTIONS)
VALUES OVER TIME (NOT A SINGLE VALUE) CURRENT STATE IS IMMUTABLE NO MATTER WHAT HAPPENS TO THE IDENTITY IN THE FUTURE IDENTITY IS A NAMED REFERENCE TO CONSTANTLY CHANGING STATE SOFTWARE TRANSACTIONAL MEMORY (ATOMIC, CONSISTENT, ISOLATED STATE UPDATES WITH RETRIES)
NOT YET AVAILABLE AND TO BE COMPUTED IT THE FUTURE CODE EXECUTES WHEN THE DATA IT DEPENDS ON BECOMES AVAILABLE PROMISES ARE COMPOSABLE WITH CONVENIENT ERROR HANDLING (RESOLVE, REJECT) PROMISES PROVIDE SEQUENTIAL INTERFACE TO ASYNCHRONOUS SYSTEMS
WAITING FOR A MESSAGE TO PROCESS) ACTORS INTERNALLY OPERATE SEQUENTIALLY (PURE FUNCTIONS WITH PATTERN MATCHING ON MESSAGE TYPE) ACTORS ARE DECOUPLED FROM EACH OTHER BY MAILBOXES (ASYNCHRONOUS QUEUES) SUPERVISOR SEPARATES ERROR HANDLING (LET IT CRASH) FROM NORMAL OPERATION (HAPPY PATH, NO DEFENSIVE PROGRAMMING) ERROR-KERNEL PATTERN (DELEGATE DANGEROUS TASKS TO CHILD ACTORS TO PREVENT IMPORTANT STATE-CARRYING ACTOR FROM CRASHING) FAULT TOLERANCE AND SCALABILITY