Life is too short for imperative programming John

  • Slides: 39
Download presentation

”Life is too short for imperative programming” John Hughes

”Life is too short for imperative programming” John Hughes

Software Crisis, 1968—today • Software project outcomes

Software Crisis, 1968—today • Software project outcomes

In Large Companies

In Large Companies

Technology adoption life cycle

Technology adoption life cycle

Technology adoption life cycle

Technology adoption life cycle

Technology adoption life cycle

Technology adoption life cycle

The Erlang Story • 1986—Erlang emerges at Ericsson – Functional language – Extra support

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

The AXD 301 • ATM switch (telephone backbone) • Born out of a failed

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

Erlang Story II • 1998—Erlang banned for new projects • 1998—Open source Erlang •

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

SSL Accelerator • Alteon Web. Systems' SSL Accelerator offers phenomenal performance, management and scalability.

SSL Accelerator • Alteon Web. Systems' SSL Accelerator offers phenomenal performance, management and scalability. – Network Computing

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

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

 • Founded May 2006 • Selling… Quick. Check! – Extra feature: simplifies failing

• Founded May 2006 • Selling… Quick. Check! – Extra feature: simplifies failing tests

Session Border Gateway: A Firewall for IP telephony Monitors signalling traffic; opens and closes

Session Border Gateway: A Firewall for IP telephony Monitors signalling traffic; opens and closes pinholes Opens media pinholes for calls in progress 2 x 1 G Ethernet Media Gateway Controller Linux ”blade” processor 2 x 10 G Ethernet Media Proxy Hardware for packet forwarding

Session Border Gateway: A Firewall for IP telephony Media Gateway Controller ITU standard protocol

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

Session Border Gateway: A Firewall for IP telephony Quick. Check Media Proxy

Session Border Gateway: A Firewall for IP telephony Quick. Check Media Proxy

Megaco Commands Context

Megaco Commands Context

Megaco Commands Context Termination Add

Megaco Commands Context Termination Add

Megaco Commands Context Add Context Termination Context

Megaco Commands Context Add Context Termination Context

Megaco Commands Context Termination Stream Modify

Megaco Commands Context Termination Stream Modify

Megaco Commands Context Subtract Context Termination Stream Context

Megaco Commands Context Subtract Context Termination Stream Context

Megaco Commands Context Termination Stream Subtract

Megaco Commands Context Termination Stream Subtract

Megaco Commands Context

Megaco Commands Context

Command Sequences • Normal sequence: Add Modify Add Subtract Modify Subtract We wanted to

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

Add/Modify Error Add Modify • Modify assumes there already two terminations in the context

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

Add/Subtract Error Add Subtract • There one day, gone the next… • This bug

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

Add/Modify Error Add Modify • If the terminations have different numbers of streams •

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

Add/Sub/Add… Error Add Add Subtract • Extracted from a test case 160 commands long

Add/Sub/Add… Error Add Add Subtract • Extracted from a test case 160 commands long • Caused by corrupt datastructures after the first Subtract

 • Derivatives trading in New York Option to buy ● for $100 anytime

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

How do they do it? C++ plugins

How do they do it? C++ plugins

Simon Peyton-Jones: Financial Contracts in Haskell § The option to acquire 10 Microsoft shares,

Simon Peyton-Jones: Financial Contracts in Haskell § The option to acquire 10 Microsoft shares, for $100, anytime between t 1 and t 2 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 = zero `or` (scale. K -100 (one Dollar) `and` scale. K 10 (one MSShare)) or: Choose whether MS shares are a “currency”

New Approach Haskell contract models C++ plugins

New Approach Haskell contract models C++ plugins

 • Functional programming on Wall Street – Proprietary trading – 60 people –

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

The Cat Among the Pigeons

The Cat Among the Pigeons

The Cat Among the Pigeons • Two cores, each hyperthreaded

The Cat Among the Pigeons • Two cores, each hyperthreaded