Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments.

Similar presentations


Presentation on theme: "The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments."— Presentation transcript:

1 The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments

2 Back in my day… Programmers had it tough… – No fancy high-level languages (except C…) – What’s an “IDE”? – Debuggers? Just use printf – No Internet (i.e., no Google) Good for you, old man…

3 Back to reality Programming is still just as hard Problems keep getting harder as tools get better The tools are never good enough Also applies to hardware

4 Hardware comparison RAM – Then: 640 kB should be enough for anyone – Now: 2 GB minimum Clock speed: – Then: 8-10 MHz (“turbo mode”) – Now: 2-3 GHz

5 Moore’s Law The number of transistors on a chip will double about once every 2 years

6 Clock speed reality check 3 GHz in 2002 – => 48 GHz next year?

7 Clock speed history

8 Speed limits Heat Power

9 How is that a software problem? “I hate it when the computer gets in the way of my computer science.” – Some LabVIEW developer

10 “Intel pledges 80 cores in five years” - Headline following Intel Developer Forum September 2006 The solution: Multi-core Dual-core Quad-core N-core

11 How can software keep up? Optimize – Only goes so far Do more in parallel

12 Programming the old way: void doSomeStuff() { doTask1(); doTask2(); }

13 Programming the new way: void doSomeStuff() { startTask1(); startTask2(); waitForTasks(); } startTask1() startTask2() startTask1() startTask2() doTask2() doTask1() waitForTasks()

14 Threads Threads are tasks that can be run at the same time as other tasks startTask1() startTask2() startTask1() startTask2() doTask2() doTask1() waitForTasks() Thread 1 Thread 2 Thread 3

15 Programming Paradigms Procedural/Imperative – Sequence of steps executed in order – Difficult to visualize multiple threads – Difficult to write multiple threads – Even harder to write safe code for multiple threads “Probably the greatest cost of concurrency is that concurrency really is hard...” – Herb Sutter

16 Programming Paradigms Dataflow – Emphasis on data – Data “flows” through the program

17 Dataflow Example Control/indicator terminals Wires Primitives (built-in functions)

18 Dataflow Data flows through “wires” – Produced by output terminals – Consumed by input terminals Execution order defined by flow – A node runs when it has all of its inputs – A node’s outputs are available only after it runs

19 Dataflow Example

20 Thread 1 Thread 2 Thread 3

21 Conclusion Programming is just as hard today Hardware is not getting faster Parallel programming is the future Dataflow may be a better way to do parallel programming

22 Advice Learn on your own – Keep up with tech trends – Work on your own pet projects – Work with other people Get an internship Try LabVIEW –


Download ppt "The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments."

Similar presentations


Ads by Google