I saw an article on slashdot about parallelism and the writer posed the question "Is it too hard for programmers to think about?". So naturally I started looking up what exactly parallelism is in terms of applications. My question is why is it so hard to achieve? Why not develop compilers that divide the work up (I saw this in the wikipedia article)? How can I write code that uses parallelism? Is it so hard because you have to use low level languages to do it?