‘Software Engineering’ } me.loves = [facts, racket_sports, travel] If fact.useless and fact.funny: me.loves[facts] = fact if you.loves.contains(‘squash’): you.contact(me) [me.travel() for day in free_days]
concepts Codify the structure of the data Serve as a fundamental unit of compositionality Allow easy error prevention Appears from the oldest to the newest programming languages Robin Milner: Types are the yeast of computer programming: they make it digestible !!!
communication primitives (send, receive, choice…) Messages are augmented with communication header (sender, receiver, label, conditions…) Capture the global communication, centering on interactions
context allows to control the communication Having granularity allows to put constraints on the right place Early error detection is much cheaper More documented code Nice abstraction means easy programming – you program with send and receive (no threads, sockets, channels)
PCarol PBob Attach(Embed) monitor to each application (CC). Monitors check that every incoming and outgoing message is correct w.r.t. the specifications via message header. ... Sender: you Receiver: me Label: Hello …