1 / 39

”Life is too short for imperative programming”

”Life is too short for imperative programming”. John Hughes. Software Crisis, 1968—today. Software project outcomes. In Large Companies. Technology adoption life cycle. Technology adoption life cycle. Technology adoption life cycle. The Erlang Story. 1986—Erlang emerges at Ericsson

oni
Download Presentation

”Life is too short for imperative programming”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Software Crisis, 1968—today • Software project outcomes

  3. In Large Companies

  4. Technology adoption life cycle

  5. Technology adoption life cycle

  6. Technology adoption life cycle

  7. 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

  8. 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

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

  10. SSL Accelerator • Alteon WebSystems' SSL Accelerator offers phenomenal performance, management and scalability. • Network Computing

  11. Kreditor Order 100:- invoice Order details Kreditor 100:- 97:-

  12. Founded May 2006 • Selling… QuickCheck! • Extra feature: simplifies failing tests

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

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

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

  16. Megaco Commands Context Context

  17. Megaco Commands Context Context Context Termination Add

  18. Megaco Commands Context Context Add Context Termination Termination

  19. Megaco Commands Context Context Context Termination Termination Modify Stream Stream

  20. Megaco Commands Context Context Subtract Context Termination Termination Stream Stream

  21. Megaco Commands Context Context Context Termination Subtract Stream Stream

  22. Megaco Commands Context Context

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

  24. 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

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

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

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

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

  29. How do they do it? C++ plugins

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

  31. New Approach Haskell contract models C++ plugins

  32. Functional programming on Wall Street • Proprietary trading • 60 people • OCaml primary development language

  33. The Cat Among the Pigeons

  34. The Cat Among the Pigeons • Two cores, each hyperthreaded

More Related