Programowanie współbieżne

Wstęp

Programowanie współbieżne w ostatnich latach stało się istotną gałęzią informatyki wraz z upowszechnieniem się procesorów wielordzeniowych. Stawia ono jednak przed programistą szereg nowych wyzwań, przez co o specjalistów w tej dziedzinie trudno. Blok ten skierowany jest do wszystkich, którzy chcieliby poznać bliżej zagadnienia współbieżności, zarówno te podstawowe, nauczane w większości kursów uczelnianych, jak i bardziej nietrywialne oraz egzotyczne tematy takie, jak programowanie w Erlangu czy programowa pamięć transakcyjna.

Osoby odpowiedzialne

Kurs poprowadzi Zyx czyli Tomasz Jędrzejewski.

Powiązania

Kurs polecam w szczególności osobom pragnącym wziąć udział w bloku Programowanie w jądrze Linuksa i/lub Przetwarzanie superrównoległe. Zdobyte tu informacje na pewno przydadzą się podczas uczestnictwa w nich.

Program

Dzień Temat Opis
1 Klasyczna współbieżność Wprowadzenie do tematu współbieżności oraz klasycznych mechanizmów spotykanych w językach programowania.
2 Podstawy Erlanga Podstawy współbieżnego języka programowania Erlang.
3 Erlang w praktyce Praktyczny kurs Erlanga: hackowanie prostego, współbieżnego serwera poczty napisanego w Erlangu specjalnie na potrzeby Warsztatów.
X STM Programowa pamięć transakcyjna (poza programem, w kuluarach, dla chętnych)

Tematyka poszczególnych dni jest dość zróżnicowana, dlatego istnieje możliwość uczestnictwa tylko w części bloku. Dzień pierwszy przeznaczony jest dla osób, które do tej pory nie interesowały się specjalnie współbieżnością. Jeśli ktoś doskonale radzi sobie z takimi rzeczami, jak semafory, muteksy, zmienne warunkowe i potrafi "z palca" rozwiązać np. problem ucztujących filozofów, zapraszam go na dzień 2 i 3, czyli kurs Erlanga.

Z uwagi na to, że mamy tylko trzy dni, programowa pamięć transakcyjna będzie zorganizowana po godzinach wyłącznie dla osób chętnych. Wystarczy nawet jedna taka osoba, tylko należy się wcześniej ze mną umówić.

Wymagania

Od uczestników wymagana jest umiejętność swobodnego porozumiewania się w jednej z poniższych kombinacji języków:

  1. Java
  2. Java + C
  3. Java + D
  4. C + D

Mile widziane jest pewne obycie z programowaniem funkcyjnym (Erlang).

Na zajęciach zabronione będzie używanie języka C++ zarówno z powodów technicznych (brak wymaganych mechanizmów/bibliotek z rekomendacją Zyxist.com), jak i ideologicznych :).

Sprzęt, oprogramowanie

W trakcie zajęć należy mieć:

  1. Laptopa (będziemy dużo kodować)
  2. Zainstalowane środowisko programistyczne Erlanga, w które należy zaopatrzyć się przed warsztatami!
  3. Zainstalowany system kontroli wersji GIT (na potrzeby dnia trzeciego)

Materiały

  1. Zadania kwalifikacyjne
  2. Instrukcja instalacji Erlanga
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License