Slide 1

Slide 1 text

Benjamin Encz @benjaminencz The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 1

Slide 2

Slide 2 text

The Unreasonable Effectiveness Of Declarative Code And The Near Future of Programming The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 2

Slide 3

Slide 3 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 3

Slide 4

Slide 4 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 4

Slide 5

Slide 5 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 5

Slide 6

Slide 6 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 6

Slide 7

Slide 7 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 7

Slide 8

Slide 8 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 8

Slide 9

Slide 9 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 9

Slide 10

Slide 10 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age • Idempotent The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 9

Slide 11

Slide 11 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age • Idempotent • Commutative The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 9

Slide 12

Slide 12 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age • Idempotent • Commutative • Concurrent The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 9

Slide 13

Slide 13 text

Facts instead of Behavior usernameLabel.text <~ user.name ageLabel.text <~ user.age • Idempotent • Commutative • Concurrent • Reactive The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 9

Slide 14

Slide 14 text

Declarative Programming in Swift The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 10

Slide 15

Slide 15 text

public protocol DownloadSyncable { static func handleServerResponse( response: SyncResponse, request: SyncRequest, state: SyncRequestState? ) -> ( changes: [ModelChange], newState: SyncRequestState?, nextRequest: SyncRequest? ) } The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 11

Slide 16

Slide 16 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 12

Slide 17

Slide 17 text

• Fact instead of behavior -> Easier to reason about The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 12

Slide 18

Slide 18 text

• Fact instead of behavior -> Easier to reason about • Interface forms DSL -> Constrained, unified implementation The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 12

Slide 19

Slide 19 text

• Fact instead of behavior -> Easier to reason about • Interface forms DSL -> Constrained, unified implementation • Separation of concerns via indirection The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 12

Slide 20

Slide 20 text

• Fact instead of behavior -> Easier to reason about • Interface forms DSL -> Constrained, unified implementation • Separation of concerns via indirection • Testability The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 12

Slide 21

Slide 21 text

The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 13

Slide 22

Slide 22 text

bit.ly/declarative-swift Further Reading: Declarative API Design in Swift (me) Defining Declarative (awelonblue) @benjaminencz The Unreasonable Effectiveness Of Declarative Code | @benjaminencz | Swift Summit, November 2016 14