Cliff Click Jr on hardware transactional memory:
Really what the customers want to know is: “which locks do I need to ‘crack’ to get performance?”. Once they have that answer they are ready and willing to write fine-grained locking code. And nearly always the fine-grained locking is a very simple step up in complexity over what they had before. It’s not the case that they need to write some uber-hard-to-maintain code to get performance. Instead it’s the case that they have no clue which locks need to be “cracked” to get a speedup, and once that’s pointed out the fixes are generally straightforward.
Interesting thing about functional programming, actors monads is that they all come from the same place, promising to unlock large scale concurrency riches, in return for a little bit of devotion on our daily programming rituals.
I recently switched from Prototype.js to jQuery. One thing I appreciate about Prototype.js is that extent it goes to make functional programming easy with JavaScript.
jQuery doesn’t do functional programming. What most jQuery functions do is return the same object, while modifying it. It’s one big chain of side effects:
$('p').text('Hai').addClass('welcome').show();
It’s precisely this chaining style that makes jQuery so appealing to developers. It makes them happy, productive, creative. Out of that come a lot of plugins, sample code, and interesting UI techniques. A few that I wanted to use, which became the “killer app” that caused me to switch.
Functional programming may be the ultimate answer, but method chaining is the productivity lock people wanted to crack.