Resources to learn and understand parallel programming. The hard way

There’s no way other than the hard way. (c)

Parallel programming is considered as not easy or even advanced topic by many programmers. It’s the starting point for even more advanced stuff like distributed computations, reliability, CAP theorem, consensus problems and much more. Besides, deep understanding of how CPU and operating system works can help you to write less buggy software and parallel programming can help you with that too.

In this post I will focus on books describing parallel programming using 1 computer and 1 CPU using classical approaches. Neither they contain SSE instructions guides nor you will find matterials on CUDA or OpenCL. Similary you will find no resourced about Hadoop and/or MapReduce technologies and nothing about technologies supporting parallel programming out of the box like Go or Erlang.

So I will go now through all the resources which I find more or less useful. I’m not going to stick to any technology in general – the point is to understand the topic from different perspectives. The materials I’m refering to in general should not be considered as entry-level –  they require fair amount of knowledge, but nevertheless, list goes sorted starting from “easier” things.


Amazon store payment bug

Недавно купляючи в магазині Amazon книжку для кіндла, попав у цікаву ситуацію. Наскоро натиснувши Buy with 1 click and send to my kindle я трошки зачекав і мене перенаправило на віконечко з оплатою і одночасно запікав мобільник “Платіж відхилили”. Без причини, просто відхилили. Сумно. Вже збираючись закрити сторінку, на яку мене перенаправив Амазон після оплати, я замітив на останній ссилку “Read in browser”. І от.. бац – і я читаю книжку, за яку не заплатив. Жаль захист вони зробили нормальний і просто скопіювати текст мені було ліньки розбиратись з dom’ом тої сторінки не вийшло. На щастя книжка мала тільки 30 сторінок і Print Screen та безплатний сервіс по розпізнаванню тексту врятували мене.