title: What parallel programming model do you recommend today to take advantage of the manycore processors of tomorrow?
body: <p>If you were writing a new application from scratch today, and wanted it to scale to all the cores you could throw at it tomorrow, what parallel programming model/system/language/library would you choose?  Why?</p>
  
  <p>I am particularly interested in answers along these axes:</p>
  
  <ol>
  <li>Programmer productivity / ease of use (can mortals successfully use it?)</li>
  <li>Target application domain (what problems is it (not) good at?)</li>
  <li>Concurrency style (does it support tasks, pipelines, data parallelism, messages...?)
  <li>Maintainability / future-proofing (will anybody still be using it in 20 years?)</li>
  <li>Performance (how does it scale on what kinds of hardware?)</li>
  </ol>
  
  <p>I am being deliberately vague on the nature of the application in anticipation of getting good general answers useful for a variety of applications.</p>