Life is too short for imperative programming John
- Slides: 39
”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 – 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 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 • 1998—Bluetail – Jane Walerud VD – Mail robustifier, Web prioritizer
SSL Accelerator • Alteon Web. Systems' SSL Accelerator offers phenomenal performance, management and scalability. – Network Computing
Kreditor Order 100: invoice Order details 100: Kreditor 97: -
• 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 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 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
Megaco Commands Context
Megaco Commands Context Termination Add
Megaco Commands Context Add Context Termination Context
Megaco Commands Context Termination Stream Modify
Megaco Commands Context Subtract Context Termination Stream Context
Megaco Commands Context Termination Stream Subtract
Megaco Commands Context
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 • 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 had just been found and fixed by the development team
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 • Caused by corrupt datastructures after the first Subtract
• 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
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
• Functional programming on Wall Street – Proprietary trading – 60 people – OCaml primary development language
The Cat Among the Pigeons
The Cat Among the Pigeons • Two cores, each hyperthreaded
- Short short short long long long short short short
- Quantifiers kahoot
- Too broad and too narrow examples
- Not too narrow not too deep
- Broad and specific topic examples
- Högkonjuktur inflation
- Too broad and too narrow examples
- Just about right scale
- Too foreign for home too foreign for here
- Too anointed to be disappointed meaning
- An imperative statement in system programming
- Imperative programming languages
- Assembly scheme in system software
- For imperative statement 2 pass assembler
- Your answer is too short (use at least 9 words).
- Is too short economy
- Perbedaan linear programming dan integer programming
- Greedy algorithm vs dynamic programming
- System programming definition
- Integer programming vs linear programming
- Definisi linear
- The major cause
- Life is too important to be taken seriously
- Fspos
- Typiska drag för en novell
- Tack för att ni lyssnade bild
- Vad står k.r.å.k.a.n för
- Varför kallas perioden 1918-1939 för mellankrigstiden?
- En lathund för arbete med kontinuitetshantering
- Personalliggare bygg undantag
- Personlig tidbok
- Sura för anatom
- Densitet vatten
- Datorkunskap för nybörjare
- Stig kerman
- Mall för debattartikel
- Delegerande ledarstil
- Nyckelkompetenser för livslångt lärande
- Påbyggnader för flakfordon
- Kraft per area