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

Preview:

Citation preview

The Brave New World of Software

Adam KempStaff Software EngineerNational 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

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

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?

Clock speed history

1982 1985 1989 1992 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 200810

100

1000

10000

Intel Clock Speed History

Clock Speed (MHz)

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

“Intel pledges 80 cores in five years” - Headline following Intel Developer Forum

September 2006

The solution: Multi-core• Dual-core• Quad-core• N-core

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:

void doSomeStuff(){

startTask1();startTask2();

waitForTasks();}

startTask1()startTask2()

doTask2()doTask1()

waitForTasks()

Threads

• Threads are tasks that can be run at the same time as other tasks

startTask1()startTask2()

doTask2()doTask1()

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

Dataflow Example

Dataflow Example

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/