Presentation is loading. Please wait.

Presentation is loading. Please wait.

”Life is too short for imperative programming” John Hughes.

Similar presentations


Presentation on theme: "”Life is too short for imperative programming” John Hughes."— Presentation transcript:

1

2 ”Life is too short for imperative programming” John Hughes

3 Software Crisis, 1968—today Software project outcomes

4 In Large Companies

5

6 Technology adoption life cycle

7

8

9 The Erlang Story 1986—Erlang emerges at Ericsson –Functional language –Extra support for concurrency & fault tolerance Early 1990s—small products 1996 –Open Telecoms Platform (higher-order functions for robust telecom systems) –AXD 301 project starts

10 The AXD 301 ATM switch (telephone backbone) Born out of a failed project! 1,5 MLOC Erlang Seven nines reliability 4-10x better productivity, quality

11 Erlang Story II 1998—Erlang banned for new projects 1998—Open source Erlang 1998—Bluetail –Jane Walerud VD –Mail robustifier, Web prioritizer

12 SSL Accelerator Alteon WebSystems' SSL Accelerator offers phenomenal performance, management and scalability. –Network Computing

13 Kreditor Order 100:- Order details 97:- invoice 100:-

14 Founded May 2006 Selling… QuickCheck! –Extra feature: simplifies failing tests

15 Session Border Gateway: A Firewall for IP telephony Media Proxy Opens media pin- holes for calls in progress 2x10G Ethernet Hardware for packet forwarding Media Gateway Controller Monitors signalling traffic; opens and closes pinholes 2x1G Ethernet Linux ”blade” processor

16 Session Border Gateway: A Firewall for IP telephony Media Proxy Media Gateway Controller ITU standard protocol H.248 (Megaco) 150KLOC Erlang InterWork Description defines a subset

17 Session Border Gateway: A Firewall for IP telephony Media Proxy QuickCheck

18 Megaco Commands Context

19 Megaco Commands Context Termination Add

20 Megaco Commands Context Termination Add

21 Megaco Commands Context Termination Stream Modify

22 Megaco Commands Context Termination Stream Subtract

23 Megaco Commands Context Termination Stream Subtract

24 Megaco Commands Context

25 Command Sequences Normal sequence: Add Modify Add Modify Subtract We wanted to test other sequences that, according to the IWD, should work.

26 Add/Modify Error Modify assumes there are already two terminations in the context Same bug found in virtually every run! New ”bug precondition” needed for Modify Add Modify

27 Add/Subtract Error There one day, gone the next… This bug had just been found and fixed by the development team Add Subtract

28 Add/Add/Modify Error If the terminations have different numbers of streams Same underlying problem: Modify assumes each stream has two ends… Add Modify Add

29 Add/Add/Sub/Add… Error Extracted from a test case 160 commands long Caused by corrupt data- structures after the first Subtract Add Subtract Add Subtract

30 Derivatives trading in New York 10 Microsoft shares Option to buy ● for $100 anytime In 2007 Option to sell ● for $10 in Nov 2006

31 How do they do it? C++ plugins

32 Simon Peyton-Jones: Financial Contracts in Haskell anytime :: Contract -> Contract -- Acquire the underlying contract at -- any time before it expires (but -- you must acquire it)  The option to acquire 10 Microsoft shares, for $100, anytime between t1 and t2 years from now golden_handcuff = anytime shares shares = zero `or` (scaleK -100 (one Dollar) `and` scaleK 10 (one MSShare)) anytime : Choose when MS shares are a “currency” or : Choose whether

33 New Approach C++ plugins Haskell contract models

34 Functional programming on Wall Street –Proprietary trading –60 people –OCaml primary development language

35

36

37

38 The Cat Among the Pigeons

39 Two cores, each hyperthreaded


Download ppt "”Life is too short for imperative programming” John Hughes."

Similar presentations


Ads by Google