220 likes | 337 Views
The Brave New World of Software. Adam Kemp Staff Software Engineer National Instruments. 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….
E N D
The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments
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…
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
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
Moore’s Law • The number of transistors on a chip will double about once every 2 years
Clock speed reality check • 3 GHz in 2002 • => 48 GHz next year?
Speed limits • Heat • Power
How is that a software problem? • “I hate it when the computer gets in the way of my computer science.” – Some LabVIEW developer
The solution: Multi-core • Dual-core • Quad-core • N-core “Intel pledges 80 cores in five years” - Headline following Intel Developer Forum September 2006
How can software keep up? • Optimize • Only goes so far • Do more in parallel
Programming the old way: void doSomeStuff() { doTask1(); doTask2(); }
Programming the new way: startTask1() startTask2() void doSomeStuff() { startTask1(); startTask2(); waitForTasks(); } doTask1() doTask2() waitForTasks()
Threads startTask1() startTask2() • Threads are tasks that can be run at the same time as other tasks doTask1() doTask2() waitForTasks()
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
Programming Paradigms • Dataflow • Emphasis on data • Data “flows” through the program
Dataflow Example Control/indicator terminals Wires Primitives (built-in functions)
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
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
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/