Monday, July 26, 2010

Lessons from the software space

Tim Bray, co-inventor of XML and now working on the Android team at Google, presented at OSCON recently in Oregon. There's a nice summary of his presentation on InfoWorld's website, and, I believe, a link to his presentation which I'll check out later. Here are some great quotes attributed to Tim's presentation from the article:
"Concurrency is hard. It involves a lot of problems that are very difficult to think about and reason about and understand," said Bray, who is developer advocate at Google. Bugs and performance bottlenecks are among the issues with concurrency, he said.
and
Historically, it has been thought that the way to program for concurrency is through threading, Bray said. But programming with threads, which offer multiple access to shared, mutable data, is "something that is not understood by application programmers, cannot be understood by application programmers, will never be understood by application programmers," added Bray.
One of the themes I've talked about in the past (e.g. this piece on "The problem with threads") is how hard it is to design using threads. SystemC, of course, uses threads and events for concurrency.

One might notice how Tim is not advocating software development with C/C++ using threads. We hear from the EDA community that C/C++ using threads makes the most sense for hardware design because everyone knows C. "It's practical." If that's the case, then why doesn't the software community, those who know C the best, advocate for a similar solution?