the brave new world of software n.
Skip this Video
Loading SlideShow in 5 Seconds..
The Brave New World of Software PowerPoint Presentation
Download Presentation
The Brave New World of Software

Loading in 2 Seconds...

  share
play fullscreen
1 / 22
Download Presentation

The Brave New World of Software - PowerPoint PPT Presentation

oistin
94 Views
Download Presentation

The Brave New World of Software

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
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. Hardwarecomparison • 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. The solution: Multi-core • Dual-core • Quad-core • N-core “Intel pledges 80 cores in five years” - Headline following Intel Developer Forum September 2006

  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: startTask1() startTask2() void doSomeStuff() { startTask1(); startTask2(); waitForTasks(); } doTask1() doTask2() waitForTasks()

  14. Threads startTask1() startTask2() • Threads are tasks that can be run at the same time as other tasks doTask1() doTask2() waitForTasks()

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

  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 • http://www.ni.com/labview/