functional architecture
play

FUNCTIONAL ARCHITECTURE Phillip Trelford Trayport About Me Family - PowerPoint PPT Presentation

FUNCTIONAL ARCHITECTURE Phillip Trelford Trayport About Me Family Values Retail Halo 3 Trade Programming Languages Assemblers C with Classes Functional 6502 C++ JavaScript Z80 Java F# 680x0 C# Lua


  1. FUNCTIONAL ARCHITECTURE Phillip Trelford Trayport

  2. About Me Family Values Retail Halo 3 Trade

  3. Programming Languages Assemblers C with Classes Functional • 6502 • C++ • JavaScript • Z80 • Java • F# • 680x0 • C# • Lua • 80x86 • 65c816 • SH-2 • R3000 • C

  4. Video Game Decades 1980s/1990s 2000s/2010s Scripts Scripts C with Assemblers Classes

  5. Coroutine Zombies Pseudo Code random_pause 10 while not dead wait_until_in_range 50.0 home_in_on_target 10

  6. Coroutine Zombies Pseudo Code F# random_pause 10 yield! random_pause 10 while not dead while true do wait_until_in_range 50.0 yield! wait_range 50 home_in_on_target 10 yield! home_in 10

  7. Speed Runtime Development Super Nintendo DSL • Interprets byte code • Close to domain • On 3.58MHz CPU • Easy to port • At 60FPS • Zero compile time

  8. FP Sweet Spots Domain Computation Concurrency

  9. Thoughtworks Tech Radar 2012 F# Languages “F# is excellent at concisely expressing business and domain logic .”

  10. Types F# UML Class Diagram type Object(name) = member this.Name = name type Action = | Call of Object * string *Object | Async of Object * string *Object

  11. Functions Imply : Instrument[] -> Order[] -> Order[]

  12. Computation

  13. Concurrency async { do! control.MouseLeftButtonDown |> Async.AwaitEvent }

  14. Joule Trading screen

  15. Thoughtworks Tech Radar 2012 “Developers trying to achieve explicit business logic within an application may opt to express their domain in F# with the majority of plumbing code in C# .”

  16. Applications Erlang for Fault Tolerant Messaging • Messaging in Chat, Gaming, Messaging, NoSQL • Facebook, MMOG, RabbitMQ , Amazon, … F#/Scala • Computation in Insurance, Finance, Gaming • Credit Suisse, Jane Street, TrueSkill , Path of Go, … C #/Java/PHP/Python/Ruby… • CRUD in Line of Business Applications • Everything else

  17. Classes reference.Member(argument, …) Member5(reference, argument, …)

  18. Dot Driven Development

  19. Buttons Methods 63 Properties 63 Events 35 Constructors 1 Total Members 162

  20. XBLA: Path to Go – F# AI

  21. Q & A • Twitter: @ptrelford • Email: phil at trelford.com • Blog: http://trelford.com/blog

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend