„Zrozumieć programowanie” - recenzja

Książki

Kilka tygodni temu przeczytałem pierwszą książkę Gynvaela Coldwinda pt. „Zrozumieć programowanie”, Jest to lektura dla osób, które już weszły w świat informatyki, poznały jakiś język programowania i rozumieją podstawowe zasady działania komputerów. Ksiażka jest podzielona na 5 części składających się w sumie z 15 rozdziałów. Każda z części opisuje inną dziedzinę informatyki.

Na początku dowiadujemy się podstawowych rzeczy o konsolach i interpreterach oraz o tym jak te narzędzia wpływają na pracę programisty. Dalej autor udziela nam praktycznych wskazówek, które mają pomóc czytać kod napisany w nieznanym nam języku programowania.

W drugiej części znalazły się rozdziały dotyczące niskopoziomowych aspektów informatyki. Ta część najbardziej przypadła mi do gustu. W jej pierwszym rozdziale Gynvael pokazuje jak stworzyć prostą maszynę wirtualną wykonującą kod maszynowy. W kolejnych trzech rozdziałach następuje przypomnienie podstawowych informacji z zakesu kodowania liczb całkowitych, zmienno i stałoprzecinkowych oraz liter. Jest to idealne wprowadzenie dla osób, które chcą zacząć programować aplikacji niskopoziomowe w C czy nawet w Asemblerze.

Trzecia część traktuje o procesach, wątkach i współbieżności, a także sposobach synchronizacji. Szkoda, że jest taka krótka. Mimo, że opisuje zrozumiale najważniejsze mechanizmy, to autor mógł wspomnieć o kilku gotowych rozwiązaniach, wspomagających pisanie aplikacji współbieżnych, dostępnych w bibliotece standardowej C++11. Moim zdaniem zawarcie przenośnych mechanizmów współbieżności w bibliotece C++ było, jak do tej pory, najlepszym krokiem w rozwoju tego języka.

W kolejnej części otrzymaliśmy dogłębny opis formatu BMP. Oprócz tego Gynvael opisał również PNG. Dla mnie była to zdecydowanie najmniej interesująca część książki, co nie znaczy, że mnie nudziła.

Piąta część to opis komunikacji międzyprocesowej i podstawy komunikacji sieciowej. Jako że z opisanymi w rozdziale 15 protokołami TCP i UDP miałem już wielokrotnie do czynienia, bardziej zainteresowała mnie komunikacja międzyprocesowa oparta o potoki i gniazda, w którą od strony programistycznej do tej pory się nie zagłębiałem.

Lektura tej ksiażki pobudziła we mnie zainteresowanie pewnymi tematami. Najciekawsze było dla mnie tworzenie maszyny wirtualnej emulującej komputer (rozdział 3.). Uważam, że takie zadanie jest zdecydowanie lepszym sposobem na naukę architektury komputerów niż pisanie programów w asemblerze na zbyt rozbudowaną (jak na początek) x86.

Zdecydowanym plusem jest to, że autor korzysta z różnych technologii. Opisuje zarówno Linuksa jak i Windowsa. Możemy spotkać przykładowe programy pisane zarówno w Pythonie jak i w C, C++ czy nawet Javie.

Każdy kto interesował się osobą autora wie, że jest on bardzo dobrym zawodnikiem biorącym udział w rywalizacjach typu Capture The Flag (w skrócie CTF). Konkursy te polegają na odkrywaniu falg (czyli krótkich fraz) ukrytych w oprogramowaniu czy niezrozumiałych seriach zer i jedynek. Gynvael zafundował swoim czytelnikom podobną zabawę. Oprócz wielu ciekawych zadań, w ksiażce ukryte zostały flagi, które można odkrywać i wpisywać na specjalnie przeznaczonej do tego celu stronie internetowej.

Książkę można zamówić na stronie wydawnictwa PWN: http://ksiegarnia.pwn.pl/Zrozumiec-programowanie,114589762,p.html

Strona internetowa Gynvaela: http://gynvael.coldwind.pl/