High level concurrency

52
High%level Concurrency © Robert Brown August 2015 @robby_brown

Transcript of High level concurrency

  • High%level)Concurrency

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Overview

    1. The&Problems

    2. Architecture&Theory

    3. Examples

    4. Demo

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • The$Problems

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Atomicity

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Nondeterminism

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Race%Condi+ons

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Mutual&Exclusion

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Dead%lock

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • The$list$goes$on...

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Keeping'track'of'so'much'informa3on'is'hard

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Computers*are*good*at*tracking*lots*of*informa4on

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • We#write#code#that#tests#code.

    We#write#code#that#generates#code.

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Let's&use&a&system&that&lets&the&computer&manage&concurrency

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Architecture)Theory

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Actor&Model

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • A"universal"primi.ve"of"concurrent"computa.on."Defini(on"of"an"Actor1

    1"Wikipedia

    "Robert"Brown"August"2015"@robby_brown

    https://en.wikipedia.org/wiki/Actor_modelhttps://twitter.com/robby_brown

  • [T]he&problem&with&[OOP]&languages&is&theyve&got&all&this&implicit&

    environment&that&they&carry&around&with&them."Joe"Armstrong3

    3"Coder's"at"Work

    "Robert"Brown"August"2015"@robby_brown

    http://www.amazon.com/gp/product/1430219483https://twitter.com/robby_brown

  • You$wanted$a$banana$but$what$you$got$was$a$gorilla$holding$the$banana$

    and$the$en3re$jungle."Joe"Armstrong3

    3"Coder's"at"Work

    "Robert"Brown"August"2015"@robby_brown

    http://www.amazon.com/gp/product/1430219483https://twitter.com/robby_brown

  • I'm$sorry$that$I$long$ago$coined$theterm$"objects"$for$this$topic$because$it$gets$many$people$to$focus$on$the

    lesser$idea."Alan"Kay2

    2"Squeak"Mailing"List

    "Robert"Brown"August"2015"@robby_brown

    http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.htmlhttps://twitter.com/robby_brown

  • The$key$in$making$great$and$growable$systems$is$much$more$to$

    design$how$its$modules$communicate$rather$than$what$their$internal$proper7es$and$behaviors$

    should$be."Alan"Kay2

    2"Squeak"Mailing"List

    "Robert"Brown"August"2015"@robby_brown

    http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.htmlhttps://twitter.com/robby_brown

  • Protocol'oriented,programming,focuses,on,interac4ons,rather,than,

    object,hierarchies.See#WWDC#2015#Session#408

    "Robert"Brown"August"2015"@robby_brown

    https://developer.apple.com/videos/wwdc/2015/?id=408https://twitter.com/robby_brown

  • Actor&Opera+ons4

    1. Make'local'decisions

    2. Create'other'actors

    3. Send/receive'messages

    4"Wikipedia

    "Robert"Brown"August"2015"@robby_brown

    https://en.wikipedia.org/wiki/Actor_modelhttps://twitter.com/robby_brown

  • Warning:(Flow(Charts(Ahead5

    5"XKCD"518

    "Robert"Brown"August"2015"@robby_brown

    https://xkcd.com/518/https://twitter.com/robby_brown

  • Typical(Actor(Flow

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • ExampleYour%Code%as%a%Crime%Scene

    "Robert"Brown"August"2015"@robby_brown

    https://pragprog.com/book/atcrime/your-code-as-a-crime-scenehttps://twitter.com/robby_brown

  • Sequen&al)Processing

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Concurrent)Processing

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Parallel&Processing

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Monad&Binding

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Two$level(Aggrega-on

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Interchangable,Parts

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Other&Examples

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Instagram

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Deckset

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • LLVM6

    6"LLVM"for"Grad"Students

    "Robert"Brown"August"2015"@robby_brown

    http://adriansampson.net/blog/llvm.htmlhttps://twitter.com/robby_brown

  • Automator

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • IFTTT

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Workflow

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Summary

    1. The&Problems

    2. Architecture&Theory

    3. Examples

    4. Demo

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • One$Final$Thought

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • The$Main$Thread$is$a$Singleton!

    !!"!#!$!%

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Demo

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Ques%ons?

    "Robert"Brown"August"2015"@robby_brown

    https://twitter.com/robby_brown

  • Resources(to(Learn(More WWDC%2015%Session%226

    Actor%Model

    Communica;ng%Sequen;al%Processes%(CSP)

    "Robert"Brown"August"2015"@robby_brown

    https://developer.apple.com/videos/wwdc/2015/?id=226https://en.wikipedia.org/wiki/Actor_modelhttps://en.wikipedia.org/wiki/Communicating_sequential_processeshttps://twitter.com/robby_brown

  • In#Depth#Resources MapReduce

    Lambda-Architecture

    Reac3ve-Streams

    WWDC-2015-Session-408

    Amdahl's-Law

    "Robert"Brown"August"2015"@robby_brown

    https://en.wikipedia.org/wiki/MapReducehttps://en.wikipedia.org/wiki/Lambda_architecturehttp://www.reactive-streams.orghttps://developer.apple.com/videos/wwdc/2015/?id=408https://en.wikipedia.org/wiki/Amdahl%27s_lawhttps://twitter.com/robby_brown